diff --git a/Dockerfile.dev b/Dockerfile.dev index d1da77c3..20e0db9d 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -23,6 +23,7 @@ RUN mkdir -p /opt/echovault/bin RUN mkdir -p /etc/ssl/certs/echovault/echovault RUN mkdir -p /etc/ssl/certs/echovault/client +COPY --from=build /build/volumes/modules /opt/echovault/bin/modules COPY --from=build /build/bin/linux/x86_64/server /opt/echovault/bin COPY ./openssl/server /etc/ssl/certs/echovault/server diff --git a/coverage/coverage.out b/coverage/coverage.out index 685456af..5b37248d 100644 --- a/coverage/coverage.out +++ b/coverage/coverage.out @@ -1,969 +1,123 @@ mode: set -github.com/echovault/echovault/cmd/main.go:28.13,30.16 2 0 -github.com/echovault/echovault/cmd/main.go:30.16,32.3 1 0 -github.com/echovault/echovault/cmd/main.go:34.2,44.16 5 0 -github.com/echovault/echovault/cmd/main.go:44.16,46.3 1 0 -github.com/echovault/echovault/cmd/main.go:48.2,52.19 3 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 0 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 0 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 0 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 0 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 0 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 0 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 0 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 0 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 0 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 0 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 0 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 0 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 0 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 0 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 0 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 0 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 0 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 0 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 0 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 0 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 0 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 0 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 0 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 0 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 0 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 0 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 0 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 0 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 0 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 0 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 0 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 0 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 0 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 0 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 0 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:46.60,47.34 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:47.34,49.3 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:52.61,53.34 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:53.34,55.3 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:58.67,59.34 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:59.34,61.3 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:64.63,65.34 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:65.34,67.3 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:70.77,71.34 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:71.34,73.3 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:76.80,83.39 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:83.40,83.41 0 0 -github.com/echovault/echovault/internal/aof/log/store.go:86.2,86.33 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:86.33,88.3 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:91.2,91.46 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:91.46,94.17 2 1 -github.com/echovault/echovault/internal/aof/log/store.go:94.17,96.4 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:97.3,98.17 2 1 -github.com/echovault/echovault/internal/aof/log/store.go:98.17,100.4 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:101.3,101.15 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:106.2,106.51 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:106.51,107.13 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:107.13,109.17 2 1 -github.com/echovault/echovault/internal/aof/log/store.go:109.17,111.5 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:112.4,112.8 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:112.8,114.40 2 1 -github.com/echovault/echovault/internal/aof/log/store.go:114.40,117.11 3 1 -github.com/echovault/echovault/internal/aof/log/store.go:119.5,120.15 2 0 -github.com/echovault/echovault/internal/aof/log/store.go:125.2,125.19 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:128.55,130.21 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:130.21,132.3 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:134.2,137.51 3 1 -github.com/echovault/echovault/internal/aof/log/store.go:137.51,139.3 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:141.2,141.49 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:141.49,142.38 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:142.38,144.4 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:147.2,147.12 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:150.40,151.21 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:151.21,153.3 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:154.2,154.12 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:157.43,162.47 3 1 -github.com/echovault/echovault/internal/aof/log/store.go:162.47,164.3 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:166.2,167.6 2 1 -github.com/echovault/echovault/internal/aof/log/store.go:167.6,169.34 2 1 -github.com/echovault/echovault/internal/aof/log/store.go:169.34,171.4 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:172.3,172.13 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:172.13,174.9 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:176.3,177.17 2 1 -github.com/echovault/echovault/internal/aof/log/store.go:177.17,179.4 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:180.3,180.31 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:183.2,183.12 1 1 -github.com/echovault/echovault/internal/aof/log/store.go:186.44,189.45 3 0 -github.com/echovault/echovault/internal/aof/log/store.go:189.45,191.3 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:193.2,193.47 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:193.47,195.3 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:196.2,196.12 1 0 -github.com/echovault/echovault/internal/aof/log/store.go:199.41,203.2 3 1 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 0 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 0 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 0 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 0 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 0 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 0 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 0 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 0 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 0 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 0 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 0 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 0 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 0 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 0 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 0 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 0 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 0 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 0 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 0 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 0 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 0 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 0 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 0 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 0 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 0 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 0 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 0 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 0 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 0 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/aof/engine.go:50.56,51.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:51.30,53.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:56.57,57.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:57.30,59.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:62.59,63.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:63.30,65.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:68.58,69.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:69.30,71.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:74.59,75.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:75.30,77.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:80.82,81.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:81.30,83.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:86.89,87.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:87.30,89.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:92.73,93.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:93.30,95.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:98.82,99.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:99.30,101.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:104.78,105.30 1 1 -github.com/echovault/echovault/internal/aof/engine.go:105.30,107.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:110.69,118.29 1 1 -github.com/echovault/echovault/internal/aof/engine.go:118.30,118.31 0 0 -github.com/echovault/echovault/internal/aof/engine.go:119.30,119.31 0 0 -github.com/echovault/echovault/internal/aof/engine.go:120.57,120.71 1 0 -github.com/echovault/echovault/internal/aof/engine.go:121.63,121.64 0 0 -github.com/echovault/echovault/internal/aof/engine.go:122.44,122.45 0 0 -github.com/echovault/echovault/internal/aof/engine.go:127.2,127.33 1 1 -github.com/echovault/echovault/internal/aof/engine.go:127.33,129.3 1 1 -github.com/echovault/echovault/internal/aof/engine.go:132.2,139.16 2 1 -github.com/echovault/echovault/internal/aof/engine.go:139.16,141.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:142.2,152.16 3 1 -github.com/echovault/echovault/internal/aof/engine.go:152.16,154.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:155.2,159.12 2 1 -github.com/echovault/echovault/internal/aof/engine.go:159.12,160.7 1 1 -github.com/echovault/echovault/internal/aof/engine.go:160.7,162.54 2 1 -github.com/echovault/echovault/internal/aof/engine.go:162.54,164.5 1 0 -github.com/echovault/echovault/internal/aof/engine.go:168.2,168.20 1 1 -github.com/echovault/echovault/internal/aof/engine.go:171.52,173.2 1 1 -github.com/echovault/echovault/internal/aof/engine.go:175.42,183.62 5 1 -github.com/echovault/echovault/internal/aof/engine.go:183.62,185.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:188.2,188.54 1 1 -github.com/echovault/echovault/internal/aof/engine.go:188.54,190.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:192.2,192.12 1 1 -github.com/echovault/echovault/internal/aof/engine.go:195.39,196.55 1 1 -github.com/echovault/echovault/internal/aof/engine.go:196.55,198.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:199.2,199.53 1 1 -github.com/echovault/echovault/internal/aof/engine.go:199.53,201.3 1 0 -github.com/echovault/echovault/internal/aof/engine.go:202.2,202.12 1 1 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 0 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 0 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 0 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 0 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 0 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 0 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 0 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 0 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 0 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 0 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 0 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 0 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 0 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 0 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 0 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 0 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 0 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 0 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 0 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 0 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 0 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 0 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 0 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 0 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 0 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 0 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 0 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 0 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 0 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 0 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 0 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 0 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 0 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:45.62,46.36 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:46.36,48.3 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:51.71,52.36 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:52.36,54.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:57.88,58.36 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:58.36,60.3 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:63.95,64.36 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:64.36,66.3 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:69.65,70.36 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:70.36,72.3 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:75.86,81.52 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:81.52,84.4 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:85.60,85.61 0 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:88.2,88.33 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:88.33,90.3 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:93.2,93.46 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:93.46,95.17 2 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:95.17,97.4 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:98.3,99.17 2 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:99.17,101.4 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:102.3,102.15 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:105.2,105.19 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:108.52,115.16 5 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:115.16,117.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:120.2,120.44 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:120.44,122.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:124.2,124.46 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:124.46,126.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:128.2,128.44 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:128.44,130.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:133.2,133.39 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:133.39,135.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:137.2,137.12 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:140.45,141.21 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:141.21,143.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:146.2,146.47 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:146.47,148.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:150.2,151.16 2 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:151.16,153.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:155.2,155.17 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:155.17,157.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:159.2,161.49 2 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:161.49,163.3 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:165.2,165.56 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:165.56,167.3 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:44.54,45.28 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:45.28,47.3 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:50.55,51.28 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:51.28,53.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:56.88,57.28 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:57.28,59.3 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:62.101,63.28 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:63.28,65.3 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:68.57,69.28 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:69.28,71.3 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:74.70,80.60 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:80.60,83.4 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:84.74,84.75 0 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:87.2,87.33 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:87.33,89.3 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:92.2,92.46 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:92.46,94.17 2 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:94.17,96.4 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:97.3,98.17 2 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:98.17,100.4 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:101.3,101.15 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:104.2,104.19 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:107.44,114.16 5 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:114.16,116.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:119.2,119.44 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:119.44,121.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:123.2,123.46 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:123.46,125.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:127.2,127.44 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:127.44,129.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:132.2,132.39 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:132.39,134.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:136.2,136.12 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:139.37,140.21 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:140.21,142.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:145.2,145.47 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:145.47,147.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:149.2,150.16 2 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:150.16,152.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:154.2,154.17 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:154.17,156.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:158.2,159.49 2 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:159.49,161.3 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:163.2,163.83 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:163.83,164.34 1 1 +github.com/echovault/echovault/internal/aof/preamble/store.go:164.34,166.4 1 1 github.com/echovault/echovault/internal/aof/preamble/store.go:169.2,169.12 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:172.43,176.2 3 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:179.110,181.26 2 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:181.26,182.36 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:182.36,183.12 1 0 -github.com/echovault/echovault/internal/aof/preamble/store.go:185.3,185.43 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:185.43,187.4 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:189.2,189.35 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:189.35,191.3 1 1 -github.com/echovault/echovault/internal/aof/preamble/store.go:192.2,192.14 1 1 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 0 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 0 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 0 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 0 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 0 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 0 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 0 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 0 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 0 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 0 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 0 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 0 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 0 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 0 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 0 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 0 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 0 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 0 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 0 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 0 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 0 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 0 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 0 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 0 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 0 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 0 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 0 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 0 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 0 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 0 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 0 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 0 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 0 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 0 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 0 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 +github.com/echovault/echovault/internal/aof/preamble/store.go:172.35,176.2 3 0 +github.com/echovault/echovault/internal/aof/log/store.go:55.54,56.28 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:56.28,58.3 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:61.55,62.28 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:62.28,64.3 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:67.55,68.28 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:68.28,70.3 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:73.57,74.28 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:74.28,76.3 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:79.85,80.28 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:80.28,82.3 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:85.68,93.55 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:93.56,93.57 0 0 +github.com/echovault/echovault/internal/aof/log/store.go:96.2,96.33 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:96.33,98.3 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:101.2,101.46 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:101.46,104.17 2 1 +github.com/echovault/echovault/internal/aof/log/store.go:104.17,106.4 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:107.3,108.17 2 1 +github.com/echovault/echovault/internal/aof/log/store.go:108.17,110.4 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:111.3,111.15 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:116.2,116.51 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:116.51,117.13 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:117.13,119.17 2 1 +github.com/echovault/echovault/internal/aof/log/store.go:119.17,121.5 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:122.4,122.8 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:122.8,124.40 2 1 +github.com/echovault/echovault/internal/aof/log/store.go:124.40,127.11 3 1 +github.com/echovault/echovault/internal/aof/log/store.go:129.5,130.15 2 0 +github.com/echovault/echovault/internal/aof/log/store.go:135.2,135.19 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:138.63,140.21 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:140.21,142.3 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:144.2,150.39 3 1 +github.com/echovault/echovault/internal/aof/log/store.go:150.39,152.17 2 1 +github.com/echovault/echovault/internal/aof/log/store.go:152.17,154.4 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:155.3,155.35 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:158.2,158.51 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:158.51,160.3 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:162.2,162.49 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:162.49,163.38 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:163.38,165.4 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:168.2,168.12 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:171.34,172.21 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:172.21,174.3 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:175.2,175.12 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:178.37,183.47 3 1 +github.com/echovault/echovault/internal/aof/log/store.go:183.47,185.3 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:187.2,190.6 3 1 +github.com/echovault/echovault/internal/aof/log/store.go:190.6,192.34 2 1 +github.com/echovault/echovault/internal/aof/log/store.go:192.34,194.4 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:195.3,195.13 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:195.13,197.9 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:200.3,201.17 2 1 +github.com/echovault/echovault/internal/aof/log/store.go:201.17,203.4 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:206.3,207.17 2 1 +github.com/echovault/echovault/internal/aof/log/store.go:207.17,209.4 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:211.3,211.42 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:211.42,213.18 2 1 +github.com/echovault/echovault/internal/aof/log/store.go:213.18,215.5 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:217.4,217.12 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:220.3,220.41 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:223.2,223.12 1 1 +github.com/echovault/echovault/internal/aof/log/store.go:226.38,230.45 3 0 +github.com/echovault/echovault/internal/aof/log/store.go:230.45,232.3 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:235.2,235.47 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:235.47,237.3 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:240.2,242.16 2 0 +github.com/echovault/echovault/internal/aof/log/store.go:242.16,244.3 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:246.2,246.39 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:246.39,248.3 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:250.2,250.12 1 0 +github.com/echovault/echovault/internal/aof/log/store.go:253.35,257.2 3 1 github.com/echovault/echovault/internal/config/config.go:64.34,70.24 3 0 github.com/echovault/echovault/internal/config/config.go:70.24,72.35 2 0 github.com/echovault/echovault/internal/config/config.go:72.35,74.5 1 0 @@ -1009,7 +163,497 @@ github.com/echovault/echovault/internal/config/config.go:254.2,256.45 2 0 github.com/echovault/echovault/internal/config/config.go:256.45,258.3 1 0 github.com/echovault/echovault/internal/config/config.go:260.2,260.18 1 0 github.com/echovault/echovault/internal/config/default.go:9.29,42.2 3 0 -github.com/echovault/echovault/internal/eviction/lfu.go:35.29,42.2 3 1 +github.com/echovault/echovault/internal/aof/engine.go:48.56,49.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:49.30,51.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:54.57,55.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:55.30,57.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:60.59,61.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:61.30,63.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:66.58,67.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:67.30,69.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:72.59,73.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:73.30,75.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:78.90,79.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:79.30,81.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:84.103,85.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:85.30,87.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:90.87,91.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:91.30,93.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:96.74,97.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:97.30,99.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:102.72,103.30 1 1 +github.com/echovault/echovault/internal/aof/engine.go:103.30,105.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:108.69,115.29 1 1 +github.com/echovault/echovault/internal/aof/engine.go:115.30,115.31 0 0 +github.com/echovault/echovault/internal/aof/engine.go:116.30,116.31 0 0 +github.com/echovault/echovault/internal/aof/engine.go:117.65,117.79 1 0 +github.com/echovault/echovault/internal/aof/engine.go:118.77,118.78 0 0 +github.com/echovault/echovault/internal/aof/engine.go:119.58,119.59 0 0 +github.com/echovault/echovault/internal/aof/engine.go:124.2,124.33 1 1 +github.com/echovault/echovault/internal/aof/engine.go:124.33,126.3 1 1 +github.com/echovault/echovault/internal/aof/engine.go:129.2,136.16 2 1 +github.com/echovault/echovault/internal/aof/engine.go:136.16,138.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:139.2,149.16 3 1 +github.com/echovault/echovault/internal/aof/engine.go:149.16,151.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:152.2,154.20 2 1 +github.com/echovault/echovault/internal/aof/engine.go:157.64,158.68 1 1 +github.com/echovault/echovault/internal/aof/engine.go:158.68,160.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:163.42,171.62 5 1 +github.com/echovault/echovault/internal/aof/engine.go:171.62,173.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:176.2,176.54 1 1 +github.com/echovault/echovault/internal/aof/engine.go:176.54,178.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:180.2,180.12 1 1 +github.com/echovault/echovault/internal/aof/engine.go:183.39,184.55 1 1 +github.com/echovault/echovault/internal/aof/engine.go:184.55,186.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:187.2,187.53 1 1 +github.com/echovault/echovault/internal/aof/engine.go:187.53,189.3 1 0 +github.com/echovault/echovault/internal/aof/engine.go:190.2,190.12 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:53.55,56.20 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:56.20,58.70 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:58.70,61.4 2 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:63.3,64.17 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:64.17,67.4 2 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:69.3,69.16 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:69.16,70.36 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:70.36,72.5 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:75.3,77.38 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:77.38,78.60 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:78.60,81.5 2 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:84.3,84.71 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:84.71,85.60 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:85.60,88.5 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:92.2,92.14 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:95.40,100.24 3 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:100.24,108.3 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:111.2,115.29 3 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:115.29,116.33 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:116.33,118.9 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:121.2,121.20 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:121.20,123.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:126.2,126.29 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:126.29,128.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:130.2,140.13 3 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:143.52,148.70 3 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:148.70,150.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:151.2,155.3 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:158.45,164.33 3 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:164.33,165.30 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:165.30,166.47 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:166.47,168.5 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:168.10,171.5 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:175.2,176.45 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:176.45,178.3 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:180.2,187.12 4 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:190.73,195.37 4 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:195.37,196.28 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:196.28,198.12 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:201.3,201.31 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:201.31,202.30 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:202.30,204.5 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:207.3,207.18 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:207.18,208.12 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:211.3,211.52 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:211.52,212.49 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:212.49,214.5 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:217.3,217.63 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:217.63,219.4 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:221.2,221.12 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:224.95,228.19 3 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:228.19,237.60 4 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:237.60,239.4 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:240.3,240.24 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:243.2,243.19 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:243.19,253.31 5 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:253.31,254.28 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:254.28,257.10 3 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:260.3,260.17 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:260.17,262.4 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:266.2,266.19 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:266.19,268.3 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:271.2,271.21 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:271.21,277.3 2 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:279.2,279.46 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:279.46,280.38 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:280.38,283.18 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:283.18,290.5 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:294.2,294.50 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:297.131,306.16 6 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:306.16,308.3 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:310.2,314.59 4 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:314.59,318.17 4 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:318.17,320.4 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:324.2,324.36 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:324.36,326.3 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:329.2,329.79 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:329.79,331.3 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:334.2,334.37 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:334.37,336.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:339.2,342.29 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:342.29,344.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:347.2,347.57 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:347.57,349.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:351.2,355.63 3 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:355.63,356.39 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:356.39,358.4 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:359.3,359.63 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:359.63,360.36 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:360.36,362.5 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:364.3,365.26 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:365.26,367.4 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:371.2,371.64 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:371.64,372.101 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:372.101,373.63 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:373.63,376.5 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:377.4,377.16 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:379.5,381.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:384.2,384.94 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:384.94,386.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:386.5,388.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:391.2,391.93 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:391.93,393.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:393.5,395.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:398.2,398.59 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:398.59,400.36 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:400.36,402.106 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:402.106,404.5 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:404.7,406.5 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:408.4,408.105 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:408.105,410.5 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:410.7,412.5 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:414.3,414.13 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:417.2,417.45 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:417.45,419.29 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:419.29,421.4 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:424.3,424.80 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:424.80,425.95 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:425.95,426.49 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:426.49,428.6 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:429.5,429.70 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:429.70,431.6 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:432.5,432.17 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:434.6,435.27 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:435.27,437.5 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:441.3,441.82 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:441.82,442.97 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:442.97,443.50 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:443.50,445.6 1 0 +github.com/echovault/echovault/internal/modules/acl/acl.go:446.5,446.70 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:446.70,448.6 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:449.5,449.17 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:451.6,453.4 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:456.2,456.12 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:459.32,463.33 3 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:463.33,468.31 5 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:468.31,469.37 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:469.37,471.5 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:473.3,473.25 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:476.2,476.29 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:476.29,477.33 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:477.33,479.4 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:483.29,485.2 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:487.31,489.2 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:491.30,493.2 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:495.32,497.2 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:499.68,501.31 2 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:501.31,502.13 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:502.13,504.4 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:507.2,507.58 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:507.58,509.3 1 1 +github.com/echovault/echovault/internal/modules/acl/acl.go:510.2,510.19 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:31.67,32.29 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:32.29,34.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:36.2,40.35 3 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:40.35,41.36 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:41.36,42.48 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:42.48,44.5 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:45.4,45.12 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:47.3,47.50 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:47.50,48.51 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:48.51,51.5 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:55.2,55.30 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:55.30,58.34 3 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:58.34,61.4 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:62.3,63.28 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:63.28,65.24 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:65.24,67.5 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:69.3,69.26 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:72.2,72.30 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:72.30,74.46 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:74.46,75.54 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:75.54,77.38 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:77.38,79.30 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:79.30,81.7 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:83.5,83.28 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:88.2,88.85 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:91.71,92.30 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:92.30,94.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:96.2,97.9 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:97.9,99.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:100.2,105.30 5 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:105.30,106.38 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:106.38,109.9 3 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:113.2,113.16 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:113.16,115.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:118.2,122.18 3 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:122.18,124.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:124.8,126.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:127.2,127.21 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:127.21,129.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:130.2,130.17 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:130.17,132.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:134.2,135.29 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:135.29,137.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:140.2,141.51 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:141.51,142.22 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:142.22,144.12 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:146.3,146.49 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:148.2,148.51 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:148.51,149.22 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:149.22,151.12 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:153.3,153.49 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:157.2,158.48 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:158.48,159.21 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:159.21,161.12 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:163.3,163.47 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:165.2,165.48 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:165.48,166.21 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:166.21,168.12 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:170.3,170.47 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:174.2,175.79 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:175.79,176.37 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:176.37,178.4 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:180.2,181.30 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:181.30,182.10 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:183.100,185.53 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:186.53,188.52 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:189.52,191.52 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:196.2,198.54 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:198.54,200.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:201.2,201.54 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:201.54,203.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:205.2,207.25 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:210.69,212.9 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:212.9,214.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:216.2,217.33 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:217.33,219.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:220.2,221.25 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:224.71,226.9 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:226.9,228.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:229.2,229.56 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:229.56,231.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:232.2,232.42 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:235.71,236.29 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:236.29,238.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:239.2,240.9 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:240.9,242.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:243.2,243.75 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:243.75,245.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:246.2,246.42 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:249.70,251.9 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:251.9,253.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:254.2,258.74 4 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:261.68,262.29 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:262.29,264.3 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:265.2,266.9 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:266.9,268.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:269.2,274.33 5 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:274.33,277.19 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:277.19,279.4 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:279.9,281.4 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:283.3,283.22 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:283.22,285.4 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:287.3,287.18 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:287.18,289.4 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:291.3,291.43 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:291.43,292.61 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:292.61,294.5 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:295.4,295.58 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:295.58,297.5 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:300.3,300.52 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:300.52,301.23 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:301.23,303.13 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:305.4,305.39 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:308.3,308.52 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:308.52,309.23 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:309.23,311.13 2 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:313.4,313.39 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:316.3,316.49 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:316.49,317.22 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:317.22,319.13 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:321.4,321.37 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:324.3,324.49 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:324.49,325.22 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:325.22,327.13 2 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:329.4,329.37 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:332.3,332.45 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:332.45,333.52 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:333.52,335.13 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:337.4,337.41 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:340.3,340.46 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:340.46,341.52 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:341.52,343.5 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:346.3,346.55 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:346.55,348.4 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:350.3,350.55 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:350.55,352.4 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:353.3,353.54 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:356.2,357.25 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:360.68,361.30 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:361.30,363.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:365.2,366.9 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:366.9,368.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:369.2,373.16 4 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:373.16,375.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:377.2,377.15 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:377.15,378.35 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:378.35,380.4 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:383.2,387.37 3 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:387.37,388.59 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:388.59,390.4 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:393.2,393.70 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:393.70,394.59 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:394.59,396.4 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:400.2,400.29 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:400.29,404.31 3 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:404.31,405.35 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:405.35,408.54 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:408.54,410.6 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:410.11,413.6 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:414.5,414.10 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:418.3,418.17 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:418.17,420.4 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:423.2,423.42 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:426.68,427.29 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:427.29,429.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:431.2,432.9 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:432.9,434.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:435.2,439.16 4 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:439.16,441.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:443.2,443.15 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:443.15,444.35 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:444.35,446.4 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:449.2,451.37 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:451.37,454.17 2 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:454.17,456.4 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:457.3,457.40 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:457.40,459.4 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:462.2,462.70 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:462.70,465.17 2 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:465.17,467.4 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:468.3,468.40 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:468.40,470.4 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:473.2,473.32 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:473.32,475.3 1 0 +github.com/echovault/echovault/internal/modules/acl/commands.go:477.2,477.42 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:480.36,488.84 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:488.84,494.5 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:503.86,509.7 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:518.86,524.7 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:533.86,539.7 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:548.86,554.7 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:564.86,570.7 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:579.86,585.7 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:594.86,600.7 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:612.86,618.7 1 1 +github.com/echovault/echovault/internal/modules/acl/commands.go:627.86,633.7 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:53.31,55.39 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:55.39,57.3 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:58.2,59.51 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:59.51,61.3 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:63.2,64.37 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:64.37,66.3 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:67.2,68.49 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:68.49,70.3 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:72.2,73.53 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:73.53,75.3 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:76.2,77.54 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:77.54,79.3 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:81.2,82.43 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:82.43,84.3 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:85.2,86.55 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:86.55,88.3 1 0 +github.com/echovault/echovault/internal/modules/acl/user.go:91.2,91.64 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:91.64,97.3 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:100.79,102.32 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:102.32,103.24 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:103.24,105.12 2 0 +github.com/echovault/echovault/internal/modules/acl/user.go:107.3,107.25 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:109.2,109.33 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:109.33,110.41 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:110.41,113.4 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:114.3,114.17 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:114.17,116.4 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:118.2,118.8 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:121.50,122.26 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:122.26,124.35 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:124.35,126.4 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:127.3,127.36 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:127.36,129.4 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:131.3,131.37 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:131.37,137.12 3 1 +github.com/echovault/echovault/internal/modules/acl/user.go:139.3,139.20 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:139.20,140.84 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:140.84,142.5 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:143.4,143.12 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:145.3,145.20 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:145.20,146.84 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:146.84,148.5 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:149.4,149.12 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:152.3,152.43 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:152.43,155.12 3 1 +github.com/echovault/echovault/internal/modules/acl/user.go:157.3,157.46 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:157.46,159.12 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:161.3,161.36 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:161.36,162.21 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:162.21,164.13 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:166.4,166.21 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:166.21,168.13 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:172.3,172.40 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:172.40,176.12 4 0 +github.com/echovault/echovault/internal/modules/acl/user.go:178.3,178.93 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:178.93,183.12 5 1 +github.com/echovault/echovault/internal/modules/acl/user.go:185.3,185.57 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:185.57,188.12 3 1 +github.com/echovault/echovault/internal/modules/acl/user.go:190.3,190.57 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:190.57,193.12 3 1 +github.com/echovault/echovault/internal/modules/acl/user.go:196.3,196.44 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:196.44,198.12 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:200.3,200.36 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:200.36,201.21 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:201.21,203.13 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:205.4,205.21 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:205.21,207.13 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:211.3,211.44 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:211.44,214.12 3 1 +github.com/echovault/echovault/internal/modules/acl/user.go:216.3,216.66 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:216.66,217.21 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:217.21,219.13 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:221.4,221.21 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:221.21,223.13 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:229.2,229.26 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:229.26,230.39 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:230.39,233.4 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:236.2,236.26 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:236.26,238.42 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:238.42,241.4 2 0 +github.com/echovault/echovault/internal/modules/acl/user.go:243.3,243.43 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:243.43,248.4 4 1 +github.com/echovault/echovault/internal/modules/acl/user.go:250.3,250.60 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:250.60,254.4 3 1 +github.com/echovault/echovault/internal/modules/acl/user.go:256.3,256.46 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:256.46,259.4 2 1 +github.com/echovault/echovault/internal/modules/acl/user.go:262.2,262.12 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:265.36,279.41 12 0 +github.com/echovault/echovault/internal/modules/acl/user.go:279.41,280.65 1 0 +github.com/echovault/echovault/internal/modules/acl/user.go:280.65,282.4 1 0 +github.com/echovault/echovault/internal/modules/acl/user.go:282.6,284.4 1 0 +github.com/echovault/echovault/internal/modules/acl/user.go:287.2,287.18 1 0 +github.com/echovault/echovault/internal/modules/acl/user.go:290.38,303.2 12 1 +github.com/echovault/echovault/internal/modules/acl/user.go:305.40,320.2 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:322.46,323.24 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:323.24,325.3 1 1 +github.com/echovault/echovault/internal/modules/acl/user.go:326.2,326.26 1 1 +github.com/echovault/echovault/internal/eviction/lfu.go:35.30,42.2 3 1 github.com/echovault/echovault/internal/eviction/lfu.go:44.34,46.2 1 1 github.com/echovault/echovault/internal/eviction/lfu.go:48.44,50.54 1 1 github.com/echovault/echovault/internal/eviction/lfu.go:50.54,52.3 1 1 @@ -1027,7 +671,7 @@ github.com/echovault/echovault/internal/eviction/lfu.go:101.73,103.3 1 0 github.com/echovault/echovault/internal/eviction/lfu.go:104.2,104.19 1 0 github.com/echovault/echovault/internal/eviction/lfu.go:104.19,106.3 1 0 github.com/echovault/echovault/internal/eviction/lfu.go:109.50,112.2 2 1 -github.com/echovault/echovault/internal/eviction/lru.go:34.29,41.2 3 1 +github.com/echovault/echovault/internal/eviction/lru.go:34.30,41.2 3 1 github.com/echovault/echovault/internal/eviction/lru.go:43.34,45.2 1 1 github.com/echovault/echovault/internal/eviction/lru.go:47.44,49.2 1 1 github.com/echovault/echovault/internal/eviction/lru.go:51.39,55.2 3 1 @@ -1043,4835 +687,75 @@ github.com/echovault/echovault/internal/eviction/lru.go:92.73,94.3 1 0 github.com/echovault/echovault/internal/eviction/lru.go:95.2,95.19 1 0 github.com/echovault/echovault/internal/eviction/lru.go:95.19,97.3 1 0 github.com/echovault/echovault/internal/eviction/lru.go:100.50,103.2 2 1 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 1 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 1 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 1 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 1 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 1 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 1 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 1 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 1 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 0 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 1 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 1 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 1 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 1 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 1 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 0 -github.com/echovault/echovault/internal/modules/connection/commands.go:25.68,26.29 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:27.10,28.54 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:29.9,30.34 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:31.9,32.94 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:36.68,37.30 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:37.30,39.3 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:40.2,40.93 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:43.36,53.84 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:53.84,59.5 1 1 -github.com/echovault/echovault/internal/modules/connection/commands.go:69.84,75.5 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 1 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 1 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 1 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 1 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 1 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 1 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 1 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 1 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 1 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 1 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 1 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 1 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 1 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 1 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 1 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 1 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 1 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 1 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:27.68,29.16 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:29.16,31.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:33.2,36.16 3 1 -github.com/echovault/echovault/internal/modules/list/commands.go:36.16,39.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:41.2,41.90 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:41.90,43.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:45.2,45.57 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:48.70,50.16 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:50.16,52.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:54.2,58.9 4 1 -github.com/echovault/echovault/internal/modules/list/commands.go:58.9,60.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:62.2,62.16 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:62.16,64.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:66.2,67.9 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:67.9,69.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:71.2,71.40 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:71.40,73.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:75.2,75.57 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:78.70,80.16 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:80.16,82.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:84.2,89.24 5 1 -github.com/echovault/echovault/internal/modules/list/commands.go:89.24,91.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:93.2,93.16 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:93.16,95.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:97.2,98.9 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:98.9,100.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:103.2,103.40 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:103.40,105.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:108.2,108.51 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:108.51,110.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:112.2,115.15 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:115.15,117.43 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:117.43,120.4 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:121.3,121.20 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:125.2,125.18 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:125.18,127.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:132.2,136.17 4 1 -github.com/echovault/echovault/internal/modules/list/commands.go:136.17,138.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:140.2,140.13 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:140.13,143.18 3 1 -github.com/echovault/echovault/internal/modules/list/commands.go:143.18,145.4 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:145.9,147.4 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:150.2,150.19 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:153.68,155.16 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:155.16,157.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:159.2,163.9 4 1 -github.com/echovault/echovault/internal/modules/list/commands.go:163.9,165.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:167.2,167.16 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:167.16,169.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:171.2,172.9 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:172.9,174.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:176.2,176.40 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:176.40,178.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:180.2,181.91 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:181.91,183.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:185.2,185.42 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:188.69,190.16 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:190.16,192.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:194.2,199.24 5 1 -github.com/echovault/echovault/internal/modules/list/commands.go:199.24,201.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:203.2,203.30 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:203.30,205.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:207.2,207.16 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:207.16,209.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:211.2,212.9 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:212.9,214.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:216.2,216.40 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:216.40,218.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:220.2,220.34 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:220.34,221.100 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:221.100,223.4 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:224.3,224.43 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:227.2,227.102 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:227.102,229.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:230.2,230.42 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:233.68,235.16 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:235.16,237.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:239.2,244.9 5 1 -github.com/echovault/echovault/internal/modules/list/commands.go:244.9,246.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:248.2,250.16 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:250.16,252.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:254.2,255.9 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:255.9,257.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:259.2,259.9 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:260.10,260.10 0 0 -github.com/echovault/echovault/internal/modules/list/commands.go:262.17,264.34 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:264.34,265.26 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:265.26,266.10 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:268.4,268.43 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:268.43,271.5 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:273.17,275.39 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:275.39,276.26 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:276.26,277.10 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:279.4,279.43 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:279.43,282.5 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:286.2,286.61 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:286.61,288.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:290.2,290.91 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:290.91,292.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:294.2,294.42 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:297.69,299.16 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:303.2,308.116 5 1 -github.com/echovault/echovault/internal/modules/list/commands.go:308.116,310.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:312.2,312.51 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:312.51,314.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:316.2,320.33 4 1 -github.com/echovault/echovault/internal/modules/list/commands.go:320.33,322.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:324.2,324.19 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:325.14,328.38 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:328.38,329.26 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:329.26,331.6 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:333.5,333.50 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:336.15,339.38 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:339.38,340.26 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:340.26,342.6 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:344.5,344.66 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:349.2,349.16 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:349.16,351.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:353.2,353.42 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:356.69,358.16 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:358.16,360.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:362.2,364.42 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:364.42,366.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:368.2,371.16 3 1 -github.com/echovault/echovault/internal/modules/list/commands.go:371.16,372.45 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:373.17,374.64 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:375.11,376.104 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:376.104,378.5 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:382.2,384.9 3 1 -github.com/echovault/echovault/internal/modules/list/commands.go:384.9,386.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:388.2,388.109 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:388.109,390.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:392.2,392.66 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:395.69,397.16 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:397.16,399.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:401.2,406.42 4 1 -github.com/echovault/echovault/internal/modules/list/commands.go:406.42,408.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:410.2,410.16 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:410.16,411.45 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:412.17,413.64 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:414.11,415.104 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:415.104,417.5 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:421.2,423.9 3 1 -github.com/echovault/echovault/internal/modules/list/commands.go:423.9,425.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:427.2,427.109 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:427.109,429.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:430.2,430.66 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:433.67,435.16 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:435.16,437.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:439.2,442.16 3 1 -github.com/echovault/echovault/internal/modules/list/commands.go:442.16,444.3 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:446.2,447.9 2 1 -github.com/echovault/echovault/internal/modules/list/commands.go:447.9,449.3 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:451.2,451.44 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:452.10,453.96 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:453.96,455.4 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:456.3,456.54 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:457.14,458.106 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:458.106,460.4 1 0 -github.com/echovault/echovault/internal/modules/list/commands.go:461.3,461.64 1 1 -github.com/echovault/echovault/internal/modules/list/commands.go:465.36,588.2 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:23.75,24.18 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:24.18,26.3 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:27.2,31.8 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:34.73,35.19 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:35.19,37.3 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:38.2,42.8 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:45.74,46.19 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:46.19,48.3 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:49.2,53.8 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:56.76,57.19 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:57.19,59.3 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:60.2,64.8 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:67.76,68.19 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:68.19,70.3 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:71.2,75.8 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:78.74,79.19 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:79.19,81.3 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:82.2,86.8 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:89.75,90.19 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:90.19,92.3 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:93.2,97.8 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:100.74,101.19 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:101.19,103.3 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:104.2,108.8 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:111.75,112.18 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:112.18,114.3 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:115.2,119.8 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:122.75,123.19 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:123.19,125.3 1 1 -github.com/echovault/echovault/internal/modules/list/key_funcs.go:126.2,130.8 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 1 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 1 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 1 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 1 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 1 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 1 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 1 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 1 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 1 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 1 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 1 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 1 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 1 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 1 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 1 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 1 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 1 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 1 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:28.68,30.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:30.16,32.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:34.2,38.36 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:38.36,40.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:42.2,42.49 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:42.49,44.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:46.2,46.16 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:46.16,47.17 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:47.17,49.4 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:50.3,50.95 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:50.95,52.4 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:53.3,53.59 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:56.2,57.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:57.9,59.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:61.2,62.36 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:62.36,63.53 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:63.53,64.26 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:64.26,67.5 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:68.4,68.12 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:70.3,71.13 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:73.2,73.91 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:73.91,75.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:77.2,77.51 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:80.68,82.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:82.16,84.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:86.2,90.16 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:90.16,92.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:94.2,95.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:95.9,97.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:99.2,102.31 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:102.31,104.19 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:104.19,106.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:108.3,108.34 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:108.34,110.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:112.3,112.31 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:112.31,114.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:116.3,116.35 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:116.35,119.12 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:121.3,121.32 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:124.2,124.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:127.71,129.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:129.16,131.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:133.2,137.16 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:137.16,139.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:141.2,142.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:142.9,144.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:146.2,149.31 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:149.31,151.19 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:151.19,153.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:155.3,155.34 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:155.34,157.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:159.3,159.35 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:159.35,162.12 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:164.3,164.31 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:164.31,166.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:168.3,168.18 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:171.2,171.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:174.69,176.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:176.16,178.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:180.2,183.16 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:183.16,185.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:187.2,188.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:188.9,190.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:192.2,193.27 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:193.27,194.32 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:194.32,196.12 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:198.3,198.33 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:198.33,201.12 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:203.3,203.29 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:203.29,205.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:208.2,208.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:211.74,213.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:213.16,215.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:217.2,221.30 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:221.30,223.17 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:223.17,225.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:226.3,226.13 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:226.13,228.4 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:229.3,229.12 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:232.2,233.30 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:233.30,234.57 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:234.57,236.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:236.9,238.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:241.2,241.16 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:241.16,243.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:245.2,246.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:246.9,248.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:251.2,251.24 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:251.24,253.17 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:253.17,255.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:256.3,256.34 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:256.34,258.18 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:258.18,259.36 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:259.36,261.14 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:263.5,263.37 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:263.37,266.14 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:268.5,268.33 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:268.33,270.14 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:274.3,274.26 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:278.2,279.29 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:279.29,281.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:284.2,286.46 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:286.46,290.16 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:290.16,291.59 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:291.59,293.5 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:297.2,298.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:298.16,300.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:301.2,301.38 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:301.38,303.17 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:303.17,304.41 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:304.41,306.13 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:308.4,308.42 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:308.42,311.13 3 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:313.4,313.38 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:313.38,315.13 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:320.2,320.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:323.68,325.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:325.16,327.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:329.2,332.16 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:332.16,334.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:336.2,337.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:337.9,339.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:341.2,341.55 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:344.69,346.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:346.16,348.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:350.2,353.16 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:353.16,355.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:357.2,358.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:358.9,360.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:362.2,363.29 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:363.29,365.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:367.2,367.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:370.71,372.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:372.16,374.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:376.2,383.58 6 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:383.58,385.17 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:385.17,387.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:388.3,388.21 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:389.8,391.17 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:391.17,393.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:394.3,394.19 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:397.2,397.16 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:397.16,399.59 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:399.59,401.93 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:401.93,403.5 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:404.4,404.96 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:405.9,407.93 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:407.93,409.5 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:410.4,410.60 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:414.2,415.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:415.9,417.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:419.2,419.24 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:419.24,421.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:423.2,423.28 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:424.10,425.69 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:426.11,428.59 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:428.59,430.4 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:430.9,432.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:433.15,435.59 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:435.59,437.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:437.9,439.4 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:442.2,442.91 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:442.91,444.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:446.2,446.40 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:446.40,448.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:450.2,451.47 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:454.71,456.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:456.16,458.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:460.2,463.16 3 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:463.16,465.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:467.2,468.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:468.9,470.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:472.2,473.33 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:473.33,475.34 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:475.34,477.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:478.3,478.35 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:478.35,481.4 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:482.3,482.31 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:482.31,484.4 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:487.2,487.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:490.71,492.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:492.16,494.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:496.2,500.16 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:500.16,502.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:504.2,505.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:505.9,507.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:509.2,509.24 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:509.24,511.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:513.2,513.30 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:516.68,518.16 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:518.16,520.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:522.2,526.16 4 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:526.16,528.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:530.2,531.9 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:531.9,533.3 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:535.2,537.31 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:537.31,538.25 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:538.25,541.4 2 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:544.2,544.91 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:544.91,546.3 1 0 -github.com/echovault/echovault/internal/modules/hash/commands.go:548.2,548.51 1 1 -github.com/echovault/echovault/internal/modules/hash/commands.go:551.36,675.2 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:23.74,24.18 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:24.18,26.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:27.2,31.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:34.76,35.18 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:35.18,37.3 1 0 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:38.2,42.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:45.74,46.18 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:46.18,48.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:49.2,53.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:56.77,57.18 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:57.18,59.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:60.2,64.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:67.75,68.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:68.19,70.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:71.2,75.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:78.80,79.34 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:79.34,81.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:82.2,82.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:82.19,88.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:89.2,93.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:96.74,97.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:97.19,99.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:100.2,104.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:107.75,108.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:108.19,110.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:111.2,115.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:118.77,119.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:119.19,121.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:122.2,126.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:129.77,130.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:130.19,132.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:133.2,137.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:140.77,141.19 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:141.19,143.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:144.2,148.8 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:151.74,152.18 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:152.18,154.3 1 1 -github.com/echovault/echovault/internal/modules/hash/key_funcs.go:155.2,159.8 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 1 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 1 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 1 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 1 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 1 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 1 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 1 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 1 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 1 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 1 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 1 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 1 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 1 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 1 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 1 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 1 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:34.67,36.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:36.16,38.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:40.2,47.16 7 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:47.16,49.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:53.2,53.17 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:53.17,54.17 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:54.17,56.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:56.9,58.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:61.2,61.45 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:61.45,63.17 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:63.17,65.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:66.8,66.52 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:66.52,68.16 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:68.16,70.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:73.2,75.17 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:75.17,77.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:80.2,80.29 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:80.29,82.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:84.2,84.17 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:87.68,89.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:89.16,91.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:93.2,96.41 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:96.41,97.15 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:97.15,99.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:103.2,103.65 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:103.65,105.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:107.2,107.42 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:110.67,112.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:112.16,114.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:115.2,118.16 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:118.16,120.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:122.2,124.51 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:127.68,129.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:129.16,131.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:133.2,134.74 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:134.74,135.19 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:135.19,137.12 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:139.3,139.41 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:142.2,144.41 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:144.41,145.24 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:145.24,147.12 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:149.3,149.96 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:152.2,152.19 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:155.67,157.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:157.16,159.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:160.2,161.60 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:161.60,162.14 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:162.14,163.12 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:165.3,166.17 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:166.17,168.12 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:170.3,170.13 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:172.2,172.51 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:175.71,177.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:177.16,179.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:181.2,184.16 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:184.16,186.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:188.2,189.31 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:189.31,191.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:193.2,195.30 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:198.74,200.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:200.16,202.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:204.2,207.16 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:207.16,209.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:211.2,213.31 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:213.31,215.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:217.2,218.57 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:218.57,220.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:222.2,222.47 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:225.67,227.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:227.16,229.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:231.2,236.16 4 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:236.16,238.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:240.2,242.31 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:242.31,244.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:246.2,247.50 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:247.50,249.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:251.2,251.12 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:251.12,253.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:255.2,255.47 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:258.70,260.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:260.16,262.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:264.2,269.16 4 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:269.16,271.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:272.2,273.53 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:273.53,275.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:277.2,277.16 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:277.16,279.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:281.2,281.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:281.30,284.3 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:286.2,288.44 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:289.12,290.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:290.39,292.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:293.3,293.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:294.12,295.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:295.39,297.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:298.3,298.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:299.12,300.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:300.39,302.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:303.3,303.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:303.39,305.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:306.3,306.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:307.12,308.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:308.39,309.40 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:309.40,311.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:312.4,312.58 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:314.3,314.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:315.10,316.82 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:319.2,319.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:322.72,324.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:324.16,326.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:328.2,333.16 4 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:333.16,335.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:336.2,337.55 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:337.55,339.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:341.2,341.16 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:341.16,343.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:345.2,345.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:345.30,348.3 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:350.2,352.44 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:353.12,354.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:354.39,356.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:357.3,357.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:358.12,359.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:359.39,361.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:362.3,362.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:363.12,364.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:364.39,366.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:367.3,367.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:367.39,369.4 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:370.3,370.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:371.12,372.39 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:372.39,373.40 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:373.40,375.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:376.4,376.58 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:378.3,378.57 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:379.10,380.82 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:383.2,383.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:386.68,389.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:389.16,391.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:393.2,401.32 6 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:401.32,404.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:404.8,406.35 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:407.15,410.18 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:410.18,412.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:413.12,414.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:415.14,416.23 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:417.11,419.62 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:421.3,421.33 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:425.2,425.115 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:425.115,427.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:430.2,430.54 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:433.68,436.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:436.16,438.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:440.2,448.32 6 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:448.32,451.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:451.8,453.35 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:454.15,457.18 3 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:457.18,459.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:460.12,461.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:462.14,463.23 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:464.11,466.62 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:468.3,468.33 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:472.2,472.115 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:472.115,474.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:477.2,477.54 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:480.70,483.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:483.16,485.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:488.2,489.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:489.16,491.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:493.2,501.32 6 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:501.32,504.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:504.8,506.35 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:507.15,509.18 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:509.18,511.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:512.12,513.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:514.14,515.23 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:516.11,518.62 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:520.3,520.41 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:524.2,524.115 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:524.115,526.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:529.2,529.54 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:532.70,535.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:535.16,537.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:540.2,541.16 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:541.16,543.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:545.2,553.32 6 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:553.32,556.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:556.8,558.35 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:559.15,561.18 2 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:561.18,563.5 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:564.12,565.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:566.14,567.23 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:568.11,570.62 2 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:572.3,572.41 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:576.2,576.115 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:576.115,578.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:581.2,581.54 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:584.70,585.30 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:585.30,587.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:589.2,596.28 5 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:596.28,598.3 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:601.2,601.99 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:601.99,603.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:606.2,606.49 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:606.49,608.3 1 0 -github.com/echovault/echovault/internal/modules/generic/commands.go:610.2,610.31 1 1 -github.com/echovault/echovault/internal/modules/generic/commands.go:613.36,839.2 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:24.73,25.34 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:25.34,27.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:28.2,32.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:35.74,36.25 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:36.25,38.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:39.2,40.30 2 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:40.30,41.15 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:41.15,43.4 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:45.2,49.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:52.73,53.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:53.19,55.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:56.2,60.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:63.74,64.18 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:64.18,66.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:67.2,71.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:74.73,75.18 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:75.18,77.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:78.2,82.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:85.77,86.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:86.19,88.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:89.2,93.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:96.80,97.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:97.19,99.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:100.2,104.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:107.73,108.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:108.19,110.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:111.2,115.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:118.76,119.34 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:119.34,121.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:122.2,126.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:129.78,130.34 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:130.34,132.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:133.2,137.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:140.74,141.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:141.19,143.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:144.2,146.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:149.74,150.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:150.19,152.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:153.2,155.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:158.76,159.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:159.19,161.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:162.2,164.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:167.76,168.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:168.19,170.3 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:171.2,173.8 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:176.76,177.19 1 1 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:177.19,179.3 1 0 -github.com/echovault/echovault/internal/modules/generic/key_funcs.go:180.2,182.8 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:32.100,33.19 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:33.19,35.3 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:36.2,36.33 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:37.13,39.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:41.12,42.27 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:42.27,44.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:45.3,46.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:48.12,49.27 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:49.27,51.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:52.3,53.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:55.12,56.19 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:56.19,58.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:59.3,59.30 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:59.30,61.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:62.3,64.17 3 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:64.17,66.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:67.3,68.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:70.12,71.19 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:71.19,73.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:74.3,74.30 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:74.30,76.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:77.3,79.17 3 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:79.17,81.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:82.3,83.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:85.14,86.19 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:86.19,88.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:89.3,89.30 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:89.30,91.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:92.3,94.17 3 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:94.17,96.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:97.3,98.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:100.14,101.19 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:101.19,103.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:104.3,104.30 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:104.30,106.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:107.3,109.17 3 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:109.17,111.4 1 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:112.3,113.55 2 1 -github.com/echovault/echovault/internal/modules/generic/utils.go:115.10,116.96 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 0 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 0 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 0 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 0 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 0 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 0 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 0 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 0 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 0 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 0 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 0 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 0 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 0 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 0 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 0 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 0 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 0 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 0 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 0 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 1 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 1 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 1 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 1 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 1 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 0 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 0 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 0 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 0 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 0 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 0 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 0 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 0 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 0 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 0 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 0 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 0 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 0 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 0 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 0 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:55.56,56.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:56.30,58.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:61.59,62.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:62.30,64.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:67.64,68.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:68.30,70.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:73.59,74.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:74.30,76.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:79.59,80.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:80.30,82.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:85.60,86.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:86.30,88.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:91.82,92.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:92.30,94.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:97.77,98.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:98.30,100.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:103.73,104.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:104.30,106.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:109.89,110.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:110.30,112.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:115.65,122.30 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:122.31,122.32 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:123.31,123.32 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:124.52,126.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:127.71,127.72 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:128.48,128.49 0 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:129.43,131.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:134.2,134.33 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:134.33,136.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:138.2,138.34 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:138.34,139.13 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:139.13,141.17 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:141.17,143.5 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:144.4,144.8 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:144.8,146.62 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:146.62,147.50 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:147.50,149.7 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:155.2,155.15 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:158.44,177.58 6 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:177.58,180.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:183.2,185.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:185.16,186.37 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:186.37,189.18 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:189.18,192.5 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:193.4,193.24 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:194.9,197.4 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:200.2,201.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:201.16,204.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:205.2,205.35 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:205.35,208.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:210.2,212.20 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:212.20,213.53 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:213.53,216.4 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:220.2,225.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:225.16,228.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:230.2,231.49 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:231.49,233.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:236.2,239.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:239.16,242.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:245.2,246.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:246.16,249.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:252.2,257.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:257.16,260.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:261.2,261.39 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:261.39,264.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:265.2,265.33 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:265.33,267.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:268.2,268.34 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:268.34,271.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:274.2,275.58 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:275.58,277.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:280.2,281.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:281.16,284.3 2 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:285.2,285.15 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:285.15,286.35 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:286.35,288.4 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:292.2,292.39 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:292.39,294.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:295.2,295.32 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:295.32,297.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:300.2,305.12 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:308.39,310.50 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:310.50,312.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:313.2,313.16 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:313.16,315.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:317.2,320.16 3 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:324.2,324.52 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:324.52,326.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:328.2,328.46 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:328.46,330.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:332.2,337.50 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:337.50,339.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:340.2,340.16 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:344.2,345.16 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:345.16,347.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:349.2,351.58 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:351.58,353.3 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:355.2,357.94 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:357.94,359.3 1 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:361.2,363.12 2 1 -github.com/echovault/echovault/internal/snapshot/snapshot.go:366.46,368.2 1 0 -github.com/echovault/echovault/internal/snapshot/snapshot.go:370.42,372.2 1 1 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:33.82,34.19 1 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:34.19,36.3 1 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:37.2,37.33 1 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:46.34,49.16 2 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:49.16,51.3 1 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:52.2,55.13 3 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:55.13,57.3 1 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:59.2,60.9 2 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:60.9,62.3 1 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:64.2,65.20 2 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:65.20,67.17 2 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:67.17,69.4 1 0 -github.com/echovault/echovault/volumes/modules/module_get/module_get.go:72.2,72.56 1 0 -github.com/echovault/echovault/volumes/modules/module_set/module_set.go:33.82,34.19 1 0 -github.com/echovault/echovault/volumes/modules/module_set/module_set.go:34.19,36.3 1 0 -github.com/echovault/echovault/volumes/modules/module_set/module_set.go:37.2,37.34 1 0 -github.com/echovault/echovault/volumes/modules/module_set/module_set.go:46.34,49.16 2 0 -github.com/echovault/echovault/volumes/modules/module_set/module_set.go:49.16,51.3 1 0 -github.com/echovault/echovault/volumes/modules/module_set/module_set.go:52.2,55.16 3 0 -github.com/echovault/echovault/volumes/modules/module_set/module_set.go:55.16,57.3 1 0 -github.com/echovault/echovault/volumes/modules/module_set/module_set.go:59.2,60.16 2 0 -github.com/echovault/echovault/volumes/modules/module_set/module_set.go:60.16,62.3 1 0 -github.com/echovault/echovault/volumes/modules/module_set/module_set.go:64.2,64.31 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 1 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 1 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 1 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 1 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 1 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 1 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 1 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 1 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 1 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 1 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 1 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 0 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 1 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 1 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 1 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 1 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 1 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:24.72,26.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:26.16,28.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:30.2,34.9 4 1 -github.com/echovault/echovault/internal/modules/string/commands.go:34.9,36.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:38.2,40.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:40.16,42.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:44.2,45.9 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:45.9,47.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:50.2,50.24 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:50.24,52.94 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:52.94,54.4 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:55.3,55.58 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:59.2,59.16 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:59.16,61.94 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:61.94,63.4 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:64.3,64.58 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:67.2,69.35 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:69.35,71.24 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:71.24,74.12 3 1 -github.com/echovault/echovault/internal/modules/string/commands.go:77.3,78.8 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:81.2,81.103 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:81.103,83.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:85.2,85.59 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:88.70,90.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:94.2,97.16 3 1 -github.com/echovault/echovault/internal/modules/string/commands.go:97.16,99.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:101.2,103.9 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:103.9,105.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:107.2,107.56 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:110.70,112.16 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:112.16,114.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:116.2,123.24 6 1 -github.com/echovault/echovault/internal/modules/string/commands.go:123.24,125.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:127.2,127.16 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:127.16,129.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:131.2,132.9 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:132.9,134.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:136.2,136.15 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:136.15,138.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:139.2,139.13 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:139.13,141.3 1 0 -github.com/echovault/echovault/internal/modules/string/commands.go:143.2,143.30 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:143.30,145.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:147.2,147.22 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:147.22,149.3 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:151.2,151.17 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:151.17,154.3 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:156.2,158.14 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:158.14,160.38 2 1 -github.com/echovault/echovault/internal/modules/string/commands.go:160.38,162.4 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:163.3,163.12 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:166.2,166.65 1 1 -github.com/echovault/echovault/internal/modules/string/commands.go:169.36,209.2 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:23.78,24.19 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:24.19,26.3 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:27.2,31.8 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:34.76,35.19 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:35.19,37.3 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:38.2,42.8 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:45.76,46.19 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:46.19,48.3 1 1 -github.com/echovault/echovault/internal/modules/string/key_funcs.go:49.2,53.8 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 1 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 1 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 1 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 1 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 1 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 1 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 1 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 1 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 1 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 1 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 1 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 1 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 1 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 1 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 1 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 1 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 1 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 1 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:26.68,28.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:28.16,30.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:32.2,37.16 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:37.16,39.91 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:39.91,41.4 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:42.3,42.70 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:45.2,46.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:46.9,48.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:50.2,52.51 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:55.69,57.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:57.16,59.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:61.2,64.16 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:64.16,66.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:68.2,69.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:69.9,71.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:73.2,75.57 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:78.69,80.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:80.16,82.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:84.2,87.34 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:87.34,89.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:91.2,92.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:92.9,94.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:96.2,97.41 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:97.41,99.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:99.10,100.12 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:102.3,102.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:105.2,109.26 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:109.26,111.24 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:111.24,113.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:116.2,116.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:119.74,121.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:121.16,123.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:125.2,129.34 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:129.34,131.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:133.2,134.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:134.9,136.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:138.2,139.40 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:139.40,141.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:141.10,142.12 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:144.3,144.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:147.2,152.99 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:152.99,154.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:156.2,156.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:159.70,161.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:161.16,163.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:165.2,169.37 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:169.37,170.14 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:170.14,172.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:173.3,174.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:174.10,177.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:178.3,178.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:181.2,181.20 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:181.20,183.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:185.2,189.26 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:189.26,191.24 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:191.24,193.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:196.2,196.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:199.74,201.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:201.16,203.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:205.2,209.67 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:209.67,211.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:212.2,212.35 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:212.35,214.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:215.2,215.20 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:215.20,217.38 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:217.38,219.4 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:221.3,221.71 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:221.71,223.4 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:223.9,225.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:228.2,230.37 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:230.37,231.14 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:231.14,233.4 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:234.3,235.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:235.10,238.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:239.3,239.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:242.2,242.20 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:242.20,244.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:246.2,248.69 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:251.75,253.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:253.16,255.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:257.2,261.37 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:261.37,262.14 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:262.14,264.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:265.3,266.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:266.10,269.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:270.3,270.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:273.2,276.104 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:276.104,278.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:280.2,280.69 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:283.73,285.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:285.16,287.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:289.2,292.16 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:292.16,294.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:296.2,297.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:297.9,299.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:301.2,301.38 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:301.38,303.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:305.2,305.30 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:308.72,310.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:310.16,312.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:314.2,317.16 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:317.16,319.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:321.2,322.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:322.9,324.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:326.2,329.26 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:329.26,331.24 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:331.24,333.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:336.2,336.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:339.74,341.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:341.16,343.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:345.2,349.16 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:349.16,351.29 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:351.29,353.27 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:353.27,355.5 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:357.3,357.26 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:360.2,361.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:361.9,363.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:365.2,366.36 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:366.36,367.31 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:367.31,369.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:369.9,371.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:373.2,375.25 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:378.69,380.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:380.16,382.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:384.2,388.24 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:388.24,390.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:392.2,395.9 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:395.9,397.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:399.2,400.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:400.9,402.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:404.2,406.49 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:409.68,411.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:411.16,413.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:415.2,419.30 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:419.30,421.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:421.10,423.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:424.3,424.12 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:427.2,427.16 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:427.16,429.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:431.2,432.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:432.9,434.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:436.2,439.28 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:439.28,441.26 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:441.26,443.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:446.2,446.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:449.75,451.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:451.16,453.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:455.2,459.30 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:459.30,461.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:461.10,463.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:464.3,464.12 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:467.2,467.16 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:467.16,469.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:471.2,472.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:472.9,474.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:476.2,479.28 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:479.28,481.26 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:481.26,483.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:486.2,486.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:489.68,491.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:491.16,493.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:495.2,499.16 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:499.16,501.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:503.2,504.9 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:504.9,506.3 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:508.2,510.51 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:513.70,515.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:515.16,517.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:519.2,522.33 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:522.33,524.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:524.10,526.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:527.3,527.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:530.2,533.35 3 1 -github.com/echovault/echovault/internal/modules/set/commands.go:533.35,535.33 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:535.33,537.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:540.2,540.25 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:543.75,545.16 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:545.16,547.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:549.2,554.33 4 1 -github.com/echovault/echovault/internal/modules/set/commands.go:554.33,556.10 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:556.10,558.4 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:559.3,559.27 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:562.2,564.100 2 1 -github.com/echovault/echovault/internal/modules/set/commands.go:564.100,566.3 1 0 -github.com/echovault/echovault/internal/modules/set/commands.go:567.2,567.65 1 1 -github.com/echovault/echovault/internal/modules/set/commands.go:570.36,723.2 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:25.74,26.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:26.18,28.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:29.2,33.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:36.75,37.19 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:37.19,39.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:40.2,44.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:47.75,48.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:48.18,50.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:51.2,55.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:58.80,59.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:59.18,61.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:62.2,66.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:69.76,70.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:70.18,72.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:73.2,77.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:80.80,81.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:81.18,83.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:85.2,85.56 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:85.56,87.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:89.2,89.20 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:89.20,95.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:97.2,101.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:104.81,105.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:105.18,107.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:108.2,112.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:115.79,116.19 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:116.19,118.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:119.2,123.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:126.78,127.19 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:127.19,129.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:130.2,134.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:137.80,138.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:138.18,140.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:141.2,145.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:148.75,149.19 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:149.19,151.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:152.2,156.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:159.74,160.34 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:160.34,162.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:163.2,167.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:170.81,171.34 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:171.34,173.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:174.2,178.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:181.74,182.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:182.18,184.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:185.2,189.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:192.76,193.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:193.18,195.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:196.2,200.8 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:203.81,204.18 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:204.18,206.3 1 1 -github.com/echovault/echovault/internal/modules/set/key_funcs.go:207.2,211.8 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:28.34,35.2 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:37.41,39.26 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:39.26,40.23 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:40.23,43.4 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:45.2,46.14 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:49.43,51.2 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:53.35,55.32 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:55.32,57.3 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:58.2,58.12 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:61.35,63.2 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:65.47,68.16 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:68.16,70.3 1 0 -github.com/echovault/echovault/internal/modules/set/set.go:72.2,72.49 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:72.49,74.3 1 0 -github.com/echovault/echovault/internal/modules/set/set.go:76.2,80.15 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:80.15,82.47 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:82.47,85.4 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:86.8,88.43 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:88.43,90.38 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:90.38,92.59 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:92.59,94.6 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:95.5,95.8 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:100.2,100.12 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:103.44,105.26 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:105.26,106.24 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:106.24,109.4 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:111.2,112.14 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:115.41,119.2 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:121.41,123.2 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:126.46,129.27 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:129.27,130.31 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:130.31,131.24 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:131.24,133.5 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:136.2,137.13 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:140.54,141.22 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:141.22,143.3 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:144.2,146.10 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:152.57,154.19 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:155.9,156.24 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:157.9,160.43 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:160.43,161.56 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:161.56,163.10 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:165.4,165.32 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:165.32,167.5 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:169.3,169.36 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:170.10,172.11 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:172.11,174.4 1 0 -github.com/echovault/echovault/internal/modules/set/set.go:175.3,176.11 2 1 -github.com/echovault/echovault/internal/modules/set/set.go:176.11,178.4 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:179.3,179.42 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:184.31,185.19 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:186.9,187.17 1 1 -github.com/echovault/echovault/internal/modules/set/set.go:188.9,191.15 3 1 -github.com/echovault/echovault/internal/modules/set/set.go:192.10,195.28 3 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 1 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 1 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 0 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 0 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 0 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 0 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 1 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 1 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 1 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 1 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 1 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 1 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 1 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 1 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 1 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 1 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 1 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 1 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 0 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 0 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 0 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 1 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 1 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 1 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 1 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 1 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 1 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 1 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 1 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 1 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 1 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 1 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 1 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 1 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 1 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:29.68,31.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:31.16,33.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:35.2,45.43 8 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:45.43,46.29 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:46.29,47.9 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:49.3,49.55 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:50.15,51.85 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:51.85,53.5 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:54.16,55.25 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:56.12,57.25 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:61.2,61.77 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:61.77,63.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:65.2,67.63 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:67.63,68.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:68.15,69.12 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:71.3,72.23 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:73.11,74.64 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:75.15,77.49 2 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:77.49,83.5 2 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:84.4,84.49 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:84.49,90.5 2 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:91.16,96.6 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:97.12,102.6 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:107.2,107.27 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:107.27,109.34 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:109.34,110.70 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:110.70,113.61 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:113.61,115.6 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:116.5,116.13 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:118.4,118.70 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:118.70,122.36 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:122.36,124.6 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:125.5,125.13 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:127.4,127.39 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:127.39,129.13 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:131.4,131.41 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:131.41,134.25 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:134.25,136.6 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:137.5,137.13 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:139.4,139.55 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:143.2,143.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:143.15,146.10 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:146.10,148.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:149.3,150.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:150.17,152.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:154.3,154.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:154.18,157.4 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:159.3,159.52 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:163.2,164.90 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:164.90,166.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:168.2,168.63 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:171.69,173.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:173.16,175.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:177.2,180.16 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:180.16,182.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:184.2,185.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:185.9,187.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:189.2,189.63 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:192.70,194.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:194.16,196.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:198.2,202.54 4 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:203.10,204.60 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:205.14,206.51 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:206.51,208.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:208.9,210.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:211.15,213.21 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:214.11,216.21 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:219.2,220.54 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:221.10,222.60 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:223.14,224.51 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:224.51,226.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:226.9,228.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:229.15,231.21 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:232.11,234.21 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:237.2,237.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:237.16,239.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:241.2,242.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:242.9,244.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:246.2,247.33 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:247.33,248.47 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:248.47,250.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:253.2,253.58 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:256.73,258.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:258.16,260.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:262.2,267.16 5 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:267.16,269.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:271.2,272.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:272.9,274.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:276.2,279.38 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:279.38,280.45 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:280.45,282.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:285.2,287.28 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:287.28,289.81 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:289.81,291.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:294.2,294.51 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:297.69,299.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:303.2,305.74 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:305.74,307.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:308.2,308.49 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:308.49,310.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:313.2,313.34 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:313.34,316.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:318.2,319.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:319.9,321.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:324.2,326.42 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:326.42,327.35 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:327.35,328.12 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:330.3,331.10 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:331.10,333.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:334.3,334.27 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:337.2,342.34 4 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:342.34,343.20 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:343.20,346.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:346.9,348.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:351.2,353.25 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:356.74,358.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:358.16,360.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:362.2,366.34 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:366.34,369.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:371.2,372.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:372.9,374.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:376.2,378.42 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:378.42,379.34 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:379.34,381.11 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:381.11,383.5 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:384.4,384.28 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:388.2,389.99 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:389.99,391.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:393.2,393.64 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:396.71,398.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:398.16,400.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:402.2,408.54 5 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:409.10,410.55 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:411.14,412.68 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:412.68,414.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:414.9,414.75 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:414.75,416.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:416.9,418.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:419.15,421.23 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:422.11,424.23 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:427.2,427.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:427.16,435.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:435.17,437.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:438.3,438.99 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:441.2,442.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:442.9,444.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:445.2,451.23 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:451.23,453.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:454.2,455.74 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:458.70,460.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:460.16,462.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:464.2,465.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:465.16,467.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:468.2,473.33 4 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:473.33,474.26 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:474.26,477.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:478.3,479.10 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:479.10,481.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:482.3,485.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:488.2,492.33 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:492.33,493.40 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:493.40,494.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:494.18,496.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:496.10,498.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:502.2,504.25 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:507.75,509.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:509.16,511.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:513.2,517.63 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:517.63,519.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:521.2,522.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:522.16,524.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:526.2,529.33 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:529.33,530.26 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:530.26,532.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:533.3,534.10 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:534.10,536.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:537.3,540.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:543.2,546.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:546.17,548.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:550.2,550.69 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:553.69,555.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:555.16,557.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:559.2,566.67 5 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:566.67,568.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:569.2,569.20 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:569.20,570.19 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:570.19,572.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:573.3,573.40 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:573.40,575.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:576.3,577.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:577.17,579.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:580.3,580.13 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:580.13,582.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:583.3,584.25 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:588.2,588.68 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:588.68,590.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:591.2,591.21 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:591.21,592.20 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:592.20,594.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:595.3,596.53 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:596.53,598.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:601.2,601.43 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:601.43,602.35 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:602.35,604.35 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:604.35,605.13 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:607.4,608.18 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:608.18,610.5 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:612.4,614.38 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:614.38,616.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:618.4,620.27 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:624.2,624.30 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:627.68,629.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:629.16,631.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:633.2,638.53 5 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:638.53,640.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:642.2,642.30 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:642.30,644.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:644.17,646.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:647.3,647.12 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:647.12,649.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:652.2,652.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:652.16,654.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:656.2,657.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:657.9,659.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:661.2,662.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:662.16,664.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:666.2,667.36 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:667.36,670.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:672.2,674.25 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:677.71,679.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:679.16,681.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:683.2,686.16 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:686.16,688.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:690.2,691.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:691.9,693.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:695.2,701.36 4 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:701.36,703.21 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:703.21,705.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:705.9,707.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:710.2,712.25 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:715.75,717.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:717.16,719.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:721.2,725.30 4 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:725.30,727.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:727.17,729.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:730.3,730.13 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:730.13,732.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:735.2,736.30 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:736.30,737.57 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:737.57,739.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:739.9,741.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:744.2,744.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:744.16,746.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:748.2,749.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:749.9,751.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:753.2,756.28 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:756.28,757.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:757.17,759.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:759.9,761.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:764.2,766.25 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:769.69,771.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:771.16,773.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:775.2,780.84 5 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:780.84,782.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:784.2,784.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:784.16,786.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:788.2,789.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:789.9,791.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:793.2,794.54 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:794.54,795.55 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:795.55,797.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:798.3,798.39 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:801.2,801.36 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:801.36,802.40 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:802.40,803.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:803.18,806.5 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:806.10,808.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:812.2,812.31 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:815.68,817.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:817.16,819.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:821.2,824.16 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:824.16,826.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:828.2,829.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:829.9,831.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:833.2,834.39 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:834.39,835.27 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:835.27,837.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:840.2,840.58 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:843.70,845.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:845.16,847.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:849.2,852.16 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:852.16,854.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:856.2,857.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:857.9,859.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:860.2,861.20 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:861.20,863.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:865.2,867.69 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:870.80,872.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:872.16,874.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:876.2,882.16 5 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:882.16,884.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:886.2,887.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:887.16,889.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:891.2,891.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:891.16,893.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:895.2,896.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:896.9,898.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:900.2,900.33 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:900.33,901.61 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:901.61,904.4 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:907.2,907.58 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:910.79,912.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:912.16,914.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:916.2,920.16 4 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:920.16,922.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:924.2,925.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:925.16,927.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:929.2,929.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:929.16,931.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:933.2,934.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:934.9,936.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:938.2,938.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:938.15,940.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:941.2,941.14 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:941.14,943.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:945.2,945.88 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:945.88,947.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:949.2,950.54 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:950.54,952.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:954.2,956.18 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:956.18,957.34 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:957.34,960.4 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:961.8,962.34 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:962.34,965.4 2 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:968.2,968.58 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:971.78,973.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:973.16,975.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:977.2,982.16 5 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:982.16,984.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:986.2,987.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:987.9,989.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:991.2,994.38 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:994.38,995.45 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:995.45,997.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1000.2,1003.28 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1003.28,1005.81 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1005.81,1008.4 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1011.2,1011.58 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1014.70,1016.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1016.16,1018.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1020.2,1031.76 10 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1031.76,1033.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1035.2,1035.73 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1035.73,1037.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1039.2,1039.65 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1039.65,1041.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1041.5,1043.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1043.8,1046.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1046.17,1048.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1049.3,1050.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1050.17,1052.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1055.2,1055.65 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1055.65,1057.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1057.5,1058.72 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1058.72,1060.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1061.3,1061.61 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1061.61,1063.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1064.3,1065.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1065.17,1067.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1068.3,1068.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1068.17,1070.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1071.3,1072.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1072.17,1074.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1077.2,1077.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1077.16,1079.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1081.2,1082.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1082.9,1084.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1086.2,1086.32 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1086.32,1088.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1089.2,1089.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1089.15,1091.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1093.2,1094.42 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1094.42,1095.55 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1095.55,1097.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1097.15,1099.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1100.4,1100.40 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1103.2,1103.40 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1103.40,1105.39 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1105.39,1106.46 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1106.46,1108.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1110.3,1110.55 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1110.55,1111.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1111.15,1113.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1114.4,1114.64 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1118.2,1120.35 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1120.35,1121.24 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1121.24,1122.9 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1124.3,1124.43 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1124.43,1125.85 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1125.85,1127.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1128.4,1128.12 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1130.3,1131.90 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1131.90,1133.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1136.2,1138.34 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1138.34,1139.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1139.17,1141.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1141.9,1143.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1146.2,1148.25 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1151.75,1153.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1153.16,1155.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1157.2,1168.73 11 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1168.73,1170.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1172.2,1172.65 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1172.65,1174.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1174.5,1176.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1176.8,1179.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1179.17,1181.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1182.3,1183.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1183.17,1185.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1188.2,1188.65 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1188.65,1190.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1190.5,1191.72 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1191.72,1193.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1194.3,1194.61 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1194.61,1196.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1197.3,1198.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1198.17,1200.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1201.3,1201.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1201.17,1203.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1204.3,1205.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1205.17,1207.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1210.2,1210.19 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1210.19,1212.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1214.2,1215.9 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1215.9,1217.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1219.2,1219.32 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1219.32,1221.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1222.2,1222.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1222.15,1224.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1226.2,1227.42 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1227.42,1228.55 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1228.55,1230.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1230.15,1232.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1233.4,1233.40 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1236.2,1236.40 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1236.40,1238.39 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1238.39,1239.46 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1239.46,1241.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1243.3,1243.55 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1243.55,1244.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1244.15,1246.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1247.4,1247.64 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1251.2,1253.35 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1253.35,1254.24 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1254.24,1255.9 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1257.3,1257.43 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1257.43,1258.85 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1258.85,1260.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1261.4,1261.12 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1263.3,1264.90 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1264.90,1266.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1269.2,1272.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1272.17,1274.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1276.2,1276.72 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1279.70,1280.57 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1280.57,1282.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1284.2,1285.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1285.16,1287.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1289.2,1294.33 4 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1294.33,1295.25 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1295.25,1297.11 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1297.11,1299.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1300.4,1303.6 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1307.2,1310.35 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1310.35,1311.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1311.17,1313.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1313.9,1315.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1318.2,1320.25 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1323.75,1325.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1325.16,1327.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1329.2,1332.73 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1332.73,1334.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1336.2,1337.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1337.16,1339.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1341.2,1346.33 4 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1346.33,1347.25 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1347.25,1349.11 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1349.11,1351.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1352.4,1355.6 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1359.2,1362.17 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1362.17,1364.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1366.2,1366.65 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1369.36,1641.2 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:25.74,26.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:26.18,28.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:29.2,33.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:36.75,37.19 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:37.19,39.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:40.2,44.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:47.76,48.19 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:48.19,50.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:51.2,55.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:58.75,59.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:59.18,61.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:63.2,63.63 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:63.63,65.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:67.2,67.27 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:67.27,73.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:75.2,79.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:82.80,83.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:83.18,85.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:86.2,90.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:93.77,94.19 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:94.19,96.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:97.2,101.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:104.76,105.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:105.18,107.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:108.2,108.58 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:108.58,111.39 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:111.39,113.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:114.3,114.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:116.2,116.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:116.18,122.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:123.2,123.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:123.17,129.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:130.2,130.84 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:133.81,134.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:134.18,136.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:137.2,137.58 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:137.58,141.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:143.2,143.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:143.18,149.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:151.2,151.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:151.17,157.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:159.2,159.84 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:162.75,163.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:163.18,165.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:166.2,166.54 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:166.54,168.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:169.2,169.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:169.18,175.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:176.2,176.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:176.17,182.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:183.2,183.84 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:186.77,187.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:187.18,189.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:190.2,194.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:197.74,198.34 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:198.34,200.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:201.2,205.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:208.81,209.34 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:209.34,211.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:212.2,216.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:219.75,220.34 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:220.34,222.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:223.2,227.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:230.74,231.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:231.18,233.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:234.2,238.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:241.78,242.18 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:242.18,244.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:245.2,249.8 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:252.76,253.19 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:253.19,255.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:256.2,260.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:263.84,264.19 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:264.19,266.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:267.2,271.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:274.85,275.19 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:275.19,277.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:278.2,282.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:285.86,286.19 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:286.19,288.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:289.2,293.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:296.79,297.19 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:297.19,299.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:300.2,304.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:307.77,308.35 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:308.35,310.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:311.2,315.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:318.81,319.35 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:319.35,321.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:322.2,326.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:329.76,330.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:330.18,332.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:333.2,333.58 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:333.58,336.39 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:336.39,338.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:339.3,339.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:341.2,341.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:341.18,347.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:348.2,348.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:348.17,354.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:355.2,355.84 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:358.81,359.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:359.18,361.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:362.2,362.58 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:362.58,365.39 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:365.39,367.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:368.3,368.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:370.2,370.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:370.18,376.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:377.2,377.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:377.17,383.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:384.2,384.84 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:48.53,52.28 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:52.28,58.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:59.2,59.10 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:62.46,64.2 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:66.49,68.2 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:70.58,75.44 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:75.44,77.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:79.2,81.15 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:81.15,83.47 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:83.47,86.4 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:87.8,89.43 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:89.43,91.58 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:91.58,93.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:93.7,95.57 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:95.57,97.6 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:98.5,98.8 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:103.2,103.12 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:106.46,108.32 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:108.32,113.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:114.2,114.12 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:117.41,119.2 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:123.16,125.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:125.16,127.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:128.2,129.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:129.16,131.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:132.2,133.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:136.2,137.16 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:137.16,139.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:140.2,140.51 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:140.51,142.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:143.2,143.57 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:143.57,145.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:147.2,149.36 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:149.36,150.29 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:150.29,151.30 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:151.30,161.5 3 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:162.4,162.101 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:162.101,164.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:165.4,170.35 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:170.35,172.5 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:174.3,174.20 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:177.2,177.28 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:177.28,178.38 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:178.38,180.29 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:180.29,186.36 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:186.36,188.6 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:190.4,190.12 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:192.3,192.38 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:192.38,194.30 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:194.30,201.5 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:202.4,202.12 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:205.3,205.76 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:205.76,207.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:208.3,212.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:214.2,214.19 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:217.44,218.21 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:218.21,221.3 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:222.2,222.14 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:225.73,227.71 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:227.71,229.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:230.2,230.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:230.15,232.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:233.2,233.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:233.16,235.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:237.2,239.54 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:239.54,240.39 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:240.39,242.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:243.3,243.39 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:246.2,246.29 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:246.29,247.24 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:247.24,248.9 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:250.3,252.17 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:252.17,254.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:257.2,257.20 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:260.64,262.28 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:262.28,263.33 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:263.33,264.29 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:264.29,266.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:269.2,269.12 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:279.70,280.24 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:281.9,282.39 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:283.9,285.52 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:285.52,290.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:291.3,291.30 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:292.9,295.52 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:295.52,297.48 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:297.48,302.13 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:305.4,307.42 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:307.42,309.23 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:310.17,311.26 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:312.17,313.46 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:314.14,316.46 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:323.4,323.34 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:327.3,327.52 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:327.52,328.65 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:328.65,330.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:330.7,335.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:337.3,337.30 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:338.10,345.40 4 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:345.40,346.37 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:346.37,349.13 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:351.4,353.42 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:353.42,354.23 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:355.17,356.26 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:357.17,358.46 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:359.14,361.46 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:367.3,367.41 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:367.41,368.65 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:368.65,370.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:370.7,372.5 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:374.3,374.30 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:379.74,380.24 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:381.9,382.39 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:383.9,385.52 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:385.52,390.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:391.3,391.30 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:392.9,395.52 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:395.52,397.48 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:397.48,398.13 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:401.4,403.42 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:403.42,405.23 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:406.17,407.26 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:408.17,409.46 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:410.14,412.46 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:419.4,419.34 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:421.3,421.30 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:422.10,428.40 4 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:428.40,429.37 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:429.37,430.13 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:432.4,434.42 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:434.42,435.23 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:436.17,437.26 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:438.17,439.46 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:440.14,442.46 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:448.3,448.30 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:24.97,26.60 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:26.60,28.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:29.2,29.24 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:29.24,30.48 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:30.48,31.85 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:31.85,32.10 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:34.4,35.18 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:35.18,37.5 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:38.4,38.32 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:42.2,43.62 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:43.62,45.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:46.2,46.26 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:46.26,47.94 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:47.94,49.4 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:50.3,50.53 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:53.2,54.63 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:54.63,56.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:57.2,57.27 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:57.27,59.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:62.2,63.85 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:63.85,64.26 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:64.26,65.12 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:67.3,67.31 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:67.31,69.12 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:71.3,71.41 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:71.41,73.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:76.2,77.30 2 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:77.30,79.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:79.8,81.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:83.2,83.55 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:83.55,85.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:85.8,85.31 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:85.31,86.34 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:86.34,88.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:91.2,91.50 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:94.69,95.25 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:95.25,97.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:98.2,100.9 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:100.9,102.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:103.2,103.69 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:103.69,105.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:106.2,106.20 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:109.65,110.23 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:110.23,112.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:113.2,115.9 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:115.9,117.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:118.2,118.67 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:118.67,120.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:121.2,121.18 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:124.59,125.20 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:125.20,127.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:128.2,130.9 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:130.9,132.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:133.2,133.34 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:133.34,135.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:136.2,136.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:139.53,140.17 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:140.17,142.3 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:143.2,145.9 3 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:145.9,147.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:148.2,148.35 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:148.35,150.3 1 0 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:151.2,151.15 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:154.61,155.31 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:156.10,157.13 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:158.12,159.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:159.16,161.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:162.3,162.13 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:163.12,164.16 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:164.16,166.4 1 1 -github.com/echovault/echovault/internal/modules/sorted_set/utils.go:167.3,167.13 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 1 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 1 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 1 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 1 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 1 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 1 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 1 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 1 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 1 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 1 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 1 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 1 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 1 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 1 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 0 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 0 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 0 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 0 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 0 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 0 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 1 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 1 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 1 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 1 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 1 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 1 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 1 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 1 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 0 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 1 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 1 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 1 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 1 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 1 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:28.68,29.56 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:29.56,31.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:32.2,33.9 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:33.9,35.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:36.2,39.116 3 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:39.116,41.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:42.2,42.42 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:45.68,46.29 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:47.10,48.54 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:49.9,50.34 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:51.9,52.94 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:56.68,57.30 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:57.30,59.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:60.2,60.93 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:63.69,64.65 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:64.65,66.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:68.2,68.30 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:68.30,72.3 3 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:74.2,90.16 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:90.16,92.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:95.2,96.16 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:96.16,98.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:99.2,99.45 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:99.45,101.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:102.2,105.31 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:105.31,107.10 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:107.10,109.4 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:110.3,116.17 3 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:116.17,118.4 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:122.2,128.60 5 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:131.70,132.30 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:132.30,134.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:136.2,137.16 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:137.16,139.3 1 0 +github.com/echovault/echovault/internal/modules/connection/commands.go:140.2,140.18 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:140.18,142.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:144.2,147.42 3 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:150.70,151.30 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:151.30,153.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:155.2,156.16 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:156.16,158.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:160.2,161.16 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:161.16,163.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:165.2,165.36 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:165.36,167.3 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:169.2,171.42 2 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:174.36,184.84 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:184.84,190.5 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:201.84,207.5 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:216.84,222.5 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:231.84,237.5 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:246.84,252.5 1 1 +github.com/echovault/echovault/internal/modules/connection/commands.go:269.84,275.5 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:20.80,21.19 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:21.19,23.3 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:24.2,24.33 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:25.14,26.19 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:26.19,28.4 1 0 +github.com/echovault/echovault/internal/modules/connection/utils.go:29.3,32.43 4 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:33.17,34.19 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:34.19,36.4 1 0 +github.com/echovault/echovault/internal/modules/connection/utils.go:37.3,38.43 2 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:39.10,40.76 1 0 +github.com/echovault/echovault/internal/modules/connection/utils.go:44.104,47.34 2 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:47.34,50.3 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:50.8,53.3 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:55.2,62.44 8 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:62.44,64.3 1 1 +github.com/echovault/echovault/internal/modules/connection/utils.go:65.2,65.12 1 1 github.com/echovault/echovault/internal/modules/admin/commands.go:27.78,33.29 4 1 github.com/echovault/echovault/internal/modules/admin/commands.go:33.29,34.54 1 1 github.com/echovault/echovault/internal/modules/admin/commands.go:34.54,40.42 4 1 @@ -5897,1180 +781,807 @@ github.com/echovault/echovault/internal/modules/admin/commands.go:98.52,102.6 3 github.com/echovault/echovault/internal/modules/admin/commands.go:103.5,103.13 1 1 github.com/echovault/echovault/internal/modules/admin/commands.go:105.4,106.14 2 1 github.com/echovault/echovault/internal/modules/admin/commands.go:108.3,109.26 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:111.9,115.56 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:115.56,117.4 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:118.3,118.53 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:118.53,122.37 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:122.37,123.67 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:123.67,124.53 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:124.53,125.59 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:125.59,129.8 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:131.6,131.14 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:133.5,133.54 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:133.54,136.6 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:138.9,138.61 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:138.61,142.37 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:142.37,143.67 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:143.67,144.53 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:144.53,146.24 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:146.24,149.8 2 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:151.6,151.14 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:153.5,153.33 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:153.33,156.6 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:158.9,158.60 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:158.60,162.37 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:162.37,163.67 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:163.67,164.53 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:164.53,165.55 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:165.55,169.8 3 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:171.6,171.14 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:173.5,173.50 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:173.50,176.6 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:178.9,180.4 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:181.3,182.26 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:183.10,184.54 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:188.75,190.2 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:192.36,200.84 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:200.84,204.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:213.84,217.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:225.86,229.7 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:238.86,242.7 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:252.86,256.7 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:267.84,271.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:272.73,273.49 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:273.49,275.6 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:276.5,276.45 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:285.84,289.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:290.73,292.18 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:292.18,294.6 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:295.5,295.53 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:304.84,308.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:309.73,310.47 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:310.47,312.6 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:313.5,313.45 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:321.84,325.5 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:335.86,339.7 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:340.75,341.34 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:341.34,343.8 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:344.7,345.34 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:345.34,347.8 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:348.7,348.75 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:348.75,350.8 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:351.7,351.47 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:361.86,365.7 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:366.75,367.35 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:367.35,369.8 1 0 -github.com/echovault/echovault/internal/modules/admin/commands.go:370.7,371.47 2 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:380.86,384.7 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:385.75,388.38 3 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:388.38,390.8 1 1 -github.com/echovault/echovault/internal/modules/admin/commands.go:391.7,391.30 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 1 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 1 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 1 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 1 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 1 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 1 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 1 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 1 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 1 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 1 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 1 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 1 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 1 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 1 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 1 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 1 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 1 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 1 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 1 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 1 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 1 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 1 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 1 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 1 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 1 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 1 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 1 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 1 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 1 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 1 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 1 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 1 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 1 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 1 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 1 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 1 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 1 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:53.62,54.20 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:54.20,56.70 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:56.70,59.4 2 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:61.3,62.17 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:62.17,65.4 2 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:67.3,67.16 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:67.16,68.36 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:68.36,70.5 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:73.3,75.38 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:75.38,76.60 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:76.60,79.5 2 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:82.3,82.71 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:82.71,83.60 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:83.60,86.5 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:92.40,97.24 3 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:97.24,105.3 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:108.2,112.29 3 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:112.29,113.33 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:113.33,115.9 2 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:118.2,118.20 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:118.20,120.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:123.2,123.29 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:123.29,125.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:127.2,137.13 3 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:140.52,145.70 3 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:145.70,147.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:148.2,152.3 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:155.45,161.33 3 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:161.33,162.30 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:162.30,163.47 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:163.47,165.5 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:165.10,168.5 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:172.2,173.45 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:173.45,175.3 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:177.2,184.12 4 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:187.73,192.37 4 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:192.37,193.28 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:193.28,195.12 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:198.3,198.31 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:198.31,199.30 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:199.30,201.5 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:204.3,204.18 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:204.18,205.12 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:208.3,208.52 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:208.52,209.49 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:209.49,211.5 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:214.3,214.63 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:214.63,216.4 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:218.2,218.12 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:221.95,225.19 3 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:225.19,234.60 4 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:234.60,236.4 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:237.3,237.24 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:240.2,240.19 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:240.19,250.31 5 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:250.31,251.28 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:251.28,254.10 3 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:257.3,257.17 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:257.17,259.4 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:263.2,263.19 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:263.19,265.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:268.2,268.21 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:268.21,274.3 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:276.2,276.46 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:276.46,277.38 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:277.38,280.18 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:280.18,287.5 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:291.2,291.50 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:294.131,303.16 6 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:303.16,305.3 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:307.2,311.59 4 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:311.59,315.17 4 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:315.17,317.4 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:321.2,321.36 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:321.36,323.3 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:326.2,326.37 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:326.37,328.3 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:331.2,331.37 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:331.37,333.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:336.2,339.29 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:339.29,341.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:344.2,344.57 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:344.57,346.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:348.2,352.63 3 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:352.63,353.39 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:353.39,355.4 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:356.3,356.63 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:356.63,357.36 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:357.36,359.5 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:361.3,362.26 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:362.26,364.4 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:368.2,368.64 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:368.64,369.101 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:369.101,370.63 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:370.63,373.5 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:374.4,374.16 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:376.5,378.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:381.2,381.94 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:381.94,383.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:383.5,385.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:388.2,388.93 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:388.93,390.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:390.5,392.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:395.2,395.59 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:395.59,397.36 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:397.36,399.106 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:399.106,401.5 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:401.7,403.5 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:405.4,405.105 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:405.105,407.5 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:407.7,409.5 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:411.3,411.13 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:414.2,414.45 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:414.45,416.29 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:416.29,418.4 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:421.3,421.59 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:421.59,422.95 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:422.95,423.49 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:423.49,425.6 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:426.5,426.70 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:426.70,428.6 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:429.5,429.17 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:431.6,432.27 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:432.27,434.5 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:438.3,438.60 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:438.60,439.97 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:439.97,440.50 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:440.50,442.6 1 0 -github.com/echovault/echovault/internal/modules/acl/acl.go:443.5,443.70 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:443.70,445.6 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:446.5,446.17 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:448.6,450.4 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:453.2,453.12 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:456.32,460.33 3 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:460.33,465.31 5 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:465.31,466.37 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:466.37,468.5 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:470.3,470.25 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:473.2,473.29 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:473.29,474.33 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:474.33,476.4 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:480.29,482.2 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:484.31,486.2 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:488.30,490.2 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:492.32,494.2 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:496.68,498.31 2 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:498.31,499.13 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:499.13,501.4 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:504.2,504.58 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:504.58,506.3 1 1 -github.com/echovault/echovault/internal/modules/acl/acl.go:507.2,507.19 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:31.68,32.56 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:32.56,34.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:35.2,36.9 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:36.9,38.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:39.2,42.102 3 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:42.102,44.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:45.2,45.42 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:48.67,49.29 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:49.29,51.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:53.2,57.35 3 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:57.35,58.36 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:58.36,59.48 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:59.48,61.5 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:62.4,62.12 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:64.3,64.50 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:64.50,65.51 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:65.51,68.5 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:72.2,72.30 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:72.30,75.34 3 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:75.34,78.4 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:79.3,80.28 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:80.28,82.24 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:82.24,84.5 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:86.3,86.26 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:89.2,89.30 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:89.30,91.46 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:91.46,92.54 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:92.54,94.38 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:94.38,96.30 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:96.30,98.7 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:100.5,100.28 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:105.2,105.85 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:108.71,109.30 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:109.30,111.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:113.2,114.9 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:114.9,116.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:117.2,122.30 5 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:122.30,123.38 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:123.38,126.9 3 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:130.2,130.16 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:130.16,132.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:135.2,139.18 3 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:139.18,141.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:141.8,143.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:144.2,144.21 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:144.21,146.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:147.2,147.17 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:147.17,149.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:151.2,152.29 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:152.29,154.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:157.2,158.51 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:158.51,159.22 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:159.22,161.12 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:163.3,163.49 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:165.2,165.51 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:165.51,166.22 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:166.22,168.12 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:170.3,170.49 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:174.2,175.48 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:175.48,176.21 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:176.21,178.12 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:180.3,180.47 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:182.2,182.48 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:182.48,183.21 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:183.21,185.12 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:187.3,187.47 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:191.2,192.79 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:192.79,193.37 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:193.37,195.4 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:197.2,198.30 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:198.30,199.10 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:200.100,202.53 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:203.53,205.52 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:206.52,208.52 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:213.2,215.54 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:215.54,217.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:218.2,218.54 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:218.54,220.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:222.2,224.25 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:227.69,229.9 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:229.9,231.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:233.2,234.33 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:234.33,236.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:237.2,238.25 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:241.71,243.9 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:243.9,245.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:246.2,246.56 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:246.56,248.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:249.2,249.42 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:252.71,253.29 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:253.29,255.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:256.2,257.9 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:257.9,259.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:260.2,260.75 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:260.75,262.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:263.2,263.42 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:266.70,268.9 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:268.9,270.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:271.2,275.74 4 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:278.68,279.29 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:279.29,281.3 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:282.2,283.9 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:283.9,285.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:286.2,291.33 5 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:291.33,294.19 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:294.19,296.4 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:296.9,298.4 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:300.3,300.22 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:300.22,302.4 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:304.3,304.18 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:304.18,306.4 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:308.3,308.43 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:308.43,309.61 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:309.61,311.5 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:312.4,312.58 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:312.58,314.5 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:317.3,317.52 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:317.52,318.23 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:318.23,320.13 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:322.4,322.39 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:325.3,325.52 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:325.52,326.23 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:326.23,328.13 2 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:330.4,330.39 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:333.3,333.49 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:333.49,334.22 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:334.22,336.13 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:338.4,338.37 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:341.3,341.49 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:341.49,342.22 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:342.22,344.13 2 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:346.4,346.37 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:349.3,349.45 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:349.45,350.52 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:350.52,352.13 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:354.4,354.41 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:357.3,357.46 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:357.46,358.52 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:358.52,360.5 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:363.3,363.55 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:363.55,365.4 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:367.3,367.55 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:367.55,369.4 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:370.3,370.54 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:373.2,374.25 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:377.68,378.30 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:378.30,380.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:382.2,383.9 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:383.9,385.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:386.2,390.16 4 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:390.16,392.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:394.2,394.15 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:394.15,395.35 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:395.35,397.4 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:400.2,404.37 3 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:404.37,405.59 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:405.59,407.4 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:410.2,410.70 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:410.70,411.59 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:411.59,413.4 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:417.2,417.29 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:417.29,421.31 3 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:421.31,422.35 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:422.35,425.54 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:425.54,427.6 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:427.11,430.6 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:431.5,431.10 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:435.3,435.17 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:435.17,437.4 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:440.2,440.42 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:443.68,444.29 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:444.29,446.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:448.2,449.9 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:449.9,451.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:452.2,456.16 4 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:456.16,458.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:460.2,460.15 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:460.15,461.35 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:461.35,463.4 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:466.2,468.37 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:468.37,471.17 2 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:471.17,473.4 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:474.3,474.40 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:474.40,476.4 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:479.2,479.70 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:479.70,482.17 2 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:482.17,484.4 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:485.3,485.40 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:485.40,487.4 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:490.2,490.32 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:490.32,492.3 1 0 -github.com/echovault/echovault/internal/modules/acl/commands.go:494.2,494.42 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:497.36,507.84 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:507.84,513.5 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:522.84,528.5 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:537.86,543.7 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:552.86,558.7 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:567.86,573.7 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:582.86,588.7 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:598.86,604.7 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:613.86,619.7 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:628.86,634.7 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:646.86,652.7 1 1 -github.com/echovault/echovault/internal/modules/acl/commands.go:661.86,667.7 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:53.31,55.39 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:55.39,57.3 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:58.2,59.51 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:59.51,61.3 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:63.2,64.37 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:64.37,66.3 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:67.2,68.49 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:68.49,70.3 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:72.2,73.53 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:73.53,75.3 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:76.2,77.54 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:77.54,79.3 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:81.2,82.43 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:82.43,84.3 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:85.2,86.55 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:86.55,88.3 1 0 -github.com/echovault/echovault/internal/modules/acl/user.go:91.2,91.64 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:91.64,97.3 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:100.79,102.32 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:102.32,103.24 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:103.24,105.12 2 0 -github.com/echovault/echovault/internal/modules/acl/user.go:107.3,107.25 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:109.2,109.33 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:109.33,110.41 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:110.41,113.4 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:114.3,114.17 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:114.17,116.4 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:118.2,118.8 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:121.50,122.26 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:122.26,124.35 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:124.35,126.4 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:127.3,127.36 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:127.36,129.4 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:131.3,131.37 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:131.37,137.12 3 1 -github.com/echovault/echovault/internal/modules/acl/user.go:139.3,139.20 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:139.20,140.84 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:140.84,142.5 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:143.4,143.12 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:145.3,145.20 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:145.20,146.84 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:146.84,148.5 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:149.4,149.12 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:152.3,152.43 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:152.43,155.12 3 1 -github.com/echovault/echovault/internal/modules/acl/user.go:157.3,157.46 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:157.46,159.12 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:161.3,161.36 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:161.36,162.21 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:162.21,164.13 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:166.4,166.21 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:166.21,168.13 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:172.3,172.40 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:172.40,176.12 4 0 -github.com/echovault/echovault/internal/modules/acl/user.go:178.3,178.93 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:178.93,183.12 5 1 -github.com/echovault/echovault/internal/modules/acl/user.go:185.3,185.57 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:185.57,188.12 3 1 -github.com/echovault/echovault/internal/modules/acl/user.go:190.3,190.57 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:190.57,193.12 3 1 -github.com/echovault/echovault/internal/modules/acl/user.go:196.3,196.44 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:196.44,198.12 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:200.3,200.36 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:200.36,201.21 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:201.21,203.13 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:205.4,205.21 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:205.21,207.13 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:211.3,211.44 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:211.44,214.12 3 1 -github.com/echovault/echovault/internal/modules/acl/user.go:216.3,216.66 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:216.66,217.21 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:217.21,219.13 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:221.4,221.21 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:221.21,223.13 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:229.2,229.26 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:229.26,230.39 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:230.39,233.4 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:236.2,236.26 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:236.26,238.42 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:238.42,241.4 2 0 -github.com/echovault/echovault/internal/modules/acl/user.go:243.3,243.43 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:243.43,248.4 4 1 -github.com/echovault/echovault/internal/modules/acl/user.go:250.3,250.60 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:250.60,254.4 3 1 -github.com/echovault/echovault/internal/modules/acl/user.go:256.3,256.46 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:256.46,259.4 2 1 -github.com/echovault/echovault/internal/modules/acl/user.go:262.2,262.12 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:265.36,279.41 12 0 -github.com/echovault/echovault/internal/modules/acl/user.go:279.41,280.65 1 0 -github.com/echovault/echovault/internal/modules/acl/user.go:280.65,282.4 1 0 -github.com/echovault/echovault/internal/modules/acl/user.go:282.6,284.4 1 0 -github.com/echovault/echovault/internal/modules/acl/user.go:287.2,287.18 1 0 -github.com/echovault/echovault/internal/modules/acl/user.go:290.38,303.2 12 1 -github.com/echovault/echovault/internal/modules/acl/user.go:305.40,320.2 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:322.46,323.24 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:323.24,325.3 1 1 -github.com/echovault/echovault/internal/modules/acl/user.go:326.2,326.26 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 0 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 0 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 0 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 0 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 0 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 0 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 0 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 0 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 0 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 0 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 0 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 0 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 1 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 1 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 1 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 1 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 0 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 0 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 0 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 0 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 0 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 0 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 0 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 0 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 0 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 0 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 0 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 0 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 0 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 0 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 0 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 0 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 0 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 0 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 0 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 0 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 1 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 1 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 1 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 0 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 0 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 0 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 0 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 0 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 0 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 0 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 0 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 0 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 0 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 1 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 1 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 0 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 1 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 1 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 0 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 1 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 1 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 0 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 0 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 0 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 0 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 0 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 0 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 0 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 0 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 0 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 0 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 0 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 0 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 0 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 0 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 0 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 0 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 0 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 0 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 0 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 0 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 0 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 0 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 0 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 0 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 0 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 0 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 0 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 1 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 1 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 1 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 1 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 1 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 1 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 1 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 1 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 1 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 1 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 1 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 1 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 1 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 1 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 0 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 0 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 0 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 0 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 0 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 0 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 0 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 0 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 0 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 0 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 0 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:111.9,115.56 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:115.56,117.4 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:118.3,118.53 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:118.53,122.37 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:122.37,123.67 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:123.67,124.53 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:124.53,125.59 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:125.59,129.8 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:131.6,131.14 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:133.5,133.54 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:133.54,136.6 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:138.9,138.61 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:138.61,142.37 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:142.37,143.67 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:143.67,144.53 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:144.53,146.24 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:146.24,149.8 2 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:151.6,151.14 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:153.5,153.33 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:153.33,156.6 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:158.9,158.60 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:158.60,162.37 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:162.37,163.67 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:163.67,164.53 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:164.53,165.55 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:165.55,169.8 3 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:171.6,171.14 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:173.5,173.50 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:173.50,176.6 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:178.9,180.4 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:181.3,182.26 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:183.10,184.54 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:188.75,190.2 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:192.36,200.84 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:200.84,204.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:213.84,217.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:225.86,229.7 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:238.86,242.7 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:252.86,256.7 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:267.84,271.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:272.73,273.49 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:273.49,275.6 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:276.5,276.45 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:285.84,289.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:290.73,292.18 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:292.18,294.6 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:295.5,295.53 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:304.84,308.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:309.73,310.47 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:310.47,312.6 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:313.5,313.45 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:321.84,325.5 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:335.86,339.7 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:340.75,341.34 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:341.34,343.8 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:344.7,345.34 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:345.34,347.8 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:348.7,348.75 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:348.75,350.8 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:351.7,351.47 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:361.86,365.7 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:366.75,367.35 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:367.35,369.8 1 0 +github.com/echovault/echovault/internal/modules/admin/commands.go:370.7,371.47 2 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:380.86,384.7 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:385.75,388.38 3 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:388.38,390.8 1 1 +github.com/echovault/echovault/internal/modules/admin/commands.go:391.7,391.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:34.67,36.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:36.16,38.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:40.2,47.16 7 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:47.16,49.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:53.2,53.17 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:53.17,54.17 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:54.17,56.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:56.9,58.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:61.2,61.45 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:61.45,63.17 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:63.17,65.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:66.8,66.52 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:66.52,68.16 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:68.16,70.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:73.2,75.17 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:75.17,77.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:80.2,80.29 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:80.29,82.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:84.2,84.17 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:87.68,89.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:89.16,91.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:93.2,96.41 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:96.41,97.15 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:97.15,99.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:103.2,103.65 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:103.65,105.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:107.2,107.42 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:110.67,112.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:112.16,114.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:115.2,118.16 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:118.16,120.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:122.2,124.51 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:127.68,129.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:129.16,131.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:133.2,134.74 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:134.74,135.19 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:135.19,137.12 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:139.3,139.41 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:142.2,144.41 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:144.41,145.24 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:145.24,147.12 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:149.3,149.96 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:152.2,152.19 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:155.67,157.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:157.16,159.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:160.2,161.76 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:161.76,162.14 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:162.14,163.12 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:165.3,166.17 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:166.17,168.12 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:170.3,170.13 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:172.2,172.51 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:175.71,177.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:177.16,179.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:181.2,184.16 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:184.16,186.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:188.2,189.31 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:189.31,191.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:193.2,195.30 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:198.74,200.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:200.16,202.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:204.2,207.16 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:207.16,209.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:211.2,213.31 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:213.31,215.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:217.2,218.57 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:218.57,220.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:222.2,222.47 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:225.67,227.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:227.16,229.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:231.2,236.16 4 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:236.16,238.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:240.2,242.31 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:242.31,244.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:246.2,247.50 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:247.50,249.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:251.2,251.12 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:251.12,253.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:255.2,255.47 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:258.70,260.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:260.16,262.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:264.2,269.16 4 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:269.16,271.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:272.2,273.53 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:273.53,275.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:277.2,277.16 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:277.16,279.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:281.2,281.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:281.30,284.3 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:286.2,288.44 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:289.12,290.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:290.39,292.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:293.3,293.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:294.12,295.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:295.39,297.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:298.3,298.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:299.12,300.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:300.39,302.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:303.3,303.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:303.39,305.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:306.3,306.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:307.12,308.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:308.39,309.40 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:309.40,311.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:312.4,312.58 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:314.3,314.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:315.10,316.82 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:319.2,319.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:322.72,324.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:324.16,326.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:328.2,333.16 4 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:333.16,335.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:336.2,337.55 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:337.55,339.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:341.2,341.16 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:341.16,343.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:345.2,345.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:345.30,348.3 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:350.2,352.44 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:353.12,354.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:354.39,356.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:357.3,357.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:358.12,359.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:359.39,361.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:362.3,362.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:363.12,364.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:364.39,366.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:367.3,367.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:367.39,369.4 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:370.3,370.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:371.12,372.39 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:372.39,373.40 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:373.40,375.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:376.4,376.58 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:378.3,378.57 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:379.10,380.82 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:383.2,383.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:386.68,389.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:389.16,391.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:393.2,401.32 6 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:401.32,404.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:404.8,406.35 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:407.15,410.18 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:410.18,412.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:413.12,414.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:415.14,416.23 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:417.11,419.62 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:421.3,421.33 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:425.2,425.115 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:425.115,427.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:430.2,430.54 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:433.68,436.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:436.16,438.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:440.2,448.32 6 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:448.32,451.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:451.8,453.35 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:454.15,457.18 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:457.18,459.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:460.12,461.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:462.14,463.23 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:464.11,466.62 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:468.3,468.33 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:472.2,472.115 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:472.115,474.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:477.2,477.54 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:480.70,483.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:483.16,485.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:488.2,489.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:489.16,491.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:493.2,501.32 6 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:501.32,504.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:504.8,506.35 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:507.15,509.18 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:509.18,511.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:512.12,513.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:514.14,515.23 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:516.11,518.62 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:520.3,520.41 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:524.2,524.115 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:524.115,526.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:529.2,529.54 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:532.70,535.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:535.16,537.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:540.2,541.16 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:541.16,543.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:545.2,553.32 6 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:553.32,556.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:556.8,558.35 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:559.15,561.18 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:561.18,563.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:564.12,565.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:566.14,567.23 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:568.11,570.62 2 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:572.3,572.41 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:576.2,576.115 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:576.115,578.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:581.2,581.54 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:584.70,585.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:585.30,587.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:589.2,596.28 5 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:596.28,598.3 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:601.2,601.99 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:601.99,603.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:606.2,606.65 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:606.65,608.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:610.2,610.31 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:613.69,614.30 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:614.30,616.3 1 0 +github.com/echovault/echovault/internal/modules/generic/commands.go:618.2,618.54 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:618.54,621.3 2 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:623.2,625.42 3 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:628.36,865.84 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:865.84,869.5 1 1 +github.com/echovault/echovault/internal/modules/generic/commands.go:884.84,888.5 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:24.73,25.34 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:25.34,27.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:28.2,32.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:35.74,36.25 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:36.25,38.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:39.2,40.30 2 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:40.30,41.15 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:41.15,43.4 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:45.2,49.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:52.73,53.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:53.19,55.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:56.2,60.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:63.74,64.18 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:64.18,66.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:67.2,71.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:74.73,75.18 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:75.18,77.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:78.2,82.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:85.77,86.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:86.19,88.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:89.2,93.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:96.80,97.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:97.19,99.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:100.2,104.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:107.73,108.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:108.19,110.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:111.2,115.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:118.76,119.34 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:119.34,121.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:122.2,126.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:129.78,130.34 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:130.34,132.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:133.2,137.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:140.74,141.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:141.19,143.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:144.2,146.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:149.74,150.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:150.19,152.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:153.2,155.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:158.76,159.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:159.19,161.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:162.2,164.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:167.76,168.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:168.19,170.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:171.2,173.8 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:176.76,177.19 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:177.19,179.3 1 1 +github.com/echovault/echovault/internal/modules/generic/key_funcs.go:180.2,182.8 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:32.100,33.19 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:33.19,35.3 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:36.2,36.33 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:37.13,39.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:41.12,42.27 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:42.27,44.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:45.3,46.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:48.12,49.27 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:49.27,51.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:52.3,53.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:55.12,56.19 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:56.19,58.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:59.3,59.30 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:59.30,61.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:62.3,64.17 3 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:64.17,66.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:67.3,68.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:70.12,71.19 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:71.19,73.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:74.3,74.30 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:74.30,76.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:77.3,79.17 3 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:79.17,81.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:82.3,83.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:85.14,86.19 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:86.19,88.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:89.3,89.30 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:89.30,91.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:92.3,94.17 3 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:94.17,96.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:97.3,98.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:100.14,101.19 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:101.19,103.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:104.3,104.30 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:104.30,106.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:107.3,109.17 3 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:109.17,111.4 1 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:112.3,113.55 2 1 +github.com/echovault/echovault/internal/modules/generic/utils.go:115.10,116.96 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:28.68,30.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:30.16,32.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:34.2,38.36 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:38.36,40.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:42.2,42.49 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:42.49,44.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:46.2,46.16 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:46.16,47.17 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:47.17,49.4 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:50.3,50.95 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:50.95,52.4 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:53.3,53.59 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:56.2,57.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:57.9,59.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:61.2,62.36 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:62.36,63.53 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:63.53,64.26 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:64.26,67.5 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:68.4,68.12 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:70.3,71.13 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:73.2,73.91 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:73.91,75.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:77.2,77.51 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:80.68,82.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:82.16,84.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:86.2,90.16 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:90.16,92.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:94.2,95.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:95.9,97.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:99.2,102.31 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:102.31,104.19 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:104.19,106.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:108.3,108.34 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:108.34,110.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:112.3,112.31 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:112.31,114.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:116.3,116.35 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:116.35,119.12 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:121.3,121.32 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:124.2,124.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:127.71,129.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:129.16,131.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:133.2,137.16 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:137.16,139.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:141.2,142.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:142.9,144.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:146.2,149.31 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:149.31,151.19 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:151.19,153.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:155.3,155.34 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:155.34,157.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:159.3,159.35 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:159.35,162.12 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:164.3,164.31 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:164.31,166.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:168.3,168.18 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:171.2,171.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:174.69,176.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:176.16,178.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:180.2,183.16 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:183.16,185.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:187.2,188.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:188.9,190.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:192.2,193.27 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:193.27,194.32 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:194.32,196.12 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:198.3,198.33 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:198.33,201.12 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:203.3,203.29 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:203.29,205.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:208.2,208.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:211.74,213.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:213.16,215.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:217.2,221.30 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:221.30,223.17 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:223.17,225.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:226.3,226.13 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:226.13,228.4 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:229.3,229.12 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:232.2,233.30 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:233.30,234.57 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:234.57,236.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:236.9,238.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:241.2,241.16 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:241.16,243.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:245.2,246.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:246.9,248.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:251.2,251.24 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:251.24,253.17 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:253.17,255.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:256.3,256.34 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:256.34,258.18 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:258.18,259.36 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:259.36,261.14 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:263.5,263.37 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:263.37,266.14 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:268.5,268.33 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:268.33,270.14 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:274.3,274.26 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:278.2,279.29 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:279.29,281.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:284.2,286.46 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:286.46,290.16 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:290.16,291.59 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:291.59,293.5 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:297.2,298.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:298.16,300.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:301.2,301.38 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:301.38,303.17 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:303.17,304.41 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:304.41,306.13 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:308.4,308.42 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:308.42,311.13 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:313.4,313.38 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:313.38,315.13 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:320.2,320.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:323.68,325.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:325.16,327.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:329.2,332.16 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:332.16,334.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:336.2,337.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:337.9,339.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:341.2,341.55 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:344.69,346.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:346.16,348.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:350.2,353.16 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:353.16,355.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:357.2,358.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:358.9,360.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:362.2,363.29 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:363.29,365.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:367.2,367.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:370.71,372.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:372.16,374.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:376.2,383.58 6 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:383.58,385.17 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:385.17,387.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:388.3,388.21 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:389.8,391.17 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:391.17,393.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:394.3,394.19 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:397.2,397.16 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:397.16,399.59 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:399.59,401.93 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:401.93,403.5 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:404.4,404.96 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:405.9,407.93 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:407.93,409.5 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:410.4,410.60 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:414.2,415.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:415.9,417.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:419.2,419.24 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:419.24,421.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:423.2,423.28 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:424.10,425.69 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:426.11,428.59 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:428.59,430.4 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:430.9,432.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:433.15,435.59 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:435.59,437.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:437.9,439.4 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:442.2,442.91 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:442.91,444.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:446.2,446.40 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:446.40,448.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:450.2,451.47 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:454.71,456.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:456.16,458.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:460.2,463.16 3 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:463.16,465.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:467.2,468.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:468.9,470.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:472.2,473.33 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:473.33,475.34 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:475.34,477.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:478.3,478.35 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:478.35,481.4 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:482.3,482.31 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:482.31,484.4 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:487.2,487.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:490.71,492.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:492.16,494.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:496.2,500.16 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:500.16,502.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:504.2,505.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:505.9,507.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:509.2,509.24 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:509.24,511.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:513.2,513.30 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:516.68,518.16 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:518.16,520.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:522.2,526.16 4 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:526.16,528.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:530.2,531.9 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:531.9,533.3 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:535.2,537.31 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:537.31,538.25 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:538.25,541.4 2 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:544.2,544.91 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:544.91,546.3 1 0 +github.com/echovault/echovault/internal/modules/hash/commands.go:548.2,548.51 1 1 +github.com/echovault/echovault/internal/modules/hash/commands.go:551.36,675.2 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:23.74,24.18 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:24.18,26.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:27.2,31.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:34.76,35.18 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:35.18,37.3 1 0 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:38.2,42.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:45.74,46.18 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:46.18,48.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:49.2,53.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:56.77,57.18 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:57.18,59.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:60.2,64.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:67.75,68.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:68.19,70.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:71.2,75.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:78.80,79.34 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:79.34,81.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:82.2,82.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:82.19,88.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:89.2,93.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:96.74,97.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:97.19,99.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:100.2,104.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:107.75,108.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:108.19,110.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:111.2,115.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:118.77,119.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:119.19,121.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:122.2,126.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:129.77,130.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:130.19,132.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:133.2,137.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:140.77,141.19 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:141.19,143.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:144.2,148.8 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:151.74,152.18 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:152.18,154.3 1 1 +github.com/echovault/echovault/internal/modules/hash/key_funcs.go:155.2,159.8 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:27.68,29.16 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:29.16,31.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:33.2,36.16 3 1 +github.com/echovault/echovault/internal/modules/list/commands.go:36.16,39.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:41.2,41.90 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:41.90,43.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:45.2,45.57 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:48.70,50.16 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:50.16,52.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:54.2,58.9 4 1 +github.com/echovault/echovault/internal/modules/list/commands.go:58.9,60.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:62.2,62.16 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:62.16,64.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:66.2,67.9 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:67.9,69.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:71.2,71.40 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:71.40,73.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:75.2,75.57 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:78.70,80.16 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:80.16,82.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:84.2,89.24 5 1 +github.com/echovault/echovault/internal/modules/list/commands.go:89.24,91.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:93.2,93.16 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:93.16,95.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:97.2,98.9 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:98.9,100.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:103.2,103.40 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:103.40,105.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:108.2,108.51 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:108.51,110.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:112.2,115.15 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:115.15,117.43 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:117.43,120.4 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:121.3,121.20 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:125.2,125.18 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:125.18,127.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:132.2,136.17 4 1 +github.com/echovault/echovault/internal/modules/list/commands.go:136.17,138.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:140.2,140.13 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:140.13,143.18 3 1 +github.com/echovault/echovault/internal/modules/list/commands.go:143.18,145.4 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:145.9,147.4 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:150.2,150.19 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:153.68,155.16 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:155.16,157.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:159.2,163.9 4 1 +github.com/echovault/echovault/internal/modules/list/commands.go:163.9,165.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:167.2,167.16 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:167.16,169.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:171.2,172.9 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:172.9,174.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:176.2,176.40 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:176.40,178.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:180.2,181.91 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:181.91,183.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:185.2,185.42 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:188.69,190.16 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:190.16,192.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:194.2,199.24 5 1 +github.com/echovault/echovault/internal/modules/list/commands.go:199.24,201.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:203.2,203.30 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:203.30,205.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:207.2,207.16 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:207.16,209.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:211.2,212.9 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:212.9,214.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:216.2,216.40 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:216.40,218.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:220.2,220.34 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:220.34,221.100 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:221.100,223.4 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:224.3,224.43 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:227.2,227.102 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:227.102,229.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:230.2,230.42 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:233.68,235.16 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:235.16,237.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:239.2,244.9 5 1 +github.com/echovault/echovault/internal/modules/list/commands.go:244.9,246.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:248.2,250.16 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:250.16,252.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:254.2,255.9 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:255.9,257.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:259.2,259.9 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:260.10,260.10 0 0 +github.com/echovault/echovault/internal/modules/list/commands.go:262.17,264.34 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:264.34,265.26 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:265.26,266.10 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:268.4,268.43 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:268.43,271.5 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:273.17,275.39 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:275.39,276.26 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:276.26,277.10 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:279.4,279.43 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:279.43,282.5 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:286.2,286.61 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:286.61,288.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:290.2,290.91 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:290.91,292.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:294.2,294.42 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:297.69,299.16 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:299.16,301.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:303.2,308.116 5 1 +github.com/echovault/echovault/internal/modules/list/commands.go:308.116,310.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:312.2,312.51 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:312.51,314.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:316.2,320.33 4 1 +github.com/echovault/echovault/internal/modules/list/commands.go:320.33,322.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:324.2,324.19 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:325.14,328.38 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:328.38,329.26 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:329.26,331.6 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:333.5,333.50 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:336.15,339.38 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:339.38,340.26 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:340.26,342.6 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:344.5,344.66 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:349.2,349.16 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:349.16,351.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:353.2,353.42 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:356.69,358.16 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:358.16,360.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:362.2,364.42 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:364.42,366.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:368.2,371.16 3 1 +github.com/echovault/echovault/internal/modules/list/commands.go:371.16,372.45 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:373.17,374.64 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:375.11,376.104 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:376.104,378.5 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:382.2,384.9 3 1 +github.com/echovault/echovault/internal/modules/list/commands.go:384.9,386.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:388.2,388.109 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:388.109,390.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:392.2,392.66 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:395.69,397.16 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:397.16,399.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:401.2,406.42 4 1 +github.com/echovault/echovault/internal/modules/list/commands.go:406.42,408.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:410.2,410.16 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:410.16,411.45 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:412.17,413.64 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:414.11,415.104 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:415.104,417.5 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:421.2,423.9 3 1 +github.com/echovault/echovault/internal/modules/list/commands.go:423.9,425.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:427.2,427.109 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:427.109,429.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:430.2,430.66 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:433.67,435.16 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:435.16,437.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:439.2,442.16 3 1 +github.com/echovault/echovault/internal/modules/list/commands.go:442.16,444.3 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:446.2,447.9 2 1 +github.com/echovault/echovault/internal/modules/list/commands.go:447.9,449.3 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:451.2,451.44 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:452.10,453.96 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:453.96,455.4 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:456.3,456.54 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:457.14,458.106 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:458.106,460.4 1 0 +github.com/echovault/echovault/internal/modules/list/commands.go:461.3,461.64 1 1 +github.com/echovault/echovault/internal/modules/list/commands.go:465.36,588.2 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:23.75,24.18 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:24.18,26.3 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:27.2,31.8 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:34.73,35.19 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:35.19,37.3 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:38.2,42.8 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:45.74,46.19 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:46.19,48.3 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:49.2,53.8 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:56.76,57.19 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:57.19,59.3 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:60.2,64.8 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:67.76,68.19 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:68.19,70.3 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:71.2,75.8 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:78.74,79.19 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:79.19,81.3 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:82.2,86.8 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:89.75,90.19 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:90.19,92.3 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:93.2,97.8 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:100.74,101.19 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:101.19,103.3 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:104.2,108.8 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:111.75,112.18 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:112.18,114.3 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:115.2,119.8 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:122.75,123.19 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:123.19,125.3 1 1 +github.com/echovault/echovault/internal/modules/list/key_funcs.go:126.2,130.8 1 1 github.com/echovault/echovault/internal/modules/pubsub/channel.go:34.51,35.32 1 1 github.com/echovault/echovault/internal/modules/pubsub/channel.go:35.32,37.3 1 1 github.com/echovault/echovault/internal/modules/pubsub/channel.go:41.57,42.32 1 1 @@ -7222,86 +1733,1279 @@ github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:263.2,263.20 1 github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:266.47,271.38 4 0 github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:271.38,273.3 1 0 github.com/echovault/echovault/internal/modules/pubsub/pubsub.go:275.2,275.17 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 0 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 0 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 0 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 0 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 0 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 0 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 0 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 0 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 0 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 0 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 0 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 0 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 0 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 0 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:26.68,28.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:28.16,30.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:32.2,37.16 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:37.16,39.91 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:39.91,41.4 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:42.3,42.70 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:45.2,46.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:46.9,48.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:50.2,52.51 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:55.69,57.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:57.16,59.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:61.2,64.16 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:64.16,66.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:68.2,69.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:69.9,71.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:73.2,75.57 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:78.69,80.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:80.16,82.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:84.2,87.34 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:87.34,89.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:91.2,92.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:92.9,94.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:96.2,97.41 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:97.41,99.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:99.10,100.12 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:102.3,102.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:105.2,109.26 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:109.26,111.24 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:111.24,113.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:116.2,116.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:119.74,121.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:121.16,123.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:125.2,129.34 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:129.34,131.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:133.2,134.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:134.9,136.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:138.2,139.40 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:139.40,141.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:141.10,142.12 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:144.3,144.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:147.2,152.99 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:152.99,154.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:156.2,156.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:159.70,161.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:161.16,163.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:165.2,169.37 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:169.37,170.14 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:170.14,172.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:173.3,174.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:174.10,177.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:178.3,178.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:181.2,181.20 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:181.20,183.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:185.2,189.26 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:189.26,191.24 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:191.24,193.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:196.2,196.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:199.74,201.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:201.16,203.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:205.2,209.67 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:209.67,211.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:212.2,212.35 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:212.35,214.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:215.2,215.20 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:215.20,217.38 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:217.38,219.4 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:221.3,221.71 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:221.71,223.4 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:223.9,225.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:228.2,230.37 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:230.37,231.14 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:231.14,233.4 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:234.3,235.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:235.10,238.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:239.3,239.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:242.2,242.20 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:242.20,244.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:246.2,248.69 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:251.75,253.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:253.16,255.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:257.2,261.37 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:261.37,262.14 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:262.14,264.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:265.3,266.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:266.10,269.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:270.3,270.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:273.2,276.104 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:276.104,278.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:280.2,280.69 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:283.73,285.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:285.16,287.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:289.2,292.16 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:292.16,294.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:296.2,297.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:297.9,299.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:301.2,301.38 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:301.38,303.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:305.2,305.30 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:308.72,310.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:310.16,312.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:314.2,317.16 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:317.16,319.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:321.2,322.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:322.9,324.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:326.2,329.26 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:329.26,331.24 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:331.24,333.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:336.2,336.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:339.74,341.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:341.16,343.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:345.2,349.16 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:349.16,351.29 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:351.29,353.27 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:353.27,355.5 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:357.3,357.26 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:360.2,361.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:361.9,363.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:365.2,366.36 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:366.36,367.31 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:367.31,369.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:369.9,371.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:373.2,375.25 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:378.69,380.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:380.16,382.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:384.2,388.24 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:388.24,390.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:392.2,395.9 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:395.9,397.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:399.2,400.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:400.9,402.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:404.2,406.49 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:409.68,411.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:411.16,413.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:415.2,419.30 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:419.30,421.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:421.10,423.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:424.3,424.12 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:427.2,427.16 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:427.16,429.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:431.2,432.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:432.9,434.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:436.2,439.28 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:439.28,441.26 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:441.26,443.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:446.2,446.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:449.75,451.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:451.16,453.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:455.2,459.30 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:459.30,461.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:461.10,463.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:464.3,464.12 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:467.2,467.16 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:467.16,469.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:471.2,472.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:472.9,474.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:476.2,479.28 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:479.28,481.26 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:481.26,483.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:486.2,486.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:489.68,491.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:491.16,493.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:495.2,499.16 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:499.16,501.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:503.2,504.9 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:504.9,506.3 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:508.2,510.51 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:513.70,515.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:515.16,517.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:519.2,522.33 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:522.33,524.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:524.10,526.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:527.3,527.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:530.2,533.35 3 1 +github.com/echovault/echovault/internal/modules/set/commands.go:533.35,535.33 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:535.33,537.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:540.2,540.25 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:543.75,545.16 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:545.16,547.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:549.2,554.33 4 1 +github.com/echovault/echovault/internal/modules/set/commands.go:554.33,556.10 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:556.10,558.4 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:559.3,559.27 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:562.2,564.100 2 1 +github.com/echovault/echovault/internal/modules/set/commands.go:564.100,566.3 1 0 +github.com/echovault/echovault/internal/modules/set/commands.go:567.2,567.65 1 1 +github.com/echovault/echovault/internal/modules/set/commands.go:570.36,723.2 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:25.74,26.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:26.18,28.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:29.2,33.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:36.75,37.19 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:37.19,39.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:40.2,44.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:47.75,48.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:48.18,50.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:51.2,55.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:58.80,59.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:59.18,61.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:62.2,66.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:69.76,70.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:70.18,72.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:73.2,77.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:80.80,81.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:81.18,83.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:85.2,85.56 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:85.56,87.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:89.2,89.20 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:89.20,95.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:97.2,101.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:104.81,105.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:105.18,107.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:108.2,112.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:115.79,116.19 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:116.19,118.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:119.2,123.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:126.78,127.19 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:127.19,129.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:130.2,134.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:137.80,138.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:138.18,140.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:141.2,145.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:148.75,149.19 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:149.19,151.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:152.2,156.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:159.74,160.34 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:160.34,162.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:163.2,167.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:170.81,171.34 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:171.34,173.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:174.2,178.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:181.74,182.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:182.18,184.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:185.2,189.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:192.76,193.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:193.18,195.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:196.2,200.8 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:203.81,204.18 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:204.18,206.3 1 1 +github.com/echovault/echovault/internal/modules/set/key_funcs.go:207.2,211.8 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:28.34,35.2 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:37.41,39.26 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:39.26,40.23 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:40.23,43.4 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:45.2,46.14 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:49.43,51.2 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:53.35,55.32 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:55.32,57.3 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:58.2,58.12 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:61.35,63.2 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:65.47,68.16 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:68.16,70.3 1 0 +github.com/echovault/echovault/internal/modules/set/set.go:72.2,72.49 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:72.49,74.3 1 0 +github.com/echovault/echovault/internal/modules/set/set.go:76.2,80.15 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:80.15,82.47 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:82.47,85.4 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:86.8,88.43 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:88.43,90.38 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:90.38,92.59 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:92.59,94.6 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:95.5,95.8 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:100.2,100.12 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:103.44,105.26 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:105.26,106.24 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:106.24,109.4 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:111.2,112.14 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:115.41,119.2 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:121.41,123.2 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:126.46,129.27 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:129.27,130.31 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:130.31,131.24 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:131.24,133.5 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:136.2,137.13 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:140.54,141.22 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:141.22,143.3 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:144.2,146.10 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:152.57,154.19 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:155.9,156.24 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:157.9,160.43 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:160.43,161.56 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:161.56,163.10 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:165.4,165.32 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:165.32,167.5 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:169.3,169.36 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:170.10,172.11 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:172.11,174.4 1 0 +github.com/echovault/echovault/internal/modules/set/set.go:175.3,176.11 2 1 +github.com/echovault/echovault/internal/modules/set/set.go:176.11,178.4 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:179.3,179.42 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:184.31,185.19 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:186.9,187.17 1 1 +github.com/echovault/echovault/internal/modules/set/set.go:188.9,191.15 3 1 +github.com/echovault/echovault/internal/modules/set/set.go:192.10,195.28 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:29.68,31.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:31.16,33.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:35.2,45.43 8 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:45.43,46.29 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:46.29,47.9 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:49.3,49.55 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:50.15,51.85 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:51.85,53.5 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:54.16,55.25 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:56.12,57.25 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:61.2,61.77 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:61.77,63.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:65.2,67.63 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:67.63,68.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:68.15,69.12 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:71.3,72.23 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:73.11,74.64 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:75.15,77.49 2 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:77.49,83.5 2 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:84.4,84.49 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:84.49,90.5 2 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:91.16,96.6 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:97.12,102.6 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:107.2,107.27 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:107.27,109.34 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:109.34,110.70 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:110.70,113.61 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:113.61,115.6 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:116.5,116.13 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:118.4,118.70 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:118.70,122.36 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:122.36,124.6 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:125.5,125.13 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:127.4,127.39 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:127.39,129.13 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:131.4,131.41 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:131.41,134.25 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:134.25,136.6 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:137.5,137.13 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:139.4,139.55 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:143.2,143.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:143.15,146.10 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:146.10,148.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:149.3,150.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:150.17,152.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:154.3,154.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:154.18,157.4 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:159.3,159.52 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:163.2,164.90 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:164.90,166.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:168.2,168.63 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:171.69,173.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:173.16,175.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:177.2,180.16 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:180.16,182.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:184.2,185.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:185.9,187.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:189.2,189.63 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:192.70,194.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:194.16,196.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:198.2,202.54 4 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:203.10,204.60 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:205.14,206.51 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:206.51,208.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:208.9,210.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:211.15,213.21 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:214.11,216.21 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:219.2,220.54 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:221.10,222.60 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:223.14,224.51 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:224.51,226.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:226.9,228.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:229.15,231.21 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:232.11,234.21 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:237.2,237.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:237.16,239.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:241.2,242.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:242.9,244.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:246.2,247.33 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:247.33,248.47 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:248.47,250.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:253.2,253.58 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:256.73,258.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:258.16,260.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:262.2,267.16 5 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:267.16,269.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:271.2,272.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:272.9,274.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:276.2,279.38 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:279.38,280.45 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:280.45,282.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:285.2,287.28 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:287.28,289.81 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:289.81,291.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:294.2,294.51 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:297.69,299.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:299.16,301.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:303.2,305.74 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:305.74,307.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:308.2,308.49 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:308.49,310.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:313.2,313.34 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:313.34,316.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:318.2,319.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:319.9,321.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:324.2,326.42 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:326.42,327.35 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:327.35,328.12 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:330.3,331.10 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:331.10,333.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:334.3,334.27 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:337.2,342.34 4 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:342.34,343.20 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:343.20,346.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:346.9,348.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:351.2,353.25 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:356.74,358.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:358.16,360.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:362.2,366.34 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:366.34,369.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:371.2,372.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:372.9,374.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:376.2,378.42 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:378.42,379.34 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:379.34,381.11 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:381.11,383.5 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:384.4,384.28 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:388.2,389.99 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:389.99,391.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:393.2,393.64 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:396.71,398.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:398.16,400.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:402.2,408.54 5 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:409.10,410.55 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:411.14,412.68 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:412.68,414.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:414.9,414.75 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:414.75,416.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:416.9,418.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:419.15,421.23 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:422.11,424.23 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:427.2,427.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:427.16,435.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:435.17,437.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:438.3,438.99 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:441.2,442.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:442.9,444.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:445.2,451.23 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:451.23,453.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:454.2,455.74 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:458.70,460.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:460.16,462.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:464.2,465.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:465.16,467.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:468.2,473.33 4 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:473.33,474.26 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:474.26,477.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:478.3,479.10 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:479.10,481.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:482.3,485.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:488.2,492.33 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:492.33,493.40 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:493.40,494.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:494.18,496.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:496.10,498.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:502.2,504.25 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:507.75,509.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:509.16,511.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:513.2,517.63 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:517.63,519.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:521.2,522.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:522.16,524.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:526.2,529.33 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:529.33,530.26 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:530.26,532.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:533.3,534.10 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:534.10,536.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:537.3,540.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:543.2,546.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:546.17,548.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:550.2,550.69 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:553.69,555.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:555.16,557.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:559.2,566.67 5 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:566.67,568.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:569.2,569.20 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:569.20,570.19 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:570.19,572.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:573.3,573.40 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:573.40,575.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:576.3,577.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:577.17,579.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:580.3,580.13 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:580.13,582.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:583.3,584.25 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:588.2,588.68 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:588.68,590.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:591.2,591.21 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:591.21,592.20 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:592.20,594.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:595.3,596.53 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:596.53,598.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:601.2,601.43 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:601.43,602.35 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:602.35,604.35 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:604.35,605.13 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:607.4,608.18 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:608.18,610.5 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:612.4,614.38 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:614.38,616.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:618.4,620.27 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:624.2,624.30 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:627.68,629.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:629.16,631.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:633.2,638.53 5 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:638.53,640.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:642.2,642.30 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:642.30,644.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:644.17,646.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:647.3,647.12 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:647.12,649.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:652.2,652.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:652.16,654.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:656.2,657.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:657.9,659.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:661.2,662.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:662.16,664.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:666.2,667.36 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:667.36,670.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:672.2,674.25 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:677.71,679.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:679.16,681.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:683.2,686.16 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:686.16,688.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:690.2,691.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:691.9,693.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:695.2,701.36 4 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:701.36,703.21 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:703.21,705.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:705.9,707.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:710.2,712.25 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:715.75,717.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:717.16,719.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:721.2,725.30 4 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:725.30,727.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:727.17,729.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:730.3,730.13 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:730.13,732.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:735.2,736.30 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:736.30,737.57 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:737.57,739.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:739.9,741.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:744.2,744.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:744.16,746.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:748.2,749.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:749.9,751.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:753.2,756.28 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:756.28,757.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:757.17,759.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:759.9,761.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:764.2,766.25 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:769.69,771.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:771.16,773.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:775.2,780.84 5 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:780.84,782.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:784.2,784.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:784.16,786.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:788.2,789.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:789.9,791.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:793.2,794.54 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:794.54,795.55 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:795.55,797.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:798.3,798.39 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:801.2,801.36 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:801.36,802.40 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:802.40,803.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:803.18,806.5 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:806.10,808.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:812.2,812.31 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:815.68,817.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:817.16,819.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:821.2,824.16 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:824.16,826.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:828.2,829.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:829.9,831.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:833.2,834.39 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:834.39,835.27 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:835.27,837.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:840.2,840.58 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:843.70,845.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:845.16,847.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:849.2,852.16 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:852.16,854.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:856.2,857.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:857.9,859.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:860.2,861.20 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:861.20,863.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:865.2,867.69 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:870.80,872.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:872.16,874.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:876.2,882.16 5 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:882.16,884.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:886.2,887.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:887.16,889.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:891.2,891.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:891.16,893.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:895.2,896.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:896.9,898.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:900.2,900.33 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:900.33,901.61 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:901.61,904.4 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:907.2,907.58 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:910.79,912.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:912.16,914.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:916.2,920.16 4 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:920.16,922.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:924.2,925.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:925.16,927.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:929.2,929.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:929.16,931.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:933.2,934.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:934.9,936.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:938.2,938.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:938.15,940.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:941.2,941.14 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:941.14,943.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:945.2,945.88 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:945.88,947.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:949.2,950.54 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:950.54,952.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:954.2,956.18 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:956.18,957.34 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:957.34,960.4 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:961.8,962.34 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:962.34,965.4 2 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:968.2,968.58 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:971.78,973.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:973.16,975.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:977.2,982.16 5 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:982.16,984.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:986.2,987.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:987.9,989.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:991.2,994.38 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:994.38,995.45 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:995.45,997.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1000.2,1003.28 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1003.28,1005.81 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1005.81,1008.4 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1011.2,1011.58 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1014.70,1016.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1016.16,1018.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1020.2,1031.76 10 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1031.76,1033.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1035.2,1035.73 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1035.73,1037.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1039.2,1039.65 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1039.65,1041.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1041.5,1043.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1043.8,1046.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1046.17,1048.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1049.3,1050.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1050.17,1052.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1055.2,1055.65 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1055.65,1057.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1057.5,1058.72 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1058.72,1060.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1061.3,1061.61 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1061.61,1063.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1064.3,1065.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1065.17,1067.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1068.3,1068.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1068.17,1070.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1071.3,1072.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1072.17,1074.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1077.2,1077.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1077.16,1079.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1081.2,1082.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1082.9,1084.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1086.2,1086.32 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1086.32,1088.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1089.2,1089.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1089.15,1091.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1093.2,1094.42 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1094.42,1095.55 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1095.55,1097.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1097.15,1099.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1100.4,1100.40 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1103.2,1103.40 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1103.40,1105.39 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1105.39,1106.46 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1106.46,1108.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1110.3,1110.55 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1110.55,1111.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1111.15,1113.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1114.4,1114.64 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1118.2,1120.35 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1120.35,1121.24 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1121.24,1122.9 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1124.3,1124.43 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1124.43,1125.85 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1125.85,1127.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1128.4,1128.12 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1130.3,1131.90 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1131.90,1133.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1136.2,1138.34 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1138.34,1139.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1139.17,1141.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1141.9,1143.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1146.2,1148.25 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1151.75,1153.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1153.16,1155.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1157.2,1168.73 11 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1168.73,1170.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1172.2,1172.65 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1172.65,1174.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1174.5,1176.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1176.8,1179.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1179.17,1181.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1182.3,1183.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1183.17,1185.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1188.2,1188.65 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1188.65,1190.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1190.5,1191.72 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1191.72,1193.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1194.3,1194.61 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1194.61,1196.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1197.3,1198.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1198.17,1200.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1201.3,1201.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1201.17,1203.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1204.3,1205.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1205.17,1207.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1210.2,1210.19 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1210.19,1212.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1214.2,1215.9 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1215.9,1217.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1219.2,1219.32 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1219.32,1221.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1222.2,1222.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1222.15,1224.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1226.2,1227.42 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1227.42,1228.55 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1228.55,1230.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1230.15,1232.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1233.4,1233.40 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1236.2,1236.40 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1236.40,1238.39 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1238.39,1239.46 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1239.46,1241.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1243.3,1243.55 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1243.55,1244.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1244.15,1246.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1247.4,1247.64 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1251.2,1253.35 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1253.35,1254.24 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1254.24,1255.9 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1257.3,1257.43 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1257.43,1258.85 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1258.85,1260.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1261.4,1261.12 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1263.3,1264.90 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1264.90,1266.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1269.2,1272.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1272.17,1274.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1276.2,1276.72 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1279.70,1280.57 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1280.57,1282.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1284.2,1285.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1285.16,1287.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1289.2,1294.33 4 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1294.33,1295.25 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1295.25,1297.11 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1297.11,1299.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1300.4,1303.6 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1307.2,1310.35 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1310.35,1311.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1311.17,1313.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1313.9,1315.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1318.2,1320.25 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1323.75,1325.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1325.16,1327.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1329.2,1332.73 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1332.73,1334.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1336.2,1337.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1337.16,1339.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1341.2,1346.33 4 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1346.33,1347.25 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1347.25,1349.11 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1349.11,1351.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1352.4,1355.6 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1359.2,1362.17 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1362.17,1364.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1366.2,1366.65 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/commands.go:1369.36,1641.2 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:25.74,26.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:26.18,28.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:29.2,33.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:36.75,37.19 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:37.19,39.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:40.2,44.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:47.76,48.19 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:48.19,50.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:51.2,55.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:58.75,59.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:59.18,61.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:63.2,63.63 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:63.63,65.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:67.2,67.27 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:67.27,73.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:75.2,79.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:82.80,83.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:83.18,85.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:86.2,90.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:93.77,94.19 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:94.19,96.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:97.2,101.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:104.76,105.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:105.18,107.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:108.2,108.58 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:108.58,111.39 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:111.39,113.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:114.3,114.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:116.2,116.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:116.18,122.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:123.2,123.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:123.17,129.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:130.2,130.84 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:133.81,134.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:134.18,136.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:137.2,137.58 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:137.58,141.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:143.2,143.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:143.18,149.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:151.2,151.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:151.17,157.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:159.2,159.84 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:162.75,163.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:163.18,165.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:166.2,166.54 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:166.54,168.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:169.2,169.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:169.18,175.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:176.2,176.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:176.17,182.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:183.2,183.84 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:186.77,187.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:187.18,189.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:190.2,194.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:197.74,198.34 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:198.34,200.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:201.2,205.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:208.81,209.34 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:209.34,211.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:212.2,216.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:219.75,220.34 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:220.34,222.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:223.2,227.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:230.74,231.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:231.18,233.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:234.2,238.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:241.78,242.18 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:242.18,244.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:245.2,249.8 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:252.76,253.19 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:253.19,255.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:256.2,260.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:263.84,264.19 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:264.19,266.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:267.2,271.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:274.85,275.19 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:275.19,277.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:278.2,282.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:285.86,286.19 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:286.19,288.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:289.2,293.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:296.79,297.19 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:297.19,299.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:300.2,304.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:307.77,308.35 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:308.35,310.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:311.2,315.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:318.81,319.35 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:319.35,321.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:322.2,326.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:329.76,330.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:330.18,332.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:333.2,333.58 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:333.58,336.39 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:336.39,338.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:339.3,339.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:341.2,341.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:341.18,347.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:348.2,348.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:348.17,354.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:355.2,355.84 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:358.81,359.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:359.18,361.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:362.2,362.58 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:362.58,365.39 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:365.39,367.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:368.3,368.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:370.2,370.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:370.18,376.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:377.2,377.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:377.17,383.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/key_funcs.go:384.2,384.84 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:48.53,52.28 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:52.28,58.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:59.2,59.10 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:62.46,64.2 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:66.49,68.2 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:70.58,75.44 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:75.44,77.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:79.2,81.15 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:81.15,83.47 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:83.47,86.4 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:87.8,89.43 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:89.43,91.58 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:91.58,93.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:93.7,95.57 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:95.57,97.6 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:98.5,98.8 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:103.2,103.12 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:106.46,108.32 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:108.32,113.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:114.2,114.12 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:117.41,119.2 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:123.16,125.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:125.16,127.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:128.2,129.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:129.16,131.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:132.2,133.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:133.16,135.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:136.2,137.16 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:137.16,139.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:140.2,140.51 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:140.51,142.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:143.2,143.57 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:143.57,145.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:147.2,149.36 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:149.36,150.29 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:150.29,151.30 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:151.30,161.5 3 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:162.4,162.101 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:162.101,164.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:165.4,170.35 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:170.35,172.5 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:174.3,174.20 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:177.2,177.28 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:177.28,178.38 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:178.38,180.29 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:180.29,186.36 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:186.36,188.6 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:190.4,190.12 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:192.3,192.38 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:192.38,194.30 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:194.30,201.5 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:202.4,202.12 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:205.3,205.76 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:205.76,207.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:208.3,212.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:214.2,214.19 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:217.44,218.21 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:218.21,221.3 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:222.2,222.14 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:225.73,227.71 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:227.71,229.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:230.2,230.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:230.15,232.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:233.2,233.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:233.16,235.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:237.2,239.54 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:239.54,240.39 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:240.39,242.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:243.3,243.39 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:246.2,246.29 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:246.29,247.24 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:247.24,248.9 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:250.3,252.17 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:252.17,254.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:257.2,257.20 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:260.64,262.28 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:262.28,263.33 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:263.33,264.29 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:264.29,266.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:269.2,269.12 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:279.70,280.24 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:281.9,282.39 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:283.9,285.52 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:285.52,290.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:291.3,291.30 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:292.9,295.52 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:295.52,297.48 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:297.48,302.13 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:305.4,307.42 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:307.42,309.23 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:310.17,311.26 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:312.17,313.46 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:314.14,316.46 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:323.4,323.34 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:327.3,327.52 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:327.52,328.65 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:328.65,330.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:330.7,335.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:337.3,337.30 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:338.10,345.40 4 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:345.40,346.37 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:346.37,349.13 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:351.4,353.42 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:353.42,354.23 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:355.17,356.26 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:357.17,358.46 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:359.14,361.46 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:367.3,367.41 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:367.41,368.65 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:368.65,370.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:370.7,372.5 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:374.3,374.30 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:379.74,380.24 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:381.9,382.39 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:383.9,385.52 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:385.52,390.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:391.3,391.30 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:392.9,395.52 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:395.52,397.48 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:397.48,398.13 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:401.4,403.42 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:403.42,405.23 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:406.17,407.26 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:408.17,409.46 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:410.14,412.46 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:419.4,419.34 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:421.3,421.30 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:422.10,428.40 4 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:428.40,429.37 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:429.37,430.13 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:432.4,434.42 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:434.42,435.23 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:436.17,437.26 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:438.17,439.46 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:440.14,442.46 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/sorted_set.go:448.3,448.30 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:24.97,26.60 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:26.60,28.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:29.2,29.24 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:29.24,30.48 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:30.48,31.85 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:31.85,32.10 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:34.4,35.18 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:35.18,37.5 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:38.4,38.32 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:42.2,43.62 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:43.62,45.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:46.2,46.26 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:46.26,47.94 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:47.94,49.4 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:50.3,50.53 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:53.2,54.63 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:54.63,56.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:57.2,57.27 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:57.27,59.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:62.2,63.85 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:63.85,64.26 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:64.26,65.12 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:67.3,67.31 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:67.31,69.12 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:71.3,71.41 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:71.41,73.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:76.2,77.30 2 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:77.30,79.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:79.8,81.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:83.2,83.55 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:83.55,85.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:85.8,85.31 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:85.31,86.34 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:86.34,88.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:91.2,91.50 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:94.69,95.25 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:95.25,97.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:98.2,100.9 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:100.9,102.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:103.2,103.69 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:103.69,105.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:106.2,106.20 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:109.65,110.23 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:110.23,112.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:113.2,115.9 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:115.9,117.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:118.2,118.67 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:118.67,120.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:121.2,121.18 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:124.59,125.20 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:125.20,127.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:128.2,130.9 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:130.9,132.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:133.2,133.34 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:133.34,135.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:136.2,136.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:139.53,140.17 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:140.17,142.3 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:143.2,145.9 3 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:145.9,147.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:148.2,148.35 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:148.35,150.3 1 0 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:151.2,151.15 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:154.61,155.31 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:156.10,157.13 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:158.12,159.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:159.16,161.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:162.3,162.13 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:163.12,164.16 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:164.16,166.4 1 1 +github.com/echovault/echovault/internal/modules/sorted_set/utils.go:167.3,167.13 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:55.56,56.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:56.30,58.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:61.59,62.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:62.30,64.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:67.64,68.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:68.30,70.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:73.59,74.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:74.30,76.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:79.59,80.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:80.30,82.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:85.60,86.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:86.30,88.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:91.90,92.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:92.30,94.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:97.77,98.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:98.30,100.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:103.73,104.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:104.30,106.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:109.103,110.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:110.30,112.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:115.65,122.30 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:122.31,122.32 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:123.31,123.32 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:124.60,126.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:127.85,127.86 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:128.48,128.49 0 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:129.43,131.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:134.2,134.33 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:134.33,136.3 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:138.2,138.34 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:138.34,139.13 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:139.13,141.17 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:141.17,143.5 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:144.4,144.8 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:144.8,146.62 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:146.62,147.50 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:147.50,149.7 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:155.2,155.15 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:158.44,177.58 6 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:177.58,180.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:183.2,185.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:185.16,186.37 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:186.37,189.18 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:189.18,192.5 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:193.4,193.24 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:194.9,197.4 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:200.2,201.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:201.16,204.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:205.2,205.35 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:205.35,208.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:210.2,212.20 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:212.20,213.53 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:213.53,216.4 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:220.2,225.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:225.16,228.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:230.2,231.49 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:231.49,233.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:236.2,239.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:239.16,242.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:245.2,246.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:246.16,249.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:252.2,257.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:257.16,260.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:261.2,261.39 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:261.39,264.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:265.2,265.33 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:265.33,267.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:268.2,268.34 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:268.34,271.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:274.2,275.58 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:275.58,277.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:280.2,281.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:281.16,284.3 2 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:285.2,285.15 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:285.15,286.35 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:286.35,288.4 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:292.2,292.39 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:292.39,294.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:295.2,295.32 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:295.32,297.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:300.2,305.12 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:308.39,310.50 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:310.50,312.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:313.2,313.16 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:313.16,315.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:317.2,320.16 3 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:320.16,322.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:324.2,324.52 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:324.52,326.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:328.2,328.46 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:328.46,330.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:332.2,337.50 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:337.50,339.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:340.2,340.16 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:340.16,342.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:344.2,345.16 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:345.16,347.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:349.2,350.58 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:350.58,352.3 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:354.2,356.99 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:356.99,357.34 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:357.34,359.4 1 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:362.2,364.12 2 1 +github.com/echovault/echovault/internal/snapshot/snapshot.go:367.46,369.2 1 0 +github.com/echovault/echovault/internal/snapshot/snapshot.go:371.42,373.2 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:24.72,26.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:26.16,28.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:30.2,34.9 4 1 +github.com/echovault/echovault/internal/modules/string/commands.go:34.9,36.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:38.2,40.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:40.16,42.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:44.2,45.9 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:45.9,47.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:50.2,50.24 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:50.24,52.94 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:52.94,54.4 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:55.3,55.58 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:59.2,59.16 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:59.16,61.94 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:61.94,63.4 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:64.3,64.58 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:67.2,69.35 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:69.35,71.24 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:71.24,74.12 3 1 +github.com/echovault/echovault/internal/modules/string/commands.go:77.3,78.8 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:81.2,81.103 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:81.103,83.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:85.2,85.59 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:88.70,90.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:90.16,92.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:94.2,97.16 3 1 +github.com/echovault/echovault/internal/modules/string/commands.go:97.16,99.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:101.2,103.9 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:103.9,105.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:107.2,107.56 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:110.70,112.16 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:112.16,114.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:116.2,123.24 6 1 +github.com/echovault/echovault/internal/modules/string/commands.go:123.24,125.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:127.2,127.16 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:127.16,129.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:131.2,132.9 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:132.9,134.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:136.2,136.15 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:136.15,138.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:139.2,139.13 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:139.13,141.3 1 0 +github.com/echovault/echovault/internal/modules/string/commands.go:143.2,143.30 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:143.30,145.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:147.2,147.22 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:147.22,149.3 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:151.2,151.17 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:151.17,154.3 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:156.2,158.14 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:158.14,160.38 2 1 +github.com/echovault/echovault/internal/modules/string/commands.go:160.38,162.4 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:163.3,163.12 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:166.2,166.65 1 1 +github.com/echovault/echovault/internal/modules/string/commands.go:169.36,209.2 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:23.78,24.19 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:24.19,26.3 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:27.2,31.8 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:34.76,35.19 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:35.19,37.3 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:38.2,42.8 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:45.76,46.19 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:46.19,48.3 1 1 +github.com/echovault/echovault/internal/modules/string/key_funcs.go:49.2,53.8 1 1 github.com/echovault/echovault/echovault/api_acl.go:126.71,128.23 2 1 github.com/echovault/echovault/echovault/api_acl.go:128.23,130.3 1 1 github.com/echovault/echovault/echovault/api_acl.go:131.2,132.16 2 1 @@ -7440,6 +3144,14 @@ github.com/echovault/echovault/echovault/api_admin.go:387.66,388.13 1 1 github.com/echovault/echovault/echovault/api_admin.go:390.4,390.88 1 1 github.com/echovault/echovault/echovault/api_admin.go:390.88,391.122 1 1 github.com/echovault/echovault/echovault/api_admin.go:391.122,393.6 1 1 +github.com/echovault/echovault/echovault/api_connection.go:32.58,33.45 1 1 +github.com/echovault/echovault/echovault/api_connection.go:33.45,35.3 1 1 +github.com/echovault/echovault/echovault/api_connection.go:36.2,39.12 4 1 +github.com/echovault/echovault/echovault/api_connection.go:53.55,54.18 1 1 +github.com/echovault/echovault/echovault/api_connection.go:54.18,56.3 1 1 +github.com/echovault/echovault/echovault/api_connection.go:58.2,59.35 2 1 +github.com/echovault/echovault/echovault/api_connection.go:59.35,61.3 1 1 +github.com/echovault/echovault/echovault/api_connection.go:62.2,69.12 5 1 github.com/echovault/echovault/echovault/api_generic.go:89.91,92.9 2 1 github.com/echovault/echovault/echovault/api_generic.go:93.18,94.26 1 1 github.com/echovault/echovault/echovault/api_generic.go:95.18,96.26 1 1 @@ -7932,361 +3644,414 @@ github.com/echovault/echovault/echovault/api_string.go:72.79,74.16 2 1 github.com/echovault/echovault/echovault/api_string.go:74.16,76.3 1 0 github.com/echovault/echovault/echovault/api_string.go:77.2,77.40 1 1 github.com/echovault/echovault/echovault/cluster.go:25.45,27.2 1 1 -github.com/echovault/echovault/echovault/cluster.go:29.84,40.16 4 1 -github.com/echovault/echovault/echovault/cluster.go:40.16,42.3 1 0 -github.com/echovault/echovault/echovault/cluster.go:44.2,46.43 2 1 -github.com/echovault/echovault/echovault/cluster.go:46.43,48.3 1 0 -github.com/echovault/echovault/echovault/cluster.go:50.2,52.9 2 1 -github.com/echovault/echovault/echovault/cluster.go:52.9,54.3 1 0 -github.com/echovault/echovault/echovault/cluster.go:56.2,56.20 1 1 -github.com/echovault/echovault/echovault/cluster.go:56.20,58.3 1 0 -github.com/echovault/echovault/echovault/cluster.go:60.2,60.12 1 1 -github.com/echovault/echovault/echovault/cluster.go:63.94,75.16 5 1 -github.com/echovault/echovault/echovault/cluster.go:75.16,77.3 1 0 -github.com/echovault/echovault/echovault/cluster.go:79.2,81.43 2 1 -github.com/echovault/echovault/echovault/cluster.go:81.43,83.3 1 0 -github.com/echovault/echovault/echovault/cluster.go:85.2,87.9 2 1 -github.com/echovault/echovault/echovault/cluster.go:87.9,89.3 1 0 -github.com/echovault/echovault/echovault/cluster.go:91.2,91.20 1 1 -github.com/echovault/echovault/echovault/cluster.go:91.20,93.3 1 0 -github.com/echovault/echovault/echovault/cluster.go:95.2,95.24 1 1 -github.com/echovault/echovault/echovault/config.go:23.36,25.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:110.66,111.36 1 1 -github.com/echovault/echovault/echovault/echovault.go:111.36,113.3 1 1 -github.com/echovault/echovault/echovault/echovault.go:119.66,120.36 1 1 -github.com/echovault/echovault/echovault/echovault.go:120.36,122.3 1 1 -github.com/echovault/echovault/echovault/echovault.go:127.78,135.39 1 1 -github.com/echovault/echovault/echovault/echovault.go:135.39,148.4 12 1 -github.com/echovault/echovault/echovault/echovault.go:153.2,153.33 1 1 -github.com/echovault/echovault/echovault/echovault.go:153.33,155.3 1 1 -github.com/echovault/echovault/echovault/echovault.go:157.2,163.48 2 1 -github.com/echovault/echovault/echovault/echovault.go:163.48,164.52 1 0 -github.com/echovault/echovault/echovault/echovault.go:164.52,166.12 2 0 -github.com/echovault/echovault/echovault/echovault.go:168.3,168.41 1 0 -github.com/echovault/echovault/echovault/echovault.go:172.2,177.29 3 1 -github.com/echovault/echovault/echovault/echovault.go:177.29,187.38 1 1 -github.com/echovault/echovault/echovault/echovault.go:187.38,191.5 3 1 -github.com/echovault/echovault/echovault/echovault.go:192.49,194.44 2 0 -github.com/echovault/echovault/echovault/echovault.go:194.44,195.46 1 0 -github.com/echovault/echovault/echovault/echovault.go:195.46,197.7 1 0 -github.com/echovault/echovault/echovault/echovault.go:199.5,199.17 1 0 -github.com/echovault/echovault/echovault/echovault.go:202.3,210.5 1 1 -github.com/echovault/echovault/echovault/echovault.go:211.8,222.65 1 1 -github.com/echovault/echovault/echovault/echovault.go:222.65,224.44 2 1 -github.com/echovault/echovault/echovault/echovault.go:224.44,225.46 1 1 -github.com/echovault/echovault/echovault/echovault.go:225.46,227.7 1 1 -github.com/echovault/echovault/echovault/echovault.go:229.5,229.17 1 1 -github.com/echovault/echovault/echovault/echovault.go:231.72,233.93 2 1 -github.com/echovault/echovault/echovault/echovault.go:233.93,235.6 1 0 -github.com/echovault/echovault/echovault/echovault.go:236.5,236.56 1 1 -github.com/echovault/echovault/echovault/echovault.go:240.3,246.60 1 1 -github.com/echovault/echovault/echovault/echovault.go:246.60,248.44 2 1 -github.com/echovault/echovault/echovault/echovault.go:248.44,249.46 1 1 -github.com/echovault/echovault/echovault/echovault.go:249.46,251.7 1 1 -github.com/echovault/echovault/echovault/echovault.go:253.5,253.17 1 1 -github.com/echovault/echovault/echovault/echovault.go:255.68,257.94 2 1 -github.com/echovault/echovault/echovault/echovault.go:257.94,259.6 1 0 -github.com/echovault/echovault/echovault/echovault.go:260.5,260.57 1 1 -github.com/echovault/echovault/echovault/echovault.go:262.51,264.19 2 1 -github.com/echovault/echovault/echovault/echovault.go:264.19,266.6 1 0 -github.com/echovault/echovault/echovault/echovault.go:269.3,269.17 1 1 -github.com/echovault/echovault/echovault/echovault.go:269.17,271.4 1 0 -github.com/echovault/echovault/echovault/echovault.go:272.3,272.34 1 1 -github.com/echovault/echovault/echovault/echovault.go:276.2,276.61 1 1 -github.com/echovault/echovault/echovault/echovault.go:276.61,277.13 1 0 -github.com/echovault/echovault/echovault/echovault.go:277.13,279.17 2 0 -github.com/echovault/echovault/echovault/echovault.go:279.17,281.5 1 0 -github.com/echovault/echovault/echovault/echovault.go:282.4,282.8 1 0 -github.com/echovault/echovault/echovault/echovault.go:282.8,283.12 1 0 -github.com/echovault/echovault/echovault/echovault.go:284.21,285.84 1 0 -github.com/echovault/echovault/echovault/echovault.go:285.84,287.7 1 0 -github.com/echovault/echovault/echovault/echovault.go:288.30,289.11 1 0 -github.com/echovault/echovault/echovault/echovault.go:295.2,295.69 1 1 -github.com/echovault/echovault/echovault/echovault.go:295.69,297.3 1 0 -github.com/echovault/echovault/echovault/echovault.go:299.2,299.29 1 1 -github.com/echovault/echovault/echovault/echovault.go:299.29,303.36 3 1 -github.com/echovault/echovault/echovault/echovault.go:303.36,305.4 1 0 -github.com/echovault/echovault/echovault/echovault.go:308.2,308.30 1 1 -github.com/echovault/echovault/echovault/echovault.go:308.30,311.34 2 1 -github.com/echovault/echovault/echovault/echovault.go:311.34,313.18 2 1 -github.com/echovault/echovault/echovault/echovault.go:313.18,315.5 1 0 -github.com/echovault/echovault/echovault/echovault.go:319.3,319.71 1 1 -github.com/echovault/echovault/echovault/echovault.go:319.71,321.18 2 1 -github.com/echovault/echovault/echovault/echovault.go:321.18,323.5 1 1 -github.com/echovault/echovault/echovault/echovault.go:327.2,327.23 1 1 -github.com/echovault/echovault/echovault/echovault.go:330.37,342.16 4 1 -github.com/echovault/echovault/echovault/echovault.go:342.16,345.3 2 0 -github.com/echovault/echovault/echovault/echovault.go:347.2,347.15 1 1 -github.com/echovault/echovault/echovault/echovault.go:347.15,350.3 1 1 -github.com/echovault/echovault/echovault/echovault.go:352.2,352.27 1 1 -github.com/echovault/echovault/echovault/echovault.go:352.27,354.16 1 1 -github.com/echovault/echovault/echovault/echovault.go:354.16,356.4 1 1 -github.com/echovault/echovault/echovault/echovault.go:356.9,358.4 1 1 -github.com/echovault/echovault/echovault/echovault.go:360.3,361.49 2 1 -github.com/echovault/echovault/echovault/echovault.go:361.49,363.18 2 1 -github.com/echovault/echovault/echovault/echovault.go:363.18,366.5 2 0 -github.com/echovault/echovault/echovault/echovault.go:367.4,367.42 1 1 -github.com/echovault/echovault/echovault/echovault.go:370.3,373.16 3 1 -github.com/echovault/echovault/echovault/echovault.go:373.16,375.37 2 1 -github.com/echovault/echovault/echovault/echovault.go:375.37,377.19 2 1 -github.com/echovault/echovault/echovault/echovault.go:377.19,380.6 2 0 -github.com/echovault/echovault/echovault/echovault.go:381.5,382.19 2 1 -github.com/echovault/echovault/echovault/echovault.go:382.19,384.6 1 0 -github.com/echovault/echovault/echovault/echovault.go:385.5,385.61 1 1 -github.com/echovault/echovault/echovault/echovault.go:385.61,387.6 1 0 -github.com/echovault/echovault/echovault/echovault.go:391.3,395.5 1 1 -github.com/echovault/echovault/echovault/echovault.go:398.2,401.6 2 1 -github.com/echovault/echovault/echovault/echovault.go:401.6,402.10 1 1 -github.com/echovault/echovault/echovault/echovault.go:403.22,404.10 1 0 -github.com/echovault/echovault/echovault/echovault.go:405.11,407.18 2 1 -github.com/echovault/echovault/echovault/echovault.go:407.18,410.5 2 1 -github.com/echovault/echovault/echovault/echovault.go:412.4,412.36 1 1 -github.com/echovault/echovault/echovault/echovault.go:417.58,419.23 1 1 -github.com/echovault/echovault/echovault/echovault.go:419.23,421.3 1 1 -github.com/echovault/echovault/echovault/echovault.go:423.2,429.15 4 1 -github.com/echovault/echovault/echovault/echovault.go:429.15,431.38 2 1 -github.com/echovault/echovault/echovault/echovault.go:431.38,433.4 1 0 -github.com/echovault/echovault/echovault/echovault.go:436.2,436.6 1 1 -github.com/echovault/echovault/echovault/echovault.go:436.6,439.43 2 1 -github.com/echovault/echovault/echovault/echovault.go:439.43,442.9 2 0 -github.com/echovault/echovault/echovault/echovault.go:445.3,445.17 1 1 -github.com/echovault/echovault/echovault/echovault.go:445.17,447.9 2 0 -github.com/echovault/echovault/echovault/echovault.go:450.3,451.43 2 1 -github.com/echovault/echovault/echovault/echovault.go:451.43,452.9 1 1 -github.com/echovault/echovault/echovault/echovault.go:454.3,454.17 1 1 -github.com/echovault/echovault/echovault/echovault.go:454.17,455.87 1 1 -github.com/echovault/echovault/echovault/echovault.go:455.87,457.5 1 0 -github.com/echovault/echovault/echovault/echovault.go:458.4,458.12 1 1 -github.com/echovault/echovault/echovault/echovault.go:461.3,464.20 2 1 -github.com/echovault/echovault/echovault/echovault.go:464.20,465.12 1 0 -github.com/echovault/echovault/echovault/echovault.go:468.3,468.28 1 1 -github.com/echovault/echovault/echovault/echovault.go:468.28,470.12 2 1 -github.com/echovault/echovault/echovault/echovault.go:474.3,475.7 2 0 -github.com/echovault/echovault/echovault/echovault.go:475.7,477.41 1 0 -github.com/echovault/echovault/echovault/echovault.go:477.41,479.19 2 0 -github.com/echovault/echovault/echovault/echovault.go:479.19,481.6 1 0 -github.com/echovault/echovault/echovault/echovault.go:482.5,482.10 1 0 -github.com/echovault/echovault/echovault/echovault.go:484.4,485.21 2 0 -github.com/echovault/echovault/echovault/echovault.go:485.21,486.10 1 0 -github.com/echovault/echovault/echovault/echovault.go:488.4,488.27 1 0 -github.com/echovault/echovault/echovault/echovault.go:498.34,500.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:503.47,504.38 1 1 -github.com/echovault/echovault/echovault/echovault.go:504.38,506.3 1 0 -github.com/echovault/echovault/echovault/echovault.go:508.2,508.12 1 1 -github.com/echovault/echovault/echovault/echovault.go:508.12,509.27 1 1 -github.com/echovault/echovault/echovault/echovault.go:509.27,511.53 1 0 -github.com/echovault/echovault/echovault/echovault.go:511.53,513.5 1 0 -github.com/echovault/echovault/echovault/echovault.go:514.4,514.10 1 0 -github.com/echovault/echovault/echovault/echovault.go:517.3,517.62 1 1 -github.com/echovault/echovault/echovault/echovault.go:517.62,519.4 1 0 -github.com/echovault/echovault/echovault/echovault.go:522.2,522.12 1 1 -github.com/echovault/echovault/echovault/echovault.go:525.42,527.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:529.43,531.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:533.56,535.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:538.56,540.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:542.44,544.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:546.45,548.2 1 1 -github.com/echovault/echovault/echovault/echovault.go:551.45,552.40 1 1 -github.com/echovault/echovault/echovault/echovault.go:552.40,554.3 1 0 -github.com/echovault/echovault/echovault/echovault.go:555.2,555.54 1 1 -github.com/echovault/echovault/echovault/echovault.go:555.54,557.3 1 0 -github.com/echovault/echovault/echovault/echovault.go:558.2,558.12 1 1 -github.com/echovault/echovault/echovault/echovault.go:563.37,564.35 1 1 -github.com/echovault/echovault/echovault/echovault.go:564.35,565.13 1 1 -github.com/echovault/echovault/echovault/echovault.go:565.13,565.42 1 1 -github.com/echovault/echovault/echovault/echovault.go:566.3,566.13 1 1 -github.com/echovault/echovault/echovault/echovault.go:566.13,566.45 1 1 -github.com/echovault/echovault/echovault/echovault.go:567.3,568.71 2 1 -github.com/echovault/echovault/echovault/echovault.go:568.71,570.4 1 0 -github.com/echovault/echovault/echovault/echovault.go:572.2,572.26 1 1 -github.com/echovault/echovault/echovault/echovault.go:572.26,575.3 2 1 -github.com/echovault/echovault/echovault/echovault.go:578.45,595.2 2 1 -github.com/echovault/echovault/echovault/keyspace.go:32.67,38.27 4 1 -github.com/echovault/echovault/echovault/keyspace.go:38.27,41.3 2 1 -github.com/echovault/echovault/echovault/keyspace.go:43.2,43.15 1 1 -github.com/echovault/echovault/echovault/keyspace.go:46.58,51.9 4 1 -github.com/echovault/echovault/echovault/keyspace.go:51.9,53.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:55.2,55.23 1 1 -github.com/echovault/echovault/echovault/keyspace.go:58.95,64.27 4 1 -github.com/echovault/echovault/echovault/keyspace.go:64.27,66.10 2 1 -github.com/echovault/echovault/echovault/keyspace.go:66.10,68.12 2 1 -github.com/echovault/echovault/echovault/keyspace.go:71.3,71.83 1 1 -github.com/echovault/echovault/echovault/keyspace.go:71.83,72.29 1 0 -github.com/echovault/echovault/echovault/keyspace.go:72.29,75.19 2 0 -github.com/echovault/echovault/echovault/keyspace.go:75.19,77.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:78.10,78.65 1 0 -github.com/echovault/echovault/echovault/keyspace.go:78.65,81.19 2 0 -github.com/echovault/echovault/echovault/keyspace.go:81.19,83.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:84.10,84.66 1 0 -github.com/echovault/echovault/echovault/keyspace.go:84.66,89.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:90.4,91.12 2 0 -github.com/echovault/echovault/echovault/keyspace.go:94.3,94.28 1 1 -github.com/echovault/echovault/echovault/keyspace.go:98.2,98.46 1 1 -github.com/echovault/echovault/echovault/keyspace.go:98.46,99.61 1 1 -github.com/echovault/echovault/echovault/keyspace.go:99.61,101.4 1 0 -github.com/echovault/echovault/echovault/keyspace.go:104.2,104.15 1 1 -github.com/echovault/echovault/echovault/keyspace.go:107.95,111.115 3 1 -github.com/echovault/echovault/echovault/keyspace.go:111.115,113.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:115.2,115.34 1 1 -github.com/echovault/echovault/echovault/keyspace.go:115.34,117.37 2 1 -github.com/echovault/echovault/echovault/keyspace.go:117.37,119.4 1 1 -github.com/echovault/echovault/echovault/keyspace.go:120.3,124.28 2 1 -github.com/echovault/echovault/echovault/keyspace.go:124.28,126.4 1 1 -github.com/echovault/echovault/echovault/keyspace.go:130.2,130.63 1 1 -github.com/echovault/echovault/echovault/keyspace.go:130.63,131.31 1 1 -github.com/echovault/echovault/echovault/keyspace.go:131.31,133.18 2 1 -github.com/echovault/echovault/echovault/keyspace.go:133.18,135.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:139.2,139.12 1 1 -github.com/echovault/echovault/echovault/keyspace.go:142.101,153.55 5 1 -github.com/echovault/echovault/echovault/keyspace.go:153.55,155.3 1 1 -github.com/echovault/echovault/echovault/keyspace.go:156.2,159.11 2 1 -github.com/echovault/echovault/echovault/keyspace.go:159.11,160.44 1 1 -github.com/echovault/echovault/echovault/keyspace.go:160.44,162.18 2 1 -github.com/echovault/echovault/echovault/keyspace.go:162.18,164.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:169.54,176.97 4 1 -github.com/echovault/echovault/echovault/keyspace.go:176.97,178.3 1 1 -github.com/echovault/echovault/echovault/keyspace.go:181.2,181.9 1 1 -github.com/echovault/echovault/echovault/keyspace.go:182.108,183.36 1 0 -github.com/echovault/echovault/echovault/keyspace.go:184.108,185.36 1 0 -github.com/echovault/echovault/echovault/keyspace.go:188.2,190.12 2 1 -github.com/echovault/echovault/echovault/keyspace.go:193.60,195.6 1 1 -github.com/echovault/echovault/echovault/keyspace.go:195.6,196.83 1 1 -github.com/echovault/echovault/echovault/keyspace.go:196.83,198.9 2 1 -github.com/echovault/echovault/echovault/keyspace.go:201.2,202.33 2 1 -github.com/echovault/echovault/echovault/keyspace.go:202.33,204.3 1 1 -github.com/echovault/echovault/echovault/keyspace.go:205.2,206.13 2 1 -github.com/echovault/echovault/echovault/keyspace.go:211.86,212.27 1 1 -github.com/echovault/echovault/echovault/keyspace.go:212.27,214.84 1 1 -github.com/echovault/echovault/echovault/keyspace.go:214.84,216.4 1 1 -github.com/echovault/echovault/echovault/keyspace.go:218.3,218.35 1 1 -github.com/echovault/echovault/echovault/keyspace.go:218.35,220.4 1 1 -github.com/echovault/echovault/echovault/keyspace.go:221.3,221.56 1 0 -github.com/echovault/echovault/echovault/keyspace.go:222.29,225.34 3 0 -github.com/echovault/echovault/echovault/keyspace.go:226.29,229.34 3 0 -github.com/echovault/echovault/echovault/keyspace.go:230.30,232.51 2 0 -github.com/echovault/echovault/echovault/keyspace.go:232.51,234.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:235.4,235.34 1 0 -github.com/echovault/echovault/echovault/keyspace.go:236.30,238.51 2 0 -github.com/echovault/echovault/echovault/keyspace.go:238.51,240.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:241.4,241.34 1 0 -github.com/echovault/echovault/echovault/keyspace.go:243.3,243.55 1 0 -github.com/echovault/echovault/echovault/keyspace.go:243.55,245.4 1 0 -github.com/echovault/echovault/echovault/keyspace.go:247.2,247.12 1 0 -github.com/echovault/echovault/echovault/keyspace.go:251.71,253.34 1 0 -github.com/echovault/echovault/echovault/keyspace.go:253.34,255.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:258.2,261.50 3 0 -github.com/echovault/echovault/echovault/keyspace.go:261.50,263.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:265.2,267.50 3 0 -github.com/echovault/echovault/echovault/keyspace.go:267.50,269.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:273.2,275.9 3 0 -github.com/echovault/echovault/echovault/keyspace.go:276.125,281.7 3 0 -github.com/echovault/echovault/echovault/keyspace.go:281.7,283.40 1 0 -github.com/echovault/echovault/echovault/keyspace.go:283.40,285.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:287.4,288.29 2 0 -github.com/echovault/echovault/echovault/keyspace.go:288.29,290.49 1 0 -github.com/echovault/echovault/echovault/keyspace.go:290.49,292.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:293.10,293.65 1 0 -github.com/echovault/echovault/echovault/keyspace.go:293.65,295.63 1 0 -github.com/echovault/echovault/echovault/keyspace.go:295.63,297.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:301.4,304.52 3 0 -github.com/echovault/echovault/echovault/keyspace.go:304.52,306.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:308.125,313.7 3 0 -github.com/echovault/echovault/echovault/keyspace.go:313.7,315.40 1 0 -github.com/echovault/echovault/echovault/keyspace.go:315.40,317.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:319.4,320.29 2 0 -github.com/echovault/echovault/echovault/keyspace.go:320.29,322.49 1 0 -github.com/echovault/echovault/echovault/keyspace.go:322.49,324.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:325.10,325.65 1 0 -github.com/echovault/echovault/echovault/keyspace.go:325.65,328.63 1 0 -github.com/echovault/echovault/echovault/keyspace.go:328.63,330.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:334.4,337.52 3 0 -github.com/echovault/echovault/echovault/keyspace.go:337.52,339.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:341.105,344.7 1 0 -github.com/echovault/echovault/echovault/keyspace.go:344.7,347.30 2 0 -github.com/echovault/echovault/echovault/keyspace.go:347.30,351.5 3 0 -github.com/echovault/echovault/echovault/keyspace.go:353.4,354.37 2 0 -github.com/echovault/echovault/echovault/keyspace.go:354.37,355.17 1 0 -github.com/echovault/echovault/echovault/keyspace.go:355.17,356.31 1 0 -github.com/echovault/echovault/echovault/keyspace.go:356.31,358.51 1 0 -github.com/echovault/echovault/echovault/keyspace.go:358.51,360.8 1 0 -github.com/echovault/echovault/echovault/keyspace.go:361.12,361.67 1 0 -github.com/echovault/echovault/echovault/keyspace.go:361.67,362.65 1 0 -github.com/echovault/echovault/echovault/keyspace.go:362.65,364.8 1 0 -github.com/echovault/echovault/echovault/keyspace.go:367.6,370.54 3 0 -github.com/echovault/echovault/echovault/keyspace.go:370.54,372.7 1 0 -github.com/echovault/echovault/echovault/keyspace.go:374.5,374.10 1 0 -github.com/echovault/echovault/echovault/keyspace.go:377.106,380.7 1 0 -github.com/echovault/echovault/echovault/keyspace.go:380.7,387.29 5 0 -github.com/echovault/echovault/echovault/keyspace.go:387.29,389.49 1 0 -github.com/echovault/echovault/echovault/keyspace.go:389.49,391.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:392.10,392.65 1 0 -github.com/echovault/echovault/echovault/keyspace.go:392.65,393.63 1 0 -github.com/echovault/echovault/echovault/keyspace.go:393.63,395.6 1 0 -github.com/echovault/echovault/echovault/keyspace.go:399.4,402.52 3 0 -github.com/echovault/echovault/echovault/keyspace.go:402.52,404.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:406.10,407.13 1 0 -github.com/echovault/echovault/echovault/keyspace.go:416.77,418.57 1 0 -github.com/echovault/echovault/echovault/keyspace.go:418.57,420.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:422.2,427.50 3 0 -github.com/echovault/echovault/echovault/keyspace.go:427.50,429.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:430.2,437.33 6 0 -github.com/echovault/echovault/echovault/keyspace.go:437.33,438.7 1 0 -github.com/echovault/echovault/echovault/keyspace.go:438.7,442.35 3 0 -github.com/echovault/echovault/echovault/keyspace.go:442.35,444.10 2 0 -github.com/echovault/echovault/echovault/keyspace.go:448.2,453.25 4 0 -github.com/echovault/echovault/echovault/keyspace.go:453.25,456.28 2 0 -github.com/echovault/echovault/echovault/keyspace.go:456.28,457.46 1 0 -github.com/echovault/echovault/echovault/keyspace.go:457.46,459.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:460.9,460.64 1 0 -github.com/echovault/echovault/echovault/keyspace.go:460.64,461.60 1 0 -github.com/echovault/echovault/echovault/keyspace.go:461.60,463.5 1 0 -github.com/echovault/echovault/echovault/keyspace.go:468.2,468.21 1 0 -github.com/echovault/echovault/echovault/keyspace.go:468.21,470.3 1 0 -github.com/echovault/echovault/echovault/keyspace.go:472.2,475.58 2 0 -github.com/echovault/echovault/echovault/keyspace.go:475.58,479.3 2 0 -github.com/echovault/echovault/echovault/keyspace.go:481.2,481.12 1 0 +github.com/echovault/echovault/echovault/cluster.go:29.84,44.16 6 1 +github.com/echovault/echovault/echovault/cluster.go:44.16,46.3 1 0 +github.com/echovault/echovault/echovault/cluster.go:48.2,50.43 2 1 +github.com/echovault/echovault/echovault/cluster.go:50.43,52.3 1 0 +github.com/echovault/echovault/echovault/cluster.go:54.2,56.9 2 1 +github.com/echovault/echovault/echovault/cluster.go:56.9,58.3 1 0 +github.com/echovault/echovault/echovault/cluster.go:60.2,60.20 1 1 +github.com/echovault/echovault/echovault/cluster.go:60.20,62.3 1 0 +github.com/echovault/echovault/echovault/cluster.go:64.2,64.12 1 1 +github.com/echovault/echovault/echovault/cluster.go:67.94,83.16 7 1 +github.com/echovault/echovault/echovault/cluster.go:83.16,85.3 1 0 +github.com/echovault/echovault/echovault/cluster.go:87.2,89.43 2 1 +github.com/echovault/echovault/echovault/cluster.go:89.43,91.3 1 0 +github.com/echovault/echovault/echovault/cluster.go:93.2,95.9 2 1 +github.com/echovault/echovault/echovault/cluster.go:95.9,97.3 1 0 +github.com/echovault/echovault/echovault/cluster.go:99.2,99.20 1 1 +github.com/echovault/echovault/echovault/cluster.go:99.20,101.3 1 0 +github.com/echovault/echovault/echovault/cluster.go:103.2,103.24 1 1 +github.com/echovault/echovault/echovault/config.go:25.36,27.2 1 1 +github.com/echovault/echovault/echovault/config.go:29.62,34.23 1 0 +github.com/echovault/echovault/echovault/config.go:34.23,35.28 1 0 +github.com/echovault/echovault/echovault/config.go:35.28,37.5 1 0 +github.com/echovault/echovault/echovault/config.go:38.4,38.23 1 0 +github.com/echovault/echovault/echovault/config.go:40.23,41.29 1 0 +github.com/echovault/echovault/echovault/config.go:41.29,43.5 1 0 +github.com/echovault/echovault/echovault/config.go:44.4,44.34 1 0 +github.com/echovault/echovault/echovault/config.go:44.34,46.5 1 0 +github.com/echovault/echovault/echovault/config.go:47.4,47.20 1 0 +github.com/echovault/echovault/echovault/echovault.go:128.66,129.36 1 1 +github.com/echovault/echovault/echovault/echovault.go:129.36,131.3 1 1 +github.com/echovault/echovault/echovault/echovault.go:137.66,138.36 1 1 +github.com/echovault/echovault/echovault/echovault.go:138.36,140.3 1 1 +github.com/echovault/echovault/echovault/echovault.go:145.78,174.39 1 1 +github.com/echovault/echovault/echovault/echovault.go:174.39,187.4 12 1 +github.com/echovault/echovault/echovault/echovault.go:192.2,192.33 1 1 +github.com/echovault/echovault/echovault/echovault.go:192.33,194.3 1 1 +github.com/echovault/echovault/echovault/echovault.go:196.2,202.48 2 1 +github.com/echovault/echovault/echovault/echovault.go:202.48,203.52 1 0 +github.com/echovault/echovault/echovault/echovault.go:203.52,205.12 2 0 +github.com/echovault/echovault/echovault/echovault.go:207.3,207.41 1 0 +github.com/echovault/echovault/echovault/echovault.go:211.2,216.29 3 1 +github.com/echovault/echovault/echovault/echovault.go:216.29,226.59 1 1 +github.com/echovault/echovault/echovault/echovault.go:226.59,230.5 3 1 +github.com/echovault/echovault/echovault/echovault.go:231.57,233.55 2 0 +github.com/echovault/echovault/echovault/echovault.go:233.55,234.30 1 0 +github.com/echovault/echovault/echovault/echovault.go:234.30,235.47 1 0 +github.com/echovault/echovault/echovault/echovault.go:235.47,237.8 1 0 +github.com/echovault/echovault/echovault/echovault.go:240.5,240.17 1 0 +github.com/echovault/echovault/echovault/echovault.go:243.3,251.5 1 1 +github.com/echovault/echovault/echovault/echovault.go:252.8,263.73 1 1 +github.com/echovault/echovault/echovault/echovault.go:263.73,265.54 2 1 +github.com/echovault/echovault/echovault/echovault.go:265.54,267.35 2 1 +github.com/echovault/echovault/echovault/echovault.go:267.35,268.54 1 1 +github.com/echovault/echovault/echovault/echovault.go:268.54,270.8 1 1 +github.com/echovault/echovault/echovault/echovault.go:273.5,273.17 1 1 +github.com/echovault/echovault/echovault/echovault.go:275.86,277.93 2 1 +github.com/echovault/echovault/echovault/echovault.go:277.93,279.6 1 0 +github.com/echovault/echovault/echovault/echovault.go:280.5,280.56 1 1 +github.com/echovault/echovault/echovault/echovault.go:285.3,291.68 1 1 +github.com/echovault/echovault/echovault/echovault.go:291.68,293.54 2 1 +github.com/echovault/echovault/echovault/echovault.go:293.54,295.35 2 1 +github.com/echovault/echovault/echovault/echovault.go:295.35,296.54 1 1 +github.com/echovault/echovault/echovault/echovault.go:296.54,298.8 1 1 +github.com/echovault/echovault/echovault/echovault.go:301.5,301.17 1 1 +github.com/echovault/echovault/echovault/echovault.go:303.82,305.94 2 1 +github.com/echovault/echovault/echovault/echovault.go:305.94,307.6 1 0 +github.com/echovault/echovault/echovault/echovault.go:308.5,308.57 1 1 +github.com/echovault/echovault/echovault/echovault.go:310.65,314.19 4 1 +github.com/echovault/echovault/echovault/echovault.go:314.19,316.6 1 0 +github.com/echovault/echovault/echovault/echovault.go:319.3,319.17 1 1 +github.com/echovault/echovault/echovault/echovault.go:319.17,321.4 1 0 +github.com/echovault/echovault/echovault/echovault.go:322.3,322.34 1 1 +github.com/echovault/echovault/echovault/echovault.go:326.2,326.61 1 1 +github.com/echovault/echovault/echovault/echovault.go:326.61,327.13 1 0 +github.com/echovault/echovault/echovault/echovault.go:327.13,329.17 2 0 +github.com/echovault/echovault/echovault/echovault.go:329.17,331.5 1 0 +github.com/echovault/echovault/echovault/echovault.go:332.4,332.8 1 0 +github.com/echovault/echovault/echovault/echovault.go:332.8,333.12 1 0 +github.com/echovault/echovault/echovault/echovault.go:334.21,337.61 2 0 +github.com/echovault/echovault/echovault/echovault.go:337.61,340.56 3 0 +github.com/echovault/echovault/echovault/echovault.go:340.56,341.69 1 0 +github.com/echovault/echovault/echovault/echovault.go:341.69,343.9 1 0 +github.com/echovault/echovault/echovault/echovault.go:344.8,344.17 1 0 +github.com/echovault/echovault/echovault/echovault.go:347.6,347.15 1 0 +github.com/echovault/echovault/echovault/echovault.go:348.30,349.11 1 0 +github.com/echovault/echovault/echovault/echovault.go:355.2,355.69 1 1 +github.com/echovault/echovault/echovault/echovault.go:355.69,357.3 1 0 +github.com/echovault/echovault/echovault/echovault.go:359.2,359.29 1 1 +github.com/echovault/echovault/echovault/echovault.go:359.29,365.3 3 1 +github.com/echovault/echovault/echovault/echovault.go:367.2,367.30 1 1 +github.com/echovault/echovault/echovault/echovault.go:367.30,370.34 2 1 +github.com/echovault/echovault/echovault/echovault.go:370.34,372.18 2 1 +github.com/echovault/echovault/echovault/echovault.go:372.18,374.5 1 0 +github.com/echovault/echovault/echovault/echovault.go:378.3,378.71 1 1 +github.com/echovault/echovault/echovault/echovault.go:378.71,380.18 2 1 +github.com/echovault/echovault/echovault/echovault.go:380.18,382.5 1 1 +github.com/echovault/echovault/echovault/echovault.go:386.2,386.23 1 1 +github.com/echovault/echovault/echovault/echovault.go:389.37,401.16 4 1 +github.com/echovault/echovault/echovault/echovault.go:401.16,404.3 2 0 +github.com/echovault/echovault/echovault/echovault.go:406.2,406.15 1 1 +github.com/echovault/echovault/echovault/echovault.go:406.15,409.3 1 1 +github.com/echovault/echovault/echovault/echovault.go:411.2,411.27 1 1 +github.com/echovault/echovault/echovault/echovault.go:411.27,413.16 1 1 +github.com/echovault/echovault/echovault/echovault.go:413.16,415.4 1 1 +github.com/echovault/echovault/echovault/echovault.go:415.9,417.4 1 1 +github.com/echovault/echovault/echovault/echovault.go:419.3,420.49 2 1 +github.com/echovault/echovault/echovault/echovault.go:420.49,422.18 2 1 +github.com/echovault/echovault/echovault/echovault.go:422.18,425.5 2 0 +github.com/echovault/echovault/echovault/echovault.go:426.4,426.42 1 1 +github.com/echovault/echovault/echovault/echovault.go:429.3,432.16 3 1 +github.com/echovault/echovault/echovault/echovault.go:432.16,434.37 2 1 +github.com/echovault/echovault/echovault/echovault.go:434.37,436.19 2 1 +github.com/echovault/echovault/echovault/echovault.go:436.19,439.6 2 0 +github.com/echovault/echovault/echovault/echovault.go:440.5,441.19 2 1 +github.com/echovault/echovault/echovault/echovault.go:441.19,443.6 1 0 +github.com/echovault/echovault/echovault/echovault.go:444.5,444.61 1 1 +github.com/echovault/echovault/echovault/echovault.go:444.61,446.6 1 0 +github.com/echovault/echovault/echovault/echovault.go:450.3,454.5 1 1 +github.com/echovault/echovault/echovault/echovault.go:457.2,460.6 2 1 +github.com/echovault/echovault/echovault/echovault.go:460.6,461.10 1 1 +github.com/echovault/echovault/echovault/echovault.go:462.22,463.10 1 0 +github.com/echovault/echovault/echovault/echovault.go:464.11,466.18 2 1 +github.com/echovault/echovault/echovault/echovault.go:466.18,469.5 2 1 +github.com/echovault/echovault/echovault/echovault.go:471.4,471.36 1 1 +github.com/echovault/echovault/echovault/echovault.go:476.58,478.23 1 1 +github.com/echovault/echovault/echovault/echovault.go:478.23,480.3 1 1 +github.com/echovault/echovault/echovault/echovault.go:482.2,499.15 7 1 +github.com/echovault/echovault/echovault/echovault.go:499.15,501.38 2 1 +github.com/echovault/echovault/echovault/echovault.go:501.38,503.4 1 0 +github.com/echovault/echovault/echovault/echovault.go:506.2,506.6 1 1 +github.com/echovault/echovault/echovault/echovault.go:506.6,509.43 2 1 +github.com/echovault/echovault/echovault/echovault.go:509.43,512.9 2 0 +github.com/echovault/echovault/echovault/echovault.go:515.3,515.17 1 1 +github.com/echovault/echovault/echovault/echovault.go:515.17,517.9 2 0 +github.com/echovault/echovault/echovault/echovault.go:520.3,521.43 2 1 +github.com/echovault/echovault/echovault/echovault.go:521.43,522.9 1 1 +github.com/echovault/echovault/echovault/echovault.go:524.3,524.17 1 1 +github.com/echovault/echovault/echovault/echovault.go:524.17,525.87 1 1 +github.com/echovault/echovault/echovault/echovault.go:525.87,527.5 1 0 +github.com/echovault/echovault/echovault/echovault.go:528.4,528.12 1 1 +github.com/echovault/echovault/echovault/echovault.go:531.3,534.20 2 1 +github.com/echovault/echovault/echovault/echovault.go:534.20,535.12 1 0 +github.com/echovault/echovault/echovault/echovault.go:538.3,538.28 1 1 +github.com/echovault/echovault/echovault/echovault.go:538.28,540.12 2 1 +github.com/echovault/echovault/echovault/echovault.go:544.3,545.7 2 0 +github.com/echovault/echovault/echovault/echovault.go:545.7,547.41 1 0 +github.com/echovault/echovault/echovault/echovault.go:547.41,549.19 2 0 +github.com/echovault/echovault/echovault/echovault.go:549.19,551.6 1 0 +github.com/echovault/echovault/echovault/echovault.go:552.5,552.10 1 0 +github.com/echovault/echovault/echovault/echovault.go:554.4,555.21 2 0 +github.com/echovault/echovault/echovault/echovault.go:555.21,556.10 1 0 +github.com/echovault/echovault/echovault/echovault.go:558.4,558.27 1 0 +github.com/echovault/echovault/echovault/echovault.go:568.34,570.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:573.47,574.38 1 1 +github.com/echovault/echovault/echovault/echovault.go:574.38,576.3 1 0 +github.com/echovault/echovault/echovault/echovault.go:578.2,578.12 1 1 +github.com/echovault/echovault/echovault/echovault.go:578.12,579.27 1 1 +github.com/echovault/echovault/echovault/echovault.go:579.27,581.53 1 0 +github.com/echovault/echovault/echovault/echovault.go:581.53,583.5 1 0 +github.com/echovault/echovault/echovault/echovault.go:584.4,584.10 1 0 +github.com/echovault/echovault/echovault/echovault.go:587.3,587.62 1 1 +github.com/echovault/echovault/echovault/echovault.go:587.62,589.4 1 0 +github.com/echovault/echovault/echovault/echovault.go:592.2,592.12 1 1 +github.com/echovault/echovault/echovault/echovault.go:595.42,597.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:599.43,601.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:603.56,605.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:608.56,610.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:612.44,614.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:616.45,618.2 1 1 +github.com/echovault/echovault/echovault/echovault.go:621.45,622.40 1 1 +github.com/echovault/echovault/echovault/echovault.go:622.40,624.3 1 0 +github.com/echovault/echovault/echovault/echovault.go:625.2,625.54 1 1 +github.com/echovault/echovault/echovault/echovault.go:625.54,627.3 1 0 +github.com/echovault/echovault/echovault/echovault.go:628.2,628.12 1 1 +github.com/echovault/echovault/echovault/echovault.go:633.37,634.35 1 1 +github.com/echovault/echovault/echovault/echovault.go:634.35,635.13 1 1 +github.com/echovault/echovault/echovault/echovault.go:635.13,635.42 1 1 +github.com/echovault/echovault/echovault/echovault.go:636.3,636.13 1 1 +github.com/echovault/echovault/echovault/echovault.go:636.13,636.45 1 1 +github.com/echovault/echovault/echovault/echovault.go:637.3,638.71 2 1 +github.com/echovault/echovault/echovault/echovault.go:638.71,640.4 1 0 +github.com/echovault/echovault/echovault/echovault.go:642.2,642.26 1 1 +github.com/echovault/echovault/echovault/echovault.go:642.26,645.3 2 1 +github.com/echovault/echovault/echovault/echovault.go:648.45,666.40 3 1 +github.com/echovault/echovault/echovault/echovault.go:666.40,669.3 2 0 +github.com/echovault/echovault/echovault/keyspace.go:38.60,40.28 1 0 +github.com/echovault/echovault/echovault/keyspace.go:40.28,42.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:45.2,46.55 2 0 +github.com/echovault/echovault/echovault/keyspace.go:46.55,47.36 1 0 +github.com/echovault/echovault/echovault/keyspace.go:47.36,49.4 1 0 +github.com/echovault/echovault/echovault/keyspace.go:51.2,56.59 4 0 +github.com/echovault/echovault/echovault/keyspace.go:56.59,57.24 1 0 +github.com/echovault/echovault/echovault/keyspace.go:58.18,64.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:65.18,71.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:78.46,91.20 9 0 +github.com/echovault/echovault/echovault/keyspace.go:91.20,92.35 1 0 +github.com/echovault/echovault/echovault/keyspace.go:92.35,101.4 4 0 +github.com/echovault/echovault/echovault/keyspace.go:102.3,102.9 1 0 +github.com/echovault/echovault/echovault/keyspace.go:106.2,112.58 4 0 +github.com/echovault/echovault/echovault/keyspace.go:115.88,123.27 5 1 +github.com/echovault/echovault/echovault/keyspace.go:123.27,126.3 2 1 +github.com/echovault/echovault/echovault/keyspace.go:128.2,128.15 1 1 +github.com/echovault/echovault/echovault/keyspace.go:131.79,138.9 5 1 +github.com/echovault/echovault/echovault/keyspace.go:138.9,140.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:142.2,142.23 1 1 +github.com/echovault/echovault/echovault/keyspace.go:145.95,153.27 5 1 +github.com/echovault/echovault/echovault/keyspace.go:153.27,155.10 2 1 +github.com/echovault/echovault/echovault/keyspace.go:155.10,157.12 2 1 +github.com/echovault/echovault/echovault/keyspace.go:160.3,160.83 1 1 +github.com/echovault/echovault/echovault/keyspace.go:160.83,161.29 1 0 +github.com/echovault/echovault/echovault/keyspace.go:161.29,164.19 2 0 +github.com/echovault/echovault/echovault/keyspace.go:164.19,166.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:167.10,167.65 1 0 +github.com/echovault/echovault/echovault/keyspace.go:167.65,170.19 2 0 +github.com/echovault/echovault/echovault/keyspace.go:170.19,172.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:173.10,173.66 1 0 +github.com/echovault/echovault/echovault/keyspace.go:173.66,178.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:179.4,180.12 2 0 +github.com/echovault/echovault/echovault/keyspace.go:183.3,183.28 1 1 +github.com/echovault/echovault/echovault/keyspace.go:187.2,187.46 1 1 +github.com/echovault/echovault/echovault/keyspace.go:187.46,188.61 1 1 +github.com/echovault/echovault/echovault/keyspace.go:188.61,190.4 1 0 +github.com/echovault/echovault/echovault/keyspace.go:193.2,193.15 1 1 +github.com/echovault/echovault/echovault/keyspace.go:196.95,200.115 3 1 +github.com/echovault/echovault/echovault/keyspace.go:200.115,202.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:204.2,207.35 2 1 +github.com/echovault/echovault/echovault/keyspace.go:207.35,209.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:211.2,211.34 1 1 +github.com/echovault/echovault/echovault/keyspace.go:211.34,213.47 2 1 +github.com/echovault/echovault/echovault/keyspace.go:213.47,215.4 1 1 +github.com/echovault/echovault/echovault/keyspace.go:216.3,220.28 2 1 +github.com/echovault/echovault/echovault/keyspace.go:220.28,222.4 1 1 +github.com/echovault/echovault/echovault/keyspace.go:226.2,226.63 1 1 +github.com/echovault/echovault/echovault/keyspace.go:226.63,227.31 1 1 +github.com/echovault/echovault/echovault/keyspace.go:227.31,229.18 2 1 +github.com/echovault/echovault/echovault/keyspace.go:229.18,231.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:235.2,235.12 1 1 +github.com/echovault/echovault/echovault/keyspace.go:238.101,251.65 6 1 +github.com/echovault/echovault/echovault/keyspace.go:251.65,253.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:254.2,257.11 2 1 +github.com/echovault/echovault/echovault/keyspace.go:257.11,258.44 1 1 +github.com/echovault/echovault/echovault/keyspace.go:258.44,260.18 2 1 +github.com/echovault/echovault/echovault/keyspace.go:260.18,262.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:267.75,276.117 5 1 +github.com/echovault/echovault/echovault/keyspace.go:276.117,278.3 1 1 +github.com/echovault/echovault/echovault/keyspace.go:281.2,281.9 1 1 +github.com/echovault/echovault/echovault/keyspace.go:282.108,283.46 1 0 +github.com/echovault/echovault/echovault/keyspace.go:284.108,285.46 1 0 +github.com/echovault/echovault/echovault/keyspace.go:288.2,290.12 2 1 +github.com/echovault/echovault/echovault/keyspace.go:293.55,311.2 10 1 +github.com/echovault/echovault/echovault/keyspace.go:313.68,315.6 1 1 +github.com/echovault/echovault/echovault/keyspace.go:315.6,316.83 1 1 +github.com/echovault/echovault/echovault/keyspace.go:316.83,318.9 2 1 +github.com/echovault/echovault/echovault/keyspace.go:321.2,322.38 2 1 +github.com/echovault/echovault/echovault/keyspace.go:322.38,324.27 2 1 +github.com/echovault/echovault/echovault/keyspace.go:324.27,326.4 1 1 +github.com/echovault/echovault/echovault/keyspace.go:328.2,329.13 2 1 +github.com/echovault/echovault/echovault/keyspace.go:334.86,336.27 2 1 +github.com/echovault/echovault/echovault/keyspace.go:336.27,338.84 1 1 +github.com/echovault/echovault/echovault/keyspace.go:338.84,340.4 1 1 +github.com/echovault/echovault/echovault/keyspace.go:342.3,342.35 1 1 +github.com/echovault/echovault/echovault/keyspace.go:342.35,344.4 1 1 +github.com/echovault/echovault/echovault/keyspace.go:345.3,345.56 1 0 +github.com/echovault/echovault/echovault/keyspace.go:346.29,349.34 3 0 +github.com/echovault/echovault/echovault/keyspace.go:350.29,353.34 3 0 +github.com/echovault/echovault/echovault/keyspace.go:354.30,356.61 2 0 +github.com/echovault/echovault/echovault/keyspace.go:356.61,358.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:359.4,359.34 1 0 +github.com/echovault/echovault/echovault/keyspace.go:360.30,362.61 2 0 +github.com/echovault/echovault/echovault/keyspace.go:362.61,364.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:365.4,365.34 1 0 +github.com/echovault/echovault/echovault/keyspace.go:369.2,376.34 6 0 +github.com/echovault/echovault/echovault/keyspace.go:376.34,379.87 3 0 +github.com/echovault/echovault/echovault/keyspace.go:379.87,380.56 1 0 +github.com/echovault/echovault/echovault/keyspace.go:380.56,382.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:383.4,383.13 1 0 +github.com/echovault/echovault/echovault/keyspace.go:387.2,387.12 1 0 +github.com/echovault/echovault/echovault/keyspace.go:387.12,390.3 2 0 +github.com/echovault/echovault/echovault/keyspace.go:392.2,392.9 1 0 +github.com/echovault/echovault/echovault/keyspace.go:393.24,394.57 1 0 +github.com/echovault/echovault/echovault/keyspace.go:395.18,395.18 0 0 +github.com/echovault/echovault/echovault/keyspace.go:398.2,398.12 1 0 +github.com/echovault/echovault/echovault/keyspace.go:402.71,404.34 1 0 +github.com/echovault/echovault/echovault/keyspace.go:404.34,406.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:408.2,415.50 4 0 +github.com/echovault/echovault/echovault/keyspace.go:415.50,417.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:419.2,421.50 3 0 +github.com/echovault/echovault/echovault/keyspace.go:421.50,423.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:427.2,427.9 1 0 +github.com/echovault/echovault/echovault/keyspace.go:428.125,433.7 3 0 +github.com/echovault/echovault/echovault/keyspace.go:433.7,435.50 1 0 +github.com/echovault/echovault/echovault/keyspace.go:435.50,437.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:439.4,440.29 2 0 +github.com/echovault/echovault/echovault/keyspace.go:440.29,442.54 1 0 +github.com/echovault/echovault/echovault/keyspace.go:442.54,444.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:445.10,445.65 1 0 +github.com/echovault/echovault/echovault/keyspace.go:445.65,447.63 1 0 +github.com/echovault/echovault/echovault/keyspace.go:447.63,449.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:452.4,455.52 3 0 +github.com/echovault/echovault/echovault/keyspace.go:455.52,457.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:459.125,464.7 3 0 +github.com/echovault/echovault/echovault/keyspace.go:464.7,466.50 1 0 +github.com/echovault/echovault/echovault/keyspace.go:466.50,468.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:470.4,471.29 2 0 +github.com/echovault/echovault/echovault/keyspace.go:471.29,473.54 1 0 +github.com/echovault/echovault/echovault/keyspace.go:473.54,475.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:476.10,476.65 1 0 +github.com/echovault/echovault/echovault/keyspace.go:476.65,479.63 1 0 +github.com/echovault/echovault/echovault/keyspace.go:479.63,481.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:485.4,488.52 3 0 +github.com/echovault/echovault/echovault/keyspace.go:488.52,490.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:492.105,495.7 1 0 +github.com/echovault/echovault/echovault/keyspace.go:495.7,497.30 1 0 +github.com/echovault/echovault/echovault/keyspace.go:497.30,500.5 2 0 +github.com/echovault/echovault/echovault/keyspace.go:502.4,503.39 2 0 +github.com/echovault/echovault/echovault/keyspace.go:503.39,504.23 1 0 +github.com/echovault/echovault/echovault/keyspace.go:504.23,505.31 1 0 +github.com/echovault/echovault/echovault/keyspace.go:505.31,506.19 1 0 +github.com/echovault/echovault/echovault/keyspace.go:506.19,507.33 1 0 +github.com/echovault/echovault/echovault/keyspace.go:507.33,509.58 1 0 +github.com/echovault/echovault/echovault/keyspace.go:509.58,511.10 1 0 +github.com/echovault/echovault/echovault/keyspace.go:512.14,512.69 1 0 +github.com/echovault/echovault/echovault/keyspace.go:512.69,513.67 1 0 +github.com/echovault/echovault/echovault/keyspace.go:513.67,515.10 1 0 +github.com/echovault/echovault/echovault/keyspace.go:518.8,521.56 3 0 +github.com/echovault/echovault/echovault/keyspace.go:521.56,523.9 1 0 +github.com/echovault/echovault/echovault/keyspace.go:525.7,525.12 1 0 +github.com/echovault/echovault/echovault/keyspace.go:530.106,533.7 1 0 +github.com/echovault/echovault/echovault/keyspace.go:533.7,540.29 5 0 +github.com/echovault/echovault/echovault/keyspace.go:540.29,542.54 1 0 +github.com/echovault/echovault/echovault/keyspace.go:542.54,544.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:545.10,545.65 1 0 +github.com/echovault/echovault/echovault/keyspace.go:545.65,546.63 1 0 +github.com/echovault/echovault/echovault/keyspace.go:546.63,548.6 1 0 +github.com/echovault/echovault/echovault/keyspace.go:552.4,555.52 3 0 +github.com/echovault/echovault/echovault/keyspace.go:555.52,557.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:559.10,560.13 1 0 +github.com/echovault/echovault/echovault/keyspace.go:569.77,571.57 1 0 +github.com/echovault/echovault/echovault/keyspace.go:571.57,573.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:575.2,582.60 4 0 +github.com/echovault/echovault/echovault/keyspace.go:582.60,584.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:585.2,592.33 6 0 +github.com/echovault/echovault/echovault/keyspace.go:592.33,593.7 1 0 +github.com/echovault/echovault/echovault/keyspace.go:593.7,597.35 3 0 +github.com/echovault/echovault/echovault/keyspace.go:597.35,599.10 2 0 +github.com/echovault/echovault/echovault/keyspace.go:603.2,608.25 4 0 +github.com/echovault/echovault/echovault/keyspace.go:608.25,611.28 2 0 +github.com/echovault/echovault/echovault/keyspace.go:611.28,612.51 1 0 +github.com/echovault/echovault/echovault/keyspace.go:612.51,614.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:615.9,615.64 1 0 +github.com/echovault/echovault/echovault/keyspace.go:615.64,616.60 1 0 +github.com/echovault/echovault/echovault/keyspace.go:616.60,618.5 1 0 +github.com/echovault/echovault/echovault/keyspace.go:623.2,623.21 1 0 +github.com/echovault/echovault/echovault/keyspace.go:623.21,625.3 1 0 +github.com/echovault/echovault/echovault/keyspace.go:627.2,630.58 2 0 +github.com/echovault/echovault/echovault/keyspace.go:630.58,634.3 2 0 +github.com/echovault/echovault/echovault/keyspace.go:636.2,636.12 1 0 github.com/echovault/echovault/echovault/modules.go:29.75,32.42 3 1 github.com/echovault/echovault/echovault/modules.go:32.42,33.46 1 1 github.com/echovault/echovault/echovault/modules.go:33.46,35.4 1 1 github.com/echovault/echovault/echovault/modules.go:37.2,37.72 1 1 -github.com/echovault/echovault/echovault/modules.go:40.125,60.37 1 1 -github.com/echovault/echovault/echovault/modules.go:60.37,64.4 3 1 -github.com/echovault/echovault/echovault/modules.go:68.137,70.16 2 1 -github.com/echovault/echovault/echovault/modules.go:70.16,72.3 1 1 -github.com/echovault/echovault/echovault/modules.go:74.2,74.19 1 1 -github.com/echovault/echovault/echovault/modules.go:74.19,76.3 1 1 -github.com/echovault/echovault/echovault/modules.go:79.2,79.39 1 1 -github.com/echovault/echovault/echovault/modules.go:79.39,81.3 1 0 -github.com/echovault/echovault/echovault/modules.go:83.2,84.16 2 1 -github.com/echovault/echovault/echovault/modules.go:84.16,86.3 1 1 -github.com/echovault/echovault/echovault/modules.go:88.2,92.16 4 1 -github.com/echovault/echovault/echovault/modules.go:92.16,94.3 1 1 -github.com/echovault/echovault/echovault/modules.go:95.2,96.8 2 1 -github.com/echovault/echovault/echovault/modules.go:96.8,99.3 2 1 -github.com/echovault/echovault/echovault/modules.go:101.2,101.51 1 1 -github.com/echovault/echovault/echovault/modules.go:101.51,104.87 1 1 -github.com/echovault/echovault/echovault/modules.go:104.87,106.4 1 0 -github.com/echovault/echovault/echovault/modules.go:110.2,110.50 1 1 -github.com/echovault/echovault/echovault/modules.go:110.50,111.7 1 1 -github.com/echovault/echovault/echovault/modules.go:111.7,112.42 1 1 -github.com/echovault/echovault/echovault/modules.go:112.42,114.10 2 1 -github.com/echovault/echovault/echovault/modules.go:119.2,119.43 1 1 -github.com/echovault/echovault/echovault/modules.go:119.43,121.17 2 1 -github.com/echovault/echovault/echovault/modules.go:121.17,123.4 1 1 -github.com/echovault/echovault/echovault/modules.go:125.3,125.62 1 1 -github.com/echovault/echovault/echovault/modules.go:125.62,127.4 1 1 -github.com/echovault/echovault/echovault/modules.go:129.3,131.18 2 1 -github.com/echovault/echovault/echovault/modules.go:135.2,135.32 1 1 -github.com/echovault/echovault/echovault/modules.go:135.32,138.17 3 1 -github.com/echovault/echovault/echovault/modules.go:138.17,140.4 1 0 -github.com/echovault/echovault/echovault/modules.go:141.3,141.18 1 1 -github.com/echovault/echovault/echovault/modules.go:145.2,145.34 1 1 -github.com/echovault/echovault/echovault/modules.go:145.34,148.3 2 1 -github.com/echovault/echovault/echovault/modules.go:150.2,150.72 1 1 -github.com/echovault/echovault/echovault/modules.go:153.59,155.2 1 1 -github.com/echovault/echovault/echovault/modules.go:157.47,159.2 1 1 -github.com/echovault/echovault/echovault/modules.go:161.50,163.2 1 1 -github.com/echovault/echovault/echovault/modules.go:165.49,167.2 1 1 +github.com/echovault/echovault/echovault/modules.go:40.125,63.58 1 1 +github.com/echovault/echovault/echovault/modules.go:63.58,67.4 3 1 +github.com/echovault/echovault/echovault/modules.go:68.67,72.4 3 0 +github.com/echovault/echovault/echovault/modules.go:73.90,83.24 5 0 +github.com/echovault/echovault/echovault/modules.go:83.24,85.5 1 0 +github.com/echovault/echovault/echovault/modules.go:88.4,89.37 2 0 +github.com/echovault/echovault/echovault/modules.go:89.37,91.5 1 0 +github.com/echovault/echovault/echovault/modules.go:92.4,97.43 3 0 +github.com/echovault/echovault/echovault/modules.go:102.137,105.25 2 1 +github.com/echovault/echovault/echovault/modules.go:105.25,111.3 3 1 +github.com/echovault/echovault/echovault/modules.go:111.8,117.3 3 1 +github.com/echovault/echovault/echovault/modules.go:118.2,121.16 3 1 +github.com/echovault/echovault/echovault/modules.go:121.16,123.3 1 1 +github.com/echovault/echovault/echovault/modules.go:125.2,125.19 1 1 +github.com/echovault/echovault/echovault/modules.go:125.19,127.3 1 1 +github.com/echovault/echovault/echovault/modules.go:130.2,130.39 1 1 +github.com/echovault/echovault/echovault/modules.go:130.39,132.3 1 0 +github.com/echovault/echovault/echovault/modules.go:134.2,135.16 2 1 +github.com/echovault/echovault/echovault/modules.go:135.16,137.3 1 1 +github.com/echovault/echovault/echovault/modules.go:139.2,143.16 4 1 +github.com/echovault/echovault/echovault/modules.go:143.16,145.3 1 1 +github.com/echovault/echovault/echovault/modules.go:146.2,147.8 2 1 +github.com/echovault/echovault/echovault/modules.go:147.8,150.3 2 1 +github.com/echovault/echovault/echovault/modules.go:152.2,152.51 1 1 +github.com/echovault/echovault/echovault/modules.go:152.51,155.87 1 1 +github.com/echovault/echovault/echovault/modules.go:155.87,157.4 1 0 +github.com/echovault/echovault/echovault/modules.go:161.2,161.50 1 1 +github.com/echovault/echovault/echovault/modules.go:161.50,162.7 1 1 +github.com/echovault/echovault/echovault/modules.go:162.7,163.42 1 1 +github.com/echovault/echovault/echovault/modules.go:163.42,165.10 2 1 +github.com/echovault/echovault/echovault/modules.go:170.2,170.43 1 1 +github.com/echovault/echovault/echovault/modules.go:170.43,172.17 2 1 +github.com/echovault/echovault/echovault/modules.go:172.17,174.4 1 1 +github.com/echovault/echovault/echovault/modules.go:176.3,176.62 1 1 +github.com/echovault/echovault/echovault/modules.go:176.62,180.4 3 1 +github.com/echovault/echovault/echovault/modules.go:182.3,184.18 2 1 +github.com/echovault/echovault/echovault/modules.go:188.2,188.32 1 1 +github.com/echovault/echovault/echovault/modules.go:188.32,191.17 3 1 +github.com/echovault/echovault/echovault/modules.go:191.17,193.4 1 0 +github.com/echovault/echovault/echovault/modules.go:194.3,194.18 1 1 +github.com/echovault/echovault/echovault/modules.go:198.2,198.34 1 1 +github.com/echovault/echovault/echovault/modules.go:198.34,201.3 2 1 +github.com/echovault/echovault/echovault/modules.go:203.2,203.72 1 1 +github.com/echovault/echovault/echovault/modules.go:206.59,208.2 1 1 +github.com/echovault/echovault/echovault/modules.go:210.47,212.2 1 1 +github.com/echovault/echovault/echovault/modules.go:214.50,216.2 1 1 +github.com/echovault/echovault/echovault/modules.go:218.49,220.2 1 1 github.com/echovault/echovault/echovault/plugin.go:37.72,41.41 3 1 github.com/echovault/echovault/echovault/plugin.go:41.41,42.37 1 1 github.com/echovault/echovault/echovault/plugin.go:42.37,44.4 1 1 @@ -8337,334 +4102,7 @@ github.com/echovault/echovault/echovault/plugin.go:183.6,185.4 1 1 github.com/echovault/echovault/echovault/plugin.go:187.2,187.16 1 1 github.com/echovault/echovault/echovault/test_helpers.go:10.35,18.2 2 1 github.com/echovault/echovault/echovault/test_helpers.go:20.63,25.2 2 1 -github.com/echovault/echovault/echovault/test_helpers.go:27.95,28.82 1 1 -github.com/echovault/echovault/echovault/test_helpers.go:28.82,30.3 1 0 -github.com/echovault/echovault/echovault/test_helpers.go:31.2,31.12 1 1 -github.com/echovault/echovault/echovault/test_helpers.go:34.95,37.2 2 1 -github.com/echovault/echovault/internal/utils.go:41.38,45.16 2 1 -github.com/echovault/echovault/internal/utils.go:45.16,47.3 1 1 -github.com/echovault/echovault/internal/utils.go:49.2,49.15 1 1 -github.com/echovault/echovault/internal/utils.go:49.15,52.3 2 1 -github.com/echovault/echovault/internal/utils.go:54.2,56.10 2 1 -github.com/echovault/echovault/internal/utils.go:59.43,63.16 3 1 -github.com/echovault/echovault/internal/utils.go:63.16,65.3 1 1 -github.com/echovault/echovault/internal/utils.go:67.2,68.42 2 1 -github.com/echovault/echovault/internal/utils.go:68.42,70.3 1 1 -github.com/echovault/echovault/internal/utils.go:72.2,72.17 1 1 -github.com/echovault/echovault/internal/utils.go:75.47,82.6 4 1 -github.com/echovault/echovault/internal/utils.go:82.6,84.43 2 1 -github.com/echovault/echovault/internal/utils.go:84.43,85.9 1 1 -github.com/echovault/echovault/internal/utils.go:87.3,87.17 1 1 -github.com/echovault/echovault/internal/utils.go:87.17,89.4 1 0 -github.com/echovault/echovault/internal/utils.go:90.3,91.21 2 1 -github.com/echovault/echovault/internal/utils.go:91.21,92.9 1 1 -github.com/echovault/echovault/internal/utils.go:94.3,94.15 1 0 -github.com/echovault/echovault/internal/utils.go:97.2,97.37 1 1 -github.com/echovault/echovault/internal/utils.go:100.120,102.20 2 1 -github.com/echovault/echovault/internal/utils.go:102.20,104.3 1 1 -github.com/echovault/echovault/internal/utils.go:105.2,105.16 1 1 -github.com/echovault/echovault/internal/utils.go:105.16,107.3 1 1 -github.com/echovault/echovault/internal/utils.go:108.2,108.24 1 1 -github.com/echovault/echovault/internal/utils.go:108.24,110.3 1 0 -github.com/echovault/echovault/internal/utils.go:111.2,111.21 1 1 -github.com/echovault/echovault/internal/utils.go:111.21,113.3 1 0 -github.com/echovault/echovault/internal/utils.go:114.2,114.16 1 1 -github.com/echovault/echovault/internal/utils.go:117.37,119.16 2 1 -github.com/echovault/echovault/internal/utils.go:119.16,121.3 1 0 -github.com/echovault/echovault/internal/utils.go:122.2,122.15 1 1 -github.com/echovault/echovault/internal/utils.go:122.15,123.37 1 1 -github.com/echovault/echovault/internal/utils.go:123.37,125.4 1 0 -github.com/echovault/echovault/internal/utils.go:128.2,130.23 2 1 -github.com/echovault/echovault/internal/utils.go:133.72,134.65 1 1 -github.com/echovault/echovault/internal/utils.go:134.65,137.3 1 1 -github.com/echovault/echovault/internal/utils.go:138.2,138.18 1 1 -github.com/echovault/echovault/internal/utils.go:138.18,141.3 1 0 -github.com/echovault/echovault/internal/utils.go:142.2,142.49 1 1 -github.com/echovault/echovault/internal/utils.go:142.49,143.52 1 1 -github.com/echovault/echovault/internal/utils.go:143.52,145.4 1 1 -github.com/echovault/echovault/internal/utils.go:147.2,147.71 1 1 -github.com/echovault/echovault/internal/utils.go:150.66,152.2 1 1 -github.com/echovault/echovault/internal/utils.go:154.24,155.11 1 1 -github.com/echovault/echovault/internal/utils.go:155.11,157.3 1 1 -github.com/echovault/echovault/internal/utils.go:158.2,158.10 1 1 -github.com/echovault/echovault/internal/utils.go:162.49,166.16 3 0 -github.com/echovault/echovault/internal/utils.go:166.16,168.3 1 0 -github.com/echovault/echovault/internal/utils.go:170.2,171.17 2 0 -github.com/echovault/echovault/internal/utils.go:172.12,173.19 1 0 -github.com/echovault/echovault/internal/utils.go:174.12,175.26 1 0 -github.com/echovault/echovault/internal/utils.go:176.12,177.33 1 0 -github.com/echovault/echovault/internal/utils.go:178.12,179.40 1 0 -github.com/echovault/echovault/internal/utils.go:180.12,181.47 1 0 -github.com/echovault/echovault/internal/utils.go:182.10,183.91 1 0 -github.com/echovault/echovault/internal/utils.go:186.2,186.30 1 0 -github.com/echovault/echovault/internal/utils.go:190.49,191.20 1 1 -github.com/echovault/echovault/internal/utils.go:191.20,193.3 1 1 -github.com/echovault/echovault/internal/utils.go:195.2,199.36 3 0 -github.com/echovault/echovault/internal/utils.go:199.36,201.3 1 0 -github.com/echovault/echovault/internal/utils.go:206.2,210.40 3 0 -github.com/echovault/echovault/internal/utils.go:214.84,216.26 2 1 -github.com/echovault/echovault/internal/utils.go:216.26,218.34 1 1 -github.com/echovault/echovault/internal/utils.go:218.34,219.12 1 1 -github.com/echovault/echovault/internal/utils.go:222.3,222.29 1 0 -github.com/echovault/echovault/internal/utils.go:222.29,224.4 1 0 -github.com/echovault/echovault/internal/utils.go:226.2,226.35 1 1 -github.com/echovault/echovault/internal/utils.go:226.35,228.3 1 0 -github.com/echovault/echovault/internal/utils.go:229.2,229.14 1 1 -github.com/echovault/echovault/internal/utils.go:234.43,235.14 1 1 -github.com/echovault/echovault/internal/utils.go:235.14,237.3 1 1 -github.com/echovault/echovault/internal/utils.go:238.2,238.30 1 1 -github.com/echovault/echovault/internal/utils.go:238.30,240.3 1 0 -github.com/echovault/echovault/internal/utils.go:241.2,241.30 1 1 -github.com/echovault/echovault/internal/utils.go:241.30,243.3 1 0 -github.com/echovault/echovault/internal/utils.go:245.2,246.21 2 1 -github.com/echovault/echovault/internal/utils.go:246.21,248.3 1 0 -github.com/echovault/echovault/internal/utils.go:250.2,251.29 2 1 -github.com/echovault/echovault/internal/utils.go:251.29,253.13 2 1 -github.com/echovault/echovault/internal/utils.go:253.13,254.9 1 1 -github.com/echovault/echovault/internal/utils.go:258.2,258.10 1 1 -github.com/echovault/echovault/internal/utils.go:261.41,263.28 2 1 -github.com/echovault/echovault/internal/utils.go:263.28,265.3 1 1 -github.com/echovault/echovault/internal/utils.go:266.2,266.20 1 1 -github.com/echovault/echovault/internal/utils.go:269.47,272.16 3 1 -github.com/echovault/echovault/internal/utils.go:272.16,274.3 1 0 -github.com/echovault/echovault/internal/utils.go:275.2,275.24 1 1 -github.com/echovault/echovault/internal/utils.go:278.52,281.16 3 1 -github.com/echovault/echovault/internal/utils.go:281.16,283.3 1 0 -github.com/echovault/echovault/internal/utils.go:284.2,284.24 1 1 -github.com/echovault/echovault/internal/utils.go:287.50,290.16 3 1 -github.com/echovault/echovault/internal/utils.go:290.16,292.3 1 0 -github.com/echovault/echovault/internal/utils.go:293.2,293.25 1 1 -github.com/echovault/echovault/internal/utils.go:296.52,299.16 3 1 -github.com/echovault/echovault/internal/utils.go:299.16,301.3 1 0 -github.com/echovault/echovault/internal/utils.go:302.2,302.23 1 1 -github.com/echovault/echovault/internal/utils.go:305.51,308.16 3 1 -github.com/echovault/echovault/internal/utils.go:308.16,310.3 1 0 -github.com/echovault/echovault/internal/utils.go:311.2,311.22 1 1 -github.com/echovault/echovault/internal/utils.go:314.59,317.16 3 1 -github.com/echovault/echovault/internal/utils.go:317.16,319.3 1 0 -github.com/echovault/echovault/internal/utils.go:320.2,320.16 1 1 -github.com/echovault/echovault/internal/utils.go:320.16,322.3 1 1 -github.com/echovault/echovault/internal/utils.go:323.2,324.30 2 1 -github.com/echovault/echovault/internal/utils.go:324.30,325.17 1 1 -github.com/echovault/echovault/internal/utils.go:325.17,327.12 2 1 -github.com/echovault/echovault/internal/utils.go:329.3,329.22 1 1 -github.com/echovault/echovault/internal/utils.go:331.2,331.17 1 1 -github.com/echovault/echovault/internal/utils.go:334.67,337.16 3 1 -github.com/echovault/echovault/internal/utils.go:337.16,339.3 1 0 -github.com/echovault/echovault/internal/utils.go:340.2,340.16 1 1 -github.com/echovault/echovault/internal/utils.go:340.16,342.3 1 0 -github.com/echovault/echovault/internal/utils.go:343.2,344.31 2 1 -github.com/echovault/echovault/internal/utils.go:344.31,345.18 1 1 -github.com/echovault/echovault/internal/utils.go:345.18,347.12 2 0 -github.com/echovault/echovault/internal/utils.go:349.3,350.33 2 1 -github.com/echovault/echovault/internal/utils.go:350.33,352.4 1 1 -github.com/echovault/echovault/internal/utils.go:353.3,353.17 1 1 -github.com/echovault/echovault/internal/utils.go:355.2,355.17 1 1 -github.com/echovault/echovault/internal/utils.go:358.57,361.16 3 1 -github.com/echovault/echovault/internal/utils.go:361.16,363.3 1 0 -github.com/echovault/echovault/internal/utils.go:364.2,364.16 1 1 -github.com/echovault/echovault/internal/utils.go:364.16,366.3 1 0 -github.com/echovault/echovault/internal/utils.go:367.2,368.30 2 1 -github.com/echovault/echovault/internal/utils.go:368.30,369.17 1 1 -github.com/echovault/echovault/internal/utils.go:369.17,371.12 2 0 -github.com/echovault/echovault/internal/utils.go:373.3,373.23 1 1 -github.com/echovault/echovault/internal/utils.go:375.2,375.17 1 1 -github.com/echovault/echovault/internal/utils.go:378.58,381.16 3 1 -github.com/echovault/echovault/internal/utils.go:381.16,383.3 1 0 -github.com/echovault/echovault/internal/utils.go:384.2,384.16 1 1 -github.com/echovault/echovault/internal/utils.go:384.16,386.3 1 0 -github.com/echovault/echovault/internal/utils.go:387.2,388.30 2 1 -github.com/echovault/echovault/internal/utils.go:388.30,389.17 1 1 -github.com/echovault/echovault/internal/utils.go:389.17,391.12 2 0 -github.com/echovault/echovault/internal/utils.go:393.3,393.20 1 1 -github.com/echovault/echovault/internal/utils.go:395.2,395.17 1 1 -github.com/echovault/echovault/internal/utils.go:398.70,399.32 1 1 -github.com/echovault/echovault/internal/utils.go:399.32,400.60 1 1 -github.com/echovault/echovault/internal/utils.go:400.60,402.4 1 1 -github.com/echovault/echovault/internal/utils.go:402.6,404.4 1 0 -github.com/echovault/echovault/internal/utils.go:406.2,406.30 1 1 -github.com/echovault/echovault/internal/utils.go:406.30,407.62 1 1 -github.com/echovault/echovault/internal/utils.go:407.62,409.4 1 1 -github.com/echovault/echovault/internal/utils.go:409.6,411.4 1 0 -github.com/echovault/echovault/internal/utils.go:413.2,413.13 1 1 -github.com/echovault/echovault/internal/utils.go:416.33,418.16 2 1 -github.com/echovault/echovault/internal/utils.go:418.16,420.3 1 0 -github.com/echovault/echovault/internal/utils.go:422.2,423.16 2 1 -github.com/echovault/echovault/internal/utils.go:423.16,425.3 1 0 -github.com/echovault/echovault/internal/utils.go:426.2,426.15 1 1 -github.com/echovault/echovault/internal/utils.go:426.15,428.3 1 1 -github.com/echovault/echovault/internal/utils.go:430.2,430.42 1 1 -github.com/echovault/echovault/internal/utils.go:433.61,438.12 4 1 -github.com/echovault/echovault/internal/utils.go:438.12,439.7 1 1 -github.com/echovault/echovault/internal/utils.go:439.7,441.73 2 1 -github.com/echovault/echovault/internal/utils.go:441.73,443.13 1 0 -github.com/echovault/echovault/internal/utils.go:445.4,445.9 1 1 -github.com/echovault/echovault/internal/utils.go:447.3,447.21 1 1 -github.com/echovault/echovault/internal/utils.go:450.2,451.15 2 1 -github.com/echovault/echovault/internal/utils.go:451.15,453.3 1 1 -github.com/echovault/echovault/internal/utils.go:455.2,455.9 1 1 -github.com/echovault/echovault/internal/utils.go:456.18,457.47 1 0 -github.com/echovault/echovault/internal/utils.go:458.14,459.19 1 1 -github.com/echovault/echovault/internal/utils.go:463.84,468.12 4 1 -github.com/echovault/echovault/internal/utils.go:468.12,469.7 1 1 -github.com/echovault/echovault/internal/utils.go:469.7,471.73 2 1 -github.com/echovault/echovault/internal/utils.go:471.73,473.13 1 1 -github.com/echovault/echovault/internal/utils.go:475.4,475.9 1 1 -github.com/echovault/echovault/internal/utils.go:477.3,477.21 1 1 -github.com/echovault/echovault/internal/utils.go:480.2,481.15 2 1 -github.com/echovault/echovault/internal/utils.go:481.15,483.3 1 1 -github.com/echovault/echovault/internal/utils.go:485.2,485.9 1 1 -github.com/echovault/echovault/internal/utils.go:486.18,487.47 1 0 -github.com/echovault/echovault/internal/utils.go:488.14,489.19 1 1 -github.com/echovault/echovault/internal/clock/clock.go:14.23,16.43 1 1 -github.com/echovault/echovault/internal/clock/clock.go:16.43,18.3 1 1 -github.com/echovault/echovault/internal/clock/clock.go:19.2,19.20 1 0 -github.com/echovault/echovault/internal/clock/clock.go:24.34,26.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:28.58,30.2 1 0 -github.com/echovault/echovault/internal/clock/clock.go:34.34,37.2 2 1 -github.com/echovault/echovault/internal/clock/clock.go:39.58,41.2 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:32.88,35.9 2 1 -github.com/echovault/echovault/internal/memberlist/broadcast.go:35.9,37.3 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:39.2,39.33 1 1 -github.com/echovault/echovault/internal/memberlist/broadcast.go:40.18,42.56 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:43.20,45.62 1 1 -github.com/echovault/echovault/internal/memberlist/broadcast.go:46.10,47.15 1 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:52.60,55.16 2 1 -github.com/echovault/echovault/internal/memberlist/broadcast.go:55.16,58.3 2 0 -github.com/echovault/echovault/internal/memberlist/broadcast.go:60.2,60.12 1 1 -github.com/echovault/echovault/internal/memberlist/broadcast.go:64.55,66.2 0 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:42.47,46.2 1 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:49.54,59.16 3 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:59.16,61.3 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:63.2,63.10 1 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:67.54,69.55 2 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:69.55,72.3 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:74.2,74.20 1 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:75.18,77.39 1 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:77.39,80.4 2 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:81.3,82.17 2 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:86.19,88.39 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:88.39,91.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:93.3,99.67 3 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:99.67,101.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:103.20,105.39 1 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:105.39,108.4 2 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:110.3,115.17 3 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:115.17,118.4 2 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.3,120.67 1 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:120.67,122.4 1 0 -github.com/echovault/echovault/internal/memberlist/delegate.go:127.71,129.2 1 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:132.56,135.2 1 1 -github.com/echovault/echovault/internal/memberlist/delegate.go:138.68,140.2 0 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:33.62,37.2 1 1 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:40.71,42.2 1 1 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:45.72,52.16 4 1 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:52.16,55.3 2 0 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:57.2,59.16 2 1 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:59.16,61.3 1 1 -github.com/echovault/echovault/internal/memberlist/event_delegate.go:65.74,67.2 0 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:54.43,60.2 1 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:62.58,77.28 7 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:77.28,77.49 1 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:78.28,78.49 1 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:82.2,83.41 2 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:83.41,85.3 1 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:87.2,90.16 3 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:90.16,92.3 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.2,94.37 1 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:94.37,97.70 2 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:97.70,99.18 2 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:99.18,101.5 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:102.4,102.14 1 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.3,105.17 1 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:105.17,107.4 1 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:109.3,109.27 1 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:113.45,123.2 2 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:127.72,140.2 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:144.75,157.2 2 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:159.43,162.16 2 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:162.16,165.3 2 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:167.2,168.16 2 1 -github.com/echovault/echovault/internal/memberlist/memberlist.go:168.16,171.3 2 0 -github.com/echovault/echovault/internal/memberlist/memberlist.go:173.2,173.49 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:48.36,52.2 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:55.50,56.18 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:57.10,57.10 0 0 -github.com/echovault/echovault/internal/raft/fsm.go:59.23,62.60 2 1 -github.com/echovault/echovault/internal/raft/fsm.go:62.60,67.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:69.3,72.40 3 1 -github.com/echovault/echovault/internal/raft/fsm.go:73.11,77.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:79.21,80.61 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:80.61,85.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:86.4,89.5 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:91.18,94.18 2 1 -github.com/echovault/echovault/internal/raft/fsm.go:94.18,99.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:101.4,104.18 3 1 -github.com/echovault/echovault/internal/raft/fsm.go:104.18,109.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:110.4,111.10 2 1 -github.com/echovault/echovault/internal/raft/fsm.go:111.10,113.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:115.4,115.96 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:115.96,120.5 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:120.10,125.5 1 1 -github.com/echovault/echovault/internal/raft/fsm.go:129.2,129.12 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:133.54,141.2 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:144.55,147.16 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:147.16,150.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:152.2,157.48 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:157.48,160.3 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:163.2,164.71 2 0 -github.com/echovault/echovault/internal/raft/fsm.go:164.71,165.87 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:165.87,167.4 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:168.3,168.51 1 0 -github.com/echovault/echovault/internal/raft/fsm.go:171.2,173.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:39.50,43.2 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:46.58,50.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:50.16,53.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:55.2,62.16 3 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:62.16,65.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.2,67.40 1 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:67.40,70.3 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:72.2,74.12 2 0 -github.com/echovault/echovault/internal/raft/fsm_snapshot.go:78.30,80.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:52.31,56.2 1 1 -github.com/echovault/echovault/internal/raft/raft.go:58.46,70.24 9 1 -github.com/echovault/echovault/internal/raft/raft.go:70.24,75.3 3 1 -github.com/echovault/echovault/internal/raft/raft.go:75.8,77.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:77.17,79.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:81.3,82.17 2 0 -github.com/echovault/echovault/internal/raft/raft.go:82.17,84.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:86.3,89.17 3 0 -github.com/echovault/echovault/internal/raft/raft.go:89.17,91.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:94.2,96.16 3 1 -github.com/echovault/echovault/internal/raft/raft.go:96.16,98.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:100.2,108.16 2 1 -github.com/echovault/echovault/internal/raft/raft.go:108.16,110.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:113.2,133.16 2 1 -github.com/echovault/echovault/internal/raft/raft.go:133.16,135.3 1 0 -github.com/echovault/echovault/internal/raft/raft.go:137.2,137.27 1 1 -github.com/echovault/echovault/internal/raft/raft.go:137.27,148.3 1 1 -github.com/echovault/echovault/internal/raft/raft.go:150.2,150.21 1 1 -github.com/echovault/echovault/internal/raft/raft.go:153.74,155.2 1 1 -github.com/echovault/echovault/internal/raft/raft.go:157.36,159.2 1 1 -github.com/echovault/echovault/internal/raft/raft.go:161.38,163.2 1 1 -github.com/echovault/echovault/internal/raft/raft.go:165.40,172.2 4 1 -github.com/echovault/echovault/internal/raft/raft.go:179.9,180.22 1 1 -github.com/echovault/echovault/internal/raft/raft.go:180.22,182.44 2 1 -github.com/echovault/echovault/internal/raft/raft.go:182.44,184.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:186.3,186.56 1 1 -github.com/echovault/echovault/internal/raft/raft.go:186.56,188.42 1 1 -github.com/echovault/echovault/internal/raft/raft.go:188.42,190.5 1 0 -github.com/echovault/echovault/internal/raft/raft.go:193.3,194.17 2 1 -github.com/echovault/echovault/internal/raft/raft.go:194.17,196.4 1 0 -github.com/echovault/echovault/internal/raft/raft.go:199.2,199.12 1 1 -github.com/echovault/echovault/internal/raft/raft.go:202.61,203.23 1 1 -github.com/echovault/echovault/internal/raft/raft.go:203.23,205.3 1 1 -github.com/echovault/echovault/internal/raft/raft.go:207.2,207.73 1 1 -github.com/echovault/echovault/internal/raft/raft.go:207.73,209.3 1 1 -github.com/echovault/echovault/internal/raft/raft.go:211.2,211.12 1 1 -github.com/echovault/echovault/internal/raft/raft.go:214.37,216.2 1 0 -github.com/echovault/echovault/internal/raft/raft.go:218.31,220.22 1 1 -github.com/echovault/echovault/internal/raft/raft.go:220.22,222.17 2 1 -github.com/echovault/echovault/internal/raft/raft.go:222.17,225.4 2 1 -github.com/echovault/echovault/internal/raft/raft.go:226.3,226.49 1 0 +github.com/echovault/echovault/echovault/test_helpers.go:27.95,29.82 2 1 +github.com/echovault/echovault/echovault/test_helpers.go:29.82,31.3 1 0 +github.com/echovault/echovault/echovault/test_helpers.go:32.2,32.12 1 1 +github.com/echovault/echovault/echovault/test_helpers.go:35.95,39.2 3 1 diff --git a/docker-compose.yaml b/docker-compose.yaml index 56c1ce9e..713e8ad1 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -39,14 +39,13 @@ services: # List of client certificate authorities - CLIENT_CA_1=/etc/ssl/certs/echovault/client/rootCA.crt # List of shared object plugins to load on startup - - MODULE_1=/lib/echovault/modules/module_set/module_set.so - - MODULE_2=/lib/echovault/modules/module_get/module_get.so + - MODULE_1=./modules/module_set/module_set.so + - MODULE_2=./modules/module_get/module_get.so ports: - "7480:7480" - "7946:7946" volumes: - ./volumes/config:/etc/echovault/config - - ./volumes/modules:/lib/echovault/modules - ./volumes/nodes/standalone_node:/var/lib/echovault networks: - testnet @@ -84,14 +83,13 @@ services: # List of client certificate authorities - CLIENT_CA_1=/etc/ssl/certs/echovault/client/rootCA.crt # List of shared object plugins to load on startup - - MODULE_1=/lib/echovault/modules/module_set/module_set.so - - MODULE_2=/lib/echovault/modules/module_get/module_get.so + - MODULE_1=./modules/module_set/module_set.so + - MODULE_2=./modules/module_get/module_get.so ports: - "7481:7480" - "7945:7946" volumes: - ./volumes/config:/etc/echovault/config - - ./volumes/plugins:/lib/echovault/plugins - ./volumes/nodes/cluster_node_1:/var/lib/echovault networks: - testnet @@ -129,14 +127,13 @@ services: # List of client certificate authorities - CLIENT_CA_1=/etc/ssl/certs/echovault/client/rootCA.crt # List of shared object plugins to load on startup - - MODULE_1=/lib/echovault/modules/module_set/module_set.so - - MODULE_2=/lib/echovault/modules/module_get/module_get.so + - MODULE_1=./modules/module_set/module_set.so + - MODULE_2=./modules/module_get/module_get.so ports: - "7482:7480" - "7947:7946" volumes: - ./volumes/config:/etc/echovault/config - - ./volumes/plugins:/lib/echovault/plugins - ./volumes/nodes/cluster_node_2:/var/lib/echovault networks: - testnet @@ -174,14 +171,13 @@ services: # List of client certificate authorities - CLIENT_CA_1=/etc/ssl/certs/echovault/client/rootCA.crt # List of shared object plugins to load on startup - - MODULE_1=/lib/echovault/modules/module_set/module_set.so - - MODULE_2=/lib/echovault/modules/module_get/module_get.so + - MODULE_1=./modules/module_set/module_set.so + - MODULE_2=./modules/module_get/module_get.so ports: - "7483:7480" - "7948:7946" volumes: - ./volumes/config:/etc/echovault/config - - ./volumes/plugins:/lib/echovault/plugins - ./volumes/nodes/cluster_node_3:/var/lib/echovault networks: - testnet @@ -219,14 +215,13 @@ services: # List of client certificate authorities - CLIENT_CA_1=/etc/ssl/certs/echovault/client/rootCA.crt # List of shared object plugins to load on startup - - MODULE_1=/lib/echovault/modules/module_set/module_set.so - - MODULE_2=/lib/echovault/modules/module_get/module_get.so + - MODULE_1=./modules/module_set/module_set.so + - MODULE_2=./modules/module_get/module_get.so ports: - "7484:7480" - "7949:7946" volumes: - ./volumes/config:/etc/echovault/config - - ./volumes/plugins:/lib/echovault/plugins - ./volumes/nodes/cluster_node_4:/var/lib/echovault networks: - testnet @@ -264,14 +259,13 @@ services: # List of client certificate authorities - CLIENT_CA_1=/etc/ssl/certs/echovault/client/rootCA.crt # List of shared object plugins to load on startup - - MODULE_1=/lib/echovault/modules/module_set/module_set.so - - MODULE_2=/lib/echovault/modules/module_get/module_get.so + - MODULE_1=./modules/module_set/module_set.so + - MODULE_2=./modules/module_get/module_get.so ports: - "7485:7480" - "7950:7946" volumes: - ./volumes/config:/etc/echovault/config - - ./volumes/plugins:/lib/echovault/plugins - ./volumes/nodes/cluster_node_5:/var/lib/echovault networks: - testnet \ No newline at end of file diff --git a/echovault/api_acl_test.go b/echovault/api_acl_test.go index d0473921..d6b05389 100644 --- a/echovault/api_acl_test.go +++ b/echovault/api_acl_test.go @@ -418,8 +418,6 @@ func TestEchoVault_ACLConfig(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - t.Parallel() - // Create new server instance conf := DefaultConfig() conf.DataDir = "" diff --git a/echovault/api_admin.go b/echovault/api_admin.go index 7f070e6c..1fde3743 100644 --- a/echovault/api_admin.go +++ b/echovault/api_admin.go @@ -66,7 +66,7 @@ type CommandHandlerFunc func(params CommandHandlerFuncParams) ([]byte, error) type CommandHandlerFuncParams struct { Context context.Context Command []string - KeysExist func(keys []string) map[string]bool + KeysExist func(ctx context.Context, keys []string) map[string]bool GetValues func(ctx context.Context, keys []string) map[string]interface{} SetValues func(ctx context.Context, entries map[string]interface{}) error } diff --git a/echovault/api_connection.go b/echovault/api_connection.go index afd234ac..e3f3b030 100644 --- a/echovault/api_connection.go +++ b/echovault/api_connection.go @@ -13,3 +13,58 @@ // limitations under the License. package echovault + +import ( + "errors" + "slices" +) + +// SetProtocol sets the RESP protocol that's expected from responses to embedded API calls. +// This command does not affect the RESP protocol expected by any of the TCP clients. +// +// Parameters: +// +// `protocol` - int - The RESP version (either 2 or 3). +// +// Errors: +// +// "protocol must be either 2 or 3" - When the provided protocol is not either 2 or 3. +func (server *EchoVault) SetProtocol(protocol int) error { + if !slices.Contains([]int{2, 3}, protocol) { + return errors.New("protocol must be either 2 or 3") + } + server.connInfo.mut.Lock() + defer server.connInfo.mut.Unlock() + server.connInfo.embedded.Protocol = protocol + return nil +} + +// SelectDB sets the logical database to use for all embedded API calls. +// All subsequent calls after this call will use the new logical database. +// This does not affect the databases used by any of the TCP clients. +// +// Parameters: +// +// `database` - int - The Database index. +// +// Errors: +// +// "database index must be 0 or higher" - When the database index is less than 0. +func (server *EchoVault) SelectDB(database int) error { + if database < 0 { + return errors.New("database index must be 0 or higher") + } + // If the database index does not exist, create the new database. + server.storeLock.Lock() + if server.store[database] == nil { + server.createDatabase(database) + } + server.storeLock.Unlock() + + // Set the DB. + server.connInfo.mut.Lock() + defer server.connInfo.mut.Unlock() + server.connInfo.embedded.Database = database + + return nil +} diff --git a/echovault/api_connection_test.go b/echovault/api_connection_test.go index afd234ac..638e2b11 100644 --- a/echovault/api_connection_test.go +++ b/echovault/api_connection_test.go @@ -13,3 +13,273 @@ // limitations under the License. package echovault + +import ( + "bufio" + "bytes" + "github.com/echovault/echovault/internal" + "github.com/echovault/echovault/internal/constants" + "github.com/echovault/echovault/internal/modules/connection" + "github.com/tidwall/resp" + "reflect" + "testing" +) + +func TestEchoVault_Hello(t *testing.T) { + t.Parallel() + + port, err := internal.GetFreePort() + if err != nil { + t.Error(err) + return + } + + conf := DefaultConfig() + conf.Port = uint16(port) + conf.RequirePass = false + + mockServer := createEchoVaultWithConfig(conf) + if err != nil { + t.Error(err) + return + } + go func() { + mockServer.Start() + }() + t.Cleanup(func() { + mockServer.ShutDown() + }) + + tests := []struct { + name string + command []resp.Value + wantRes []byte + }{ + { + name: "1. Hello", + command: []resp.Value{resp.StringValue("HELLO")}, + wantRes: connection.BuildHelloResponse( + internal.ServerInfo{ + Server: "echovault", + Version: constants.Version, + Id: "", + Mode: "standalone", + Role: "master", + Modules: mockServer.ListModules(), + }, + internal.ConnectionInfo{ + Id: 1, + Name: "", + Protocol: 2, + Database: 0, + }, + ), + }, + { + name: "2. Hello 2", + command: []resp.Value{resp.StringValue("HELLO"), resp.StringValue("2")}, + wantRes: connection.BuildHelloResponse( + internal.ServerInfo{ + Server: "echovault", + Version: constants.Version, + Id: "", + Mode: "standalone", + Role: "master", + Modules: mockServer.ListModules(), + }, + internal.ConnectionInfo{ + Id: 2, + Name: "", + Protocol: 2, + Database: 0, + }, + ), + }, + { + name: "3. Hello 3", + command: []resp.Value{resp.StringValue("HELLO"), resp.StringValue("3")}, + wantRes: connection.BuildHelloResponse( + internal.ServerInfo{ + Server: "echovault", + Version: constants.Version, + Id: "", + Mode: "standalone", + Role: "master", + Modules: mockServer.ListModules(), + }, + internal.ConnectionInfo{ + Id: 3, + Name: "", + Protocol: 3, + Database: 0, + }, + ), + }, + } + + for i := 0; i < len(tests); i++ { + conn, err := internal.GetConnection("localhost", port) + if err != nil { + t.Error(err) + return + } + client := resp.NewConn(conn) + + if err = client.WriteArray(tests[i].command); err != nil { + t.Error(err) + return + } + + buf := bufio.NewReader(conn) + res, err := internal.ReadMessage(buf) + if err != nil { + t.Error(err) + return + } + + if !bytes.Equal(tests[i].wantRes, res) { + t.Errorf("expected byte resposne:\n%s, \n\ngot:\n%s", string(tests[i].wantRes), string(res)) + return + } + + // Close connection + _ = conn.Close() + } +} + +func TestEchoVault_SelectDB(t *testing.T) { + t.Parallel() + tests := []struct { + name string + presetValues map[int]map[string]string + database int + want map[int][]string + wantErr bool + }{ + { + name: "1. Change database and read new values", + presetValues: map[int]map[string]string{ + 0: {"key1": "value-01", "key2": "value-02", "key3": "value-03"}, + 1: {"key1": "value-11", "key2": "value-12", "key3": "value-13"}, + }, + database: 1, + want: map[int][]string{ + 0: {"value-01", "value-02", "value-03"}, + 1: {"value-11", "value-12", "value-13"}, + }, + wantErr: false, + }, + { + name: "2. Error when database parameter is < 0", + presetValues: map[int]map[string]string{ + 0: {"key1": "value-01", "key2": "value-02", "key3": "value-03"}, + }, + database: -1, + want: map[int][]string{ + 0: {"value-01", "value-02", "value-03"}, + }, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + t.Parallel() + server := createEchoVault() + + if tt.presetValues != nil { + for db, data := range tt.presetValues { + _ = server.SelectDB(db) + if _, err := server.MSet(data); err != nil { + t.Errorf("SelectDB() error = %v", err) + return + } + } + _ = server.SelectDB(0) + } + + // Check the values for DB 0 + values, err := server.MGet("key1", "key2", "key3") + if err != nil { + t.Errorf("SelectDB() error = %v", err) + return + } + + if !reflect.DeepEqual(values, tt.want[0]) { + t.Errorf("SelectDB() result-0 = %v, want-0 %v", values, tt.want[0]) + return + } + + err = server.SelectDB(tt.database) + if tt.wantErr { + if err == nil { + t.Errorf("SelectDB() error = %v, wantErr %v", err, tt.wantErr) + return + } + return + } + if err != nil { + t.Errorf("SelectDB() error = %v, wantErr %v", err, tt.wantErr) + return + } + + // Check the values the new DB + values, err = server.MGet("key1", "key2", "key3") + if err != nil { + t.Errorf("SelectDB() error = %v", err) + return + } + + if !reflect.DeepEqual(values, tt.want[1]) { + t.Errorf("SelectDB() result-1 = %v, want-1 %v", values, tt.want[1]) + return + } + }) + } +} + +func TestEchoVault_SetProtocol(t *testing.T) { + t.Parallel() + server := createEchoVault() + tests := []struct { + name string + protocol int + wantErr bool + }{ + { + name: "1. Change protocol to 2", + protocol: 2, + wantErr: false, + }, + { + name: "2. Change protocol to 3", + protocol: 3, + wantErr: false, + }, + { + name: "3. Return error when protocol is neither 2 or 3", + protocol: 4, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := server.SetProtocol(tt.protocol) + if tt.wantErr { + if err == nil { + t.Errorf("SetProtocol() error = %v, wantErr %v", err, tt.wantErr) + return + } + return + } + if err != nil { + t.Errorf("SetProtocol() error = %v, wantErr %v", err, tt.wantErr) + return + } + // Check if the protocol has been changed + if server.connInfo.embedded.Protocol != tt.protocol { + t.Errorf("SetProtocol() protocol = %v, wantProtocol %v", + server.connInfo.embedded.Protocol, tt.protocol) + } + }) + } +} diff --git a/echovault/cluster.go b/echovault/cluster.go index 3b80fb8a..d1c8ca29 100644 --- a/echovault/cluster.go +++ b/echovault/cluster.go @@ -28,11 +28,15 @@ func (server *EchoVault) isInCluster() bool { func (server *EchoVault) raftApplyDeleteKey(ctx context.Context, key string) error { serverId, _ := ctx.Value(internal.ContextServerID("ServerID")).(string) + protocol, _ := ctx.Value("Protocol").(int) + database, _ := ctx.Value("Database").(int) deleteKeyRequest := internal.ApplyRequest{ Type: "delete-key", ServerID: serverId, ConnectionID: "nil", + Protocol: protocol, + Database: database, Key: key, } @@ -63,11 +67,15 @@ func (server *EchoVault) raftApplyDeleteKey(ctx context.Context, key string) err func (server *EchoVault) raftApplyCommand(ctx context.Context, cmd []string) ([]byte, error) { serverId, _ := ctx.Value(internal.ContextServerID("ServerID")).(string) connectionId, _ := ctx.Value(internal.ContextConnID("ConnectionID")).(string) + protocol, _ := ctx.Value("Protocol").(int) + database, _ := ctx.Value("Database").(int) applyRequest := internal.ApplyRequest{ Type: "command", ServerID: serverId, ConnectionID: connectionId, + Protocol: protocol, + Database: database, CMD: cmd, } diff --git a/echovault/config.go b/echovault/config.go index 06aa1bf5..1c03ffca 100644 --- a/echovault/config.go +++ b/echovault/config.go @@ -15,7 +15,9 @@ package echovault import ( + "github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal/config" + "github.com/echovault/echovault/internal/constants" ) // DefaultConfig returns the default configuration. @@ -23,3 +25,27 @@ import ( func DefaultConfig() config.Config { return config.DefaultConfig() } + +func (server *EchoVault) GetServerInfo() internal.ServerInfo { + return internal.ServerInfo{ + Server: "echovault", + Version: constants.Version, + Id: server.config.ServerID, + Mode: func() string { + if server.isInCluster() { + return "cluster" + } + return "standalone" + }(), + Role: func() string { + if !server.isInCluster() { + return "master" + } + if server.raft.IsRaftLeader() { + return "master" + } + return "replica" + }(), + Modules: server.ListModules(), + } +} diff --git a/echovault/echovault.go b/echovault/echovault.go index aac1ad4b..d2f60754 100644 --- a/echovault/echovault.go +++ b/echovault/echovault.go @@ -60,23 +60,41 @@ type EchoVault struct { // the new number is the new connection's ID. connId atomic.Uint64 - storeLock *sync.RWMutex // Global read-write mutex for entire store. - store map[string]internal.KeyData // Data store to hold the keys and their associated data, expiry time, etc. + // connInfo holds the connection information for embedded and TCP clients. + // It keeps track of the protocol and database that each client is operating on. + connInfo struct { + mut *sync.RWMutex // RWMutex for the connInfo object. + tcpClients map[*net.Conn]internal.ConnectionInfo // Map that holds connection information for each TCP client. + embedded internal.ConnectionInfo // Information for the embedded connection. + } + + // Global read-write mutex for entire store. + storeLock *sync.RWMutex + // Data store to hold the keys and their associated data, expiry time, etc. + // The int key on the outer map represents the database index. + // Each database has a map that has a string key and the key data (value and expiry time). + store map[int]map[string]internal.KeyData // Holds all the keys that are currently associated with an expiry. keysWithExpiry struct { - rwMutex sync.RWMutex // Mutex as only one process should be able to update this list at a time. - keys []string // string slice of the volatile keys + // Mutex as only one process should be able to update this list at a time. + rwMutex sync.RWMutex + // A map holding a string slice of the volatile keys for each database. + keys map[int][]string } // LFU cache used when eviction policy is allkeys-lfu or volatile-lfu. lfuCache struct { - mutex sync.Mutex // Mutex as only one goroutine can edit the LFU cache at a time. - cache eviction.CacheLFU // LFU cache represented by a min head. + // Mutex as only one goroutine can edit the LFU cache at a time. + mutex sync.Mutex + // LFU cache for each database represented by a min heap. + cache map[int]*eviction.CacheLFU } // LRU cache used when eviction policy is allkeys-lru or volatile-lru. lruCache struct { - mutex sync.Mutex // Mutex as only one goroutine can edit the LRU at a time. - cache eviction.CacheLRU // LRU cache represented by a max head. + // Mutex as only one goroutine can edit the LRU at a time. + mutex sync.Mutex + // LRU cache represented by a max heap. + cache map[int]*eviction.CacheLRU } // Holds the list of all commands supported by the echovault. @@ -126,11 +144,32 @@ func WithConfig(config config.Config) func(echovault *EchoVault) { // This functions accepts the WithContext, WithConfig and WithCommands options. func NewEchoVault(options ...func(echovault *EchoVault)) (*EchoVault, error) { echovault := &EchoVault{ - clock: clock.NewClock(), - context: context.Background(), - config: config.DefaultConfig(), - storeLock: &sync.RWMutex{}, - store: make(map[string]internal.KeyData), + clock: clock.NewClock(), + context: context.Background(), + config: config.DefaultConfig(), + connInfo: struct { + mut *sync.RWMutex + tcpClients map[*net.Conn]internal.ConnectionInfo + embedded internal.ConnectionInfo + }{ + mut: &sync.RWMutex{}, + tcpClients: make(map[*net.Conn]internal.ConnectionInfo), + embedded: internal.ConnectionInfo{ + Id: 0, + Name: "embedded", + Protocol: 2, + Database: 0, + }, + }, + storeLock: &sync.RWMutex{}, + store: make(map[int]map[string]internal.KeyData), + keysWithExpiry: struct { + rwMutex sync.RWMutex + keys map[int][]string + }{ + rwMutex: sync.RWMutex{}, + keys: make(map[int][]string), + }, commandsRWMut: sync.RWMutex{}, commands: func() []internal.Command { var commands []internal.Command @@ -184,16 +223,18 @@ func NewEchoVault(options ...func(echovault *EchoVault)) (*EchoVault, error) { FinishSnapshot: echovault.finishSnapshot, SetLatestSnapshotTime: echovault.setLatestSnapshot, GetHandlerFuncParams: echovault.getHandlerFuncParams, - DeleteKey: func(key string) error { + DeleteKey: func(ctx context.Context, key string) error { echovault.storeLock.Lock() defer echovault.storeLock.Unlock() - return echovault.deleteKey(key) + return echovault.deleteKey(ctx, key) }, - GetState: func() map[string]internal.KeyData { - state := make(map[string]internal.KeyData) - for k, v := range echovault.getState() { - if data, ok := v.(internal.KeyData); ok { - state[k] = data + GetState: func() map[int]map[string]internal.KeyData { + state := make(map[int]map[string]internal.KeyData) + for database, store := range echovault.getState() { + for k, v := range store { + if data, ok := v.(internal.KeyData); ok { + state[database][k] = data + } } } return state @@ -219,23 +260,27 @@ func NewEchoVault(options ...func(echovault *EchoVault)) (*EchoVault, error) { snapshot.WithFinishSnapshotFunc(echovault.finishSnapshot), snapshot.WithSetLatestSnapshotTimeFunc(echovault.setLatestSnapshot), snapshot.WithGetLatestSnapshotTimeFunc(echovault.getLatestSnapshotTime), - snapshot.WithGetStateFunc(func() map[string]internal.KeyData { - state := make(map[string]internal.KeyData) - for k, v := range echovault.getState() { - if data, ok := v.(internal.KeyData); ok { - state[k] = data + snapshot.WithGetStateFunc(func() map[int]map[string]internal.KeyData { + state := make(map[int]map[string]internal.KeyData) + for database, data := range echovault.getState() { + state[database] = make(map[string]internal.KeyData) + for key, value := range data { + if keyData, ok := value.(internal.KeyData); ok { + state[database][key] = keyData + } } } return state }), - snapshot.WithSetKeyDataFunc(func(key string, data internal.KeyData) { - ctx := context.Background() + snapshot.WithSetKeyDataFunc(func(database int, key string, data internal.KeyData) { + ctx := context.WithValue(context.Background(), "Database", database) if err := echovault.setValues(ctx, map[string]interface{}{key: data.Value}); err != nil { log.Println(err) } echovault.setExpiry(ctx, key, data.ExpireAt, false) }), ) + // Set up standalone AOF engine aofEngine, err := aof.NewAOFEngine( aof.WithClock(echovault.clock), @@ -243,24 +288,29 @@ func NewEchoVault(options ...func(echovault *EchoVault)) (*EchoVault, error) { aof.WithStrategy(echovault.config.AOFSyncStrategy), aof.WithStartRewriteFunc(echovault.startRewriteAOF), aof.WithFinishRewriteFunc(echovault.finishRewriteAOF), - aof.WithGetStateFunc(func() map[string]internal.KeyData { - state := make(map[string]internal.KeyData) - for k, v := range echovault.getState() { - if data, ok := v.(internal.KeyData); ok { - state[k] = data + aof.WithGetStateFunc(func() map[int]map[string]internal.KeyData { + state := make(map[int]map[string]internal.KeyData) + for database, data := range echovault.getState() { + state[database] = make(map[string]internal.KeyData) + for key, value := range data { + if keyData, ok := value.(internal.KeyData); ok { + state[database][key] = keyData + } } } return state }), - aof.WithSetKeyDataFunc(func(key string, value internal.KeyData) { - ctx := context.Background() + aof.WithSetKeyDataFunc(func(database int, key string, value internal.KeyData) { + ctx := context.WithValue(context.Background(), "Database", database) if err := echovault.setValues(ctx, map[string]interface{}{key: value.Value}); err != nil { log.Println(err) } echovault.setExpiry(ctx, key, value.ExpireAt, false) }), - aof.WithHandleCommandFunc(func(command []byte) { - _, err := echovault.handleCommand(context.Background(), command, nil, true, false) + aof.WithHandleCommandFunc(func(database int, command []byte) { + ctx := context.WithValue(context.Background(), "Protocol", 2) + ctx = context.WithValue(ctx, "Database", database) + _, err := echovault.handleCommand(ctx, command, nil, true, false) if err != nil { log.Println(err) } @@ -272,7 +322,7 @@ func NewEchoVault(options ...func(echovault *EchoVault)) (*EchoVault, error) { echovault.aofEngine = aofEngine } - // If eviction policy is not noeviction, start a goroutine to evict keys every 100 milliseconds. + // If eviction policy is not noeviction, start a goroutine to evict keys at the configured interval. if echovault.config.EvictionPolicy != constants.NoEviction { go func() { ticker := time.NewTicker(echovault.config.EvictionInterval) @@ -282,9 +332,19 @@ func NewEchoVault(options ...func(echovault *EchoVault)) (*EchoVault, error) { for { select { case <-ticker.C: - if err := echovault.evictKeysWithExpiredTTL(context.Background()); err != nil { - log.Printf("evict with ttl: %v\n", err) + // Run key eviction for each database that has volatile keys. + wg := sync.WaitGroup{} + for database, _ := range echovault.keysWithExpiry.keys { + wg.Add(1) + ctx := context.WithValue(context.Background(), "Database", database) + go func(ctx context.Context, wg *sync.WaitGroup) { + if err := echovault.evictKeysWithExpiredTTL(ctx); err != nil { + log.Printf("evict with ttl: %v\n", err) + } + wg.Done() + }(ctx, &wg) } + wg.Wait() case <-echovault.stopTTL: break } @@ -300,9 +360,8 @@ func NewEchoVault(options ...func(echovault *EchoVault)) (*EchoVault, error) { // Initialise raft and memberlist echovault.raft.RaftInit(echovault.context) echovault.memberList.MemberListInit(echovault.context) - if echovault.raft.IsRaftLeader() { - echovault.initialiseCaches() - } + // Initialise caches + echovault.initialiseCaches() } if !echovault.isInCluster() { @@ -422,10 +481,21 @@ func (server *EchoVault) handleConnection(conn net.Conn) { w, r := io.Writer(conn), io.Reader(conn) + // Generate connection ID cid := server.connId.Add(1) ctx := context.WithValue(server.context, internal.ContextConnID("ConnectionID"), fmt.Sprintf("%s-%d", server.context.Value(internal.ContextServerID("ServerID")), cid)) + // Set the default connection information + server.connInfo.mut.Lock() + server.connInfo.tcpClients[&conn] = internal.ConnectionInfo{ + Id: cid, + Name: "", + Protocol: 2, + Database: 0, + } + server.connInfo.mut.Unlock() + defer func() { log.Printf("closing connection %d...", cid) if err := conn.Close(); err != nil { @@ -569,6 +639,9 @@ func (server *EchoVault) ShutDown() { log.Printf("listener close: %v\n", err) } } + if !server.isInCluster() { + server.aofEngine.Close() + } if server.isInCluster() { server.raft.RaftShutdown() server.memberList.MemberListShutdown() @@ -576,20 +649,25 @@ func (server *EchoVault) ShutDown() { } func (server *EchoVault) initialiseCaches() { - // Set up LFU cache + // Set up LFU cache. server.lfuCache = struct { mutex sync.Mutex - cache eviction.CacheLFU + cache map[int]*eviction.CacheLFU }{ mutex: sync.Mutex{}, - cache: eviction.NewCacheLFU(), + cache: make(map[int]*eviction.CacheLFU), } - // set up LRU cache + // set up LRU cache. server.lruCache = struct { mutex sync.Mutex - cache eviction.CacheLRU + cache map[int]*eviction.CacheLRU }{ mutex: sync.Mutex{}, - cache: eviction.NewCacheLRU(), + cache: make(map[int]*eviction.CacheLRU), + } + // Initialise caches for each preloaded database. + for database, _ := range server.store { + server.lfuCache.cache[database] = eviction.NewCacheLFU() + server.lruCache.cache[database] = eviction.NewCacheLRU() } } diff --git a/echovault/echovault_test.go b/echovault/echovault_test.go index 624aad4a..6696d102 100644 --- a/echovault/echovault_test.go +++ b/echovault/echovault_test.go @@ -24,6 +24,7 @@ import ( "github.com/echovault/echovault/internal/clock" "github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/constants" + "github.com/go-test/deep" "github.com/tidwall/resp" "io" "math" @@ -591,6 +592,65 @@ func Test_Cluster(t *testing.T) { t.Errorf("expected response to contain \"%s\", got \"%s\"", expected, res.Error().Error()) } }) + + t.Run("Test_SnapshotRestore", func(t *testing.T) { + // TODO: Test snapshot creation and restoration on the cluster. + }) + + t.Run("Test_EvictExpiredTTL", func(t *testing.T) { + // TODO: Implement test for evicting expired keys on the cluster. + }) + + t.Run("Test_GetServerInfo", func(t *testing.T) { + nodeInfo := []internal.ServerInfo{ + { + Server: "echovault", + Version: constants.Version, + Id: nodes[0].serverId, + Mode: "cluster", + Role: "master", + Modules: nodes[0].server.ListModules(), + }, + { + Server: "echovault", + Version: constants.Version, + Id: nodes[1].serverId, + Mode: "cluster", + Role: "replica", + Modules: nodes[1].server.ListModules(), + }, + { + Server: "echovault", + Version: constants.Version, + Id: nodes[2].serverId, + Mode: "cluster", + Role: "replica", + Modules: nodes[2].server.ListModules(), + }, + { + Server: "echovault", + Version: constants.Version, + Id: nodes[3].serverId, + Mode: "cluster", + Role: "replica", + Modules: nodes[3].server.ListModules(), + }, + { + Server: "echovault", + Version: constants.Version, + Id: nodes[4].serverId, + Mode: "cluster", + Role: "replica", + Modules: nodes[4].server.ListModules(), + }, + } + for i := 0; i < len(nodes); i++ { + if diff := deep.Equal(nodes[i].server.GetServerInfo(), nodeInfo[i]); diff != nil { + t.Errorf("GetServerInfo() - node %d: %+v", i, err) + return + } + } + }) } func Test_Standalone(t *testing.T) { @@ -606,6 +666,7 @@ func Test_Standalone(t *testing.T) { Port: uint16(port), DataDir: "", EvictionPolicy: constants.NoEviction, + ServerID: "Server_1", }), ) if err != nil { @@ -883,7 +944,7 @@ func Test_Standalone(t *testing.T) { tests := []struct { name string dataDir string - values map[string]string + values map[int]map[string]string snapshotFunc func(mockServer *EchoVault) error lastSaveFunc func(mockServer *EchoVault) (int, error) wantLastSave int @@ -891,11 +952,9 @@ func Test_Standalone(t *testing.T) { { name: "1. Snapshot in embedded instance", dataDir: path.Join(dataDir, "embedded_instance"), - values: map[string]string{ - "key5": "value5", - "key6": "value6", - "key7": "value7", - "key8": "value8", + values: map[int]map[string]string{ + 0: {"key5": "value-05", "key6": "value-06", "key7": "value-07", "key8": "value-08"}, + 1: {"key5": "value-15", "key6": "value-16", "key7": "value-17", "key8": "value-18"}, }, snapshotFunc: func(mockServer *EchoVault) error { if _, err := mockServer.Save(); err != nil { @@ -937,10 +996,13 @@ func Test_Standalone(t *testing.T) { }() // Trigger some write commands - for key, value := range test.values { - if _, _, err = mockServer.Set(key, value, SetOptions{}); err != nil { - t.Error(err) - return + for database, data := range test.values { + _ = mockServer.SelectDB(database) + for key, value := range data { + if _, _, err = mockServer.Set(key, value, SetOptions{}); err != nil { + t.Error(err) + return + } } } @@ -962,15 +1024,18 @@ func Test_Standalone(t *testing.T) { } // Check that all the key/value pairs have been restored into the store. - for key, value := range test.values { - res, err := mockServer.Get(key) - if err != nil { - t.Error(err) - return - } - if res != value { - t.Errorf("expected value at key \"%s\" to be \"%s\", got \"%s\"", key, value, res) - return + for database, data := range test.values { + _ = mockServer.SelectDB(database) + for key, value := range data { + res, err := mockServer.Get(key) + if err != nil { + t.Error(err) + return + } + if res != value { + t.Errorf("expected value at key \"%s\" to be \"%s\", got \"%s\"", key, value, res) + return + } } } @@ -1085,4 +1150,23 @@ func Test_Standalone(t *testing.T) { } } }) + + t.Run("Test_EvictExpiredTTL", func(t *testing.T) { + // TODO: Implement test for evicting expired keys in standalone mode. + }) + + t.Run("Test_GetServerInfo", func(t *testing.T) { + wantInfo := internal.ServerInfo{ + Server: "echovault", + Version: constants.Version, + Id: mockServer.config.ServerID, + Mode: "standalone", + Role: "master", + Modules: mockServer.ListModules(), + } + info := mockServer.GetServerInfo() + if diff := deep.Equal(wantInfo, info); diff != nil { + t.Errorf("GetServerInfo(): %+v", err) + } + }) } diff --git a/echovault/keyspace.go b/echovault/keyspace.go index 70ce7025..9bff841a 100644 --- a/echovault/keyspace.go +++ b/echovault/keyspace.go @@ -21,33 +21,120 @@ import ( "fmt" "github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal/constants" + "github.com/echovault/echovault/internal/eviction" "log" "math/rand" "runtime" "slices" "strings" + "sync" "time" ) -func (server *EchoVault) keysExist(keys []string) map[string]bool { +// SwapDBs swaps every TCP client connection from database1 over to database2. +// It also swaps every TCP client connection from database2 over to database1. +// This only affects TCP connections, it does not swap the logical database currently +// being used by the embedded API. +func (server *EchoVault) SwapDBs(database1, database2 int) { + // If the databases are the same, skip the swap. + if database1 == database2 { + return + } + + // If any of the databases does not exist, create them. + server.storeLock.Lock() + for _, database := range []int{database1, database2} { + if server.store[database] == nil { + server.createDatabase(database) + } + } + server.storeLock.Unlock() + + // Swap the connections for each database. + server.connInfo.mut.Lock() + defer server.connInfo.mut.Unlock() + for connection, info := range server.connInfo.tcpClients { + switch info.Database { + case database1: + server.connInfo.tcpClients[connection] = internal.ConnectionInfo{ + Id: info.Id, + Name: info.Name, + Protocol: info.Protocol, + Database: database2, + } + case database2: + server.connInfo.tcpClients[connection] = internal.ConnectionInfo{ + Id: info.Id, + Name: info.Name, + Protocol: info.Protocol, + Database: database1, + } + } + } +} + +// Flush flushes all the data from the database at the specified index. +// When -1 is passed, all the logical databases are cleared. +func (server *EchoVault) Flush(database int) { + server.storeLock.Lock() + defer server.storeLock.Unlock() + + server.keysWithExpiry.rwMutex.Lock() + defer server.keysWithExpiry.rwMutex.Unlock() + + server.lfuCache.mutex.Lock() + defer server.lfuCache.mutex.Unlock() + + server.lruCache.mutex.Lock() + defer server.lruCache.mutex.Unlock() + + if database == -1 { + for db, _ := range server.store { + // Clear db store. + clear(server.store[db]) + // Clear db volatile key tracker. + clear(server.keysWithExpiry.keys[db]) + // Clear db LFU cache. + server.lfuCache.cache[db] = eviction.NewCacheLFU() + // Clear db LRU cache. + server.lruCache.cache[db] = eviction.NewCacheLRU() + } + return + } + + // Clear db store. + clear(server.store[database]) + // Clear db volatile key tracker. + clear(server.keysWithExpiry.keys[database]) + // Clear db LFU cache. + server.lfuCache.cache[database] = eviction.NewCacheLFU() + // Clear db LRU cache. + server.lruCache.cache[database] = eviction.NewCacheLRU() +} + +func (server *EchoVault) keysExist(ctx context.Context, keys []string) map[string]bool { server.storeLock.RLock() defer server.storeLock.RUnlock() + database := ctx.Value("Database").(int) + exists := make(map[string]bool, len(keys)) for _, key := range keys { - _, ok := server.store[key] + _, ok := server.store[database][key] exists[key] = ok } return exists } -func (server *EchoVault) getExpiry(key string) time.Time { +func (server *EchoVault) getExpiry(ctx context.Context, key string) time.Time { server.storeLock.RLock() defer server.storeLock.RUnlock() - entry, ok := server.store[key] + database := ctx.Value("Database").(int) + + entry, ok := server.store[database][key] if !ok { return time.Time{} } @@ -59,10 +146,12 @@ func (server *EchoVault) getValues(ctx context.Context, keys []string) map[strin server.storeLock.Lock() defer server.storeLock.Unlock() + database := ctx.Value("Database").(int) + values := make(map[string]interface{}, len(keys)) for _, key := range keys { - entry, ok := server.store[key] + entry, ok := server.store[database][key] if !ok { values[key] = nil continue @@ -71,7 +160,7 @@ func (server *EchoVault) getValues(ctx context.Context, keys []string) map[strin if entry.ExpireAt != (time.Time{}) && entry.ExpireAt.Before(server.clock.Now()) { if !server.isInCluster() { // If in standalone mode, delete the key directly. - err := server.deleteKey(key) + err := server.deleteKey(ctx, key) if err != nil { log.Printf("keyExists: %+v\n", err) } @@ -112,12 +201,19 @@ func (server *EchoVault) setValues(ctx context.Context, entries map[string]inter return errors.New("max memory reached, key value not set") } + database := ctx.Value("Database").(int) + + // If database does not exist, create it. + if server.store[database] == nil { + server.createDatabase(database) + } + for key, value := range entries { expireAt := time.Time{} - if _, ok := server.store[key]; ok { - expireAt = server.store[key].ExpireAt + if _, ok := server.store[database][key]; ok { + expireAt = server.store[database][key].ExpireAt } - server.store[key] = internal.KeyData{ + server.store[database][key] = internal.KeyData{ Value: value, ExpireAt: expireAt, } @@ -143,15 +239,17 @@ func (server *EchoVault) setExpiry(ctx context.Context, key string, expireAt tim server.storeLock.Lock() defer server.storeLock.Unlock() - server.store[key] = internal.KeyData{ - Value: server.store[key].Value, + database := ctx.Value("Database").(int) + + server.store[database][key] = internal.KeyData{ + Value: server.store[database][key].Value, ExpireAt: expireAt, } // If the slice of keys associated with expiry time does not contain the current key, add the key. server.keysWithExpiry.rwMutex.Lock() - if !slices.Contains(server.keysWithExpiry.keys, key) { - server.keysWithExpiry.keys = append(server.keysWithExpiry.keys, key) + if !slices.Contains(server.keysWithExpiry.keys[database], key) { + server.keysWithExpiry.keys[database] = append(server.keysWithExpiry.keys[database], key) } server.keysWithExpiry.rwMutex.Unlock() @@ -160,29 +258,31 @@ func (server *EchoVault) setExpiry(ctx context.Context, key string, expireAt tim go func(ctx context.Context, key string) { err := server.updateKeysInCache(ctx, []string{key}) if err != nil { - log.Printf("SetKeyExpiry error: %+v\n", err) + log.Printf("setExpiry error: %+v\n", err) } }(ctx, key) } } -func (server *EchoVault) deleteKey(key string) error { +func (server *EchoVault) deleteKey(ctx context.Context, key string) error { + database := ctx.Value("Database").(int) + // Delete the key from keyLocks and store. - delete(server.store, key) + delete(server.store[database], key) // Remove key from slice of keys associated with expiry. server.keysWithExpiry.rwMutex.Lock() defer server.keysWithExpiry.rwMutex.Unlock() - server.keysWithExpiry.keys = slices.DeleteFunc(server.keysWithExpiry.keys, func(k string) bool { + server.keysWithExpiry.keys[database] = slices.DeleteFunc(server.keysWithExpiry.keys[database], func(k string) bool { return k == key }) - // Remove the key from the cache. + // Remove the key from the cache associated with the database. switch { case slices.Contains([]string{constants.AllKeysLFU, constants.VolatileLFU}, server.config.EvictionPolicy): - server.lfuCache.cache.Delete(key) + server.lfuCache.cache[database].Delete(key) case slices.Contains([]string{constants.AllKeysLRU, constants.VolatileLRU}, server.config.EvictionPolicy): - server.lruCache.cache.Delete(key) + server.lruCache.cache[database].Delete(key) } log.Printf("deleted key %s\n", key) @@ -190,7 +290,27 @@ func (server *EchoVault) deleteKey(key string) error { return nil } -func (server *EchoVault) getState() map[string]interface{} { +func (server *EchoVault) createDatabase(database int) { + // Create database store. + server.store[database] = make(map[string]internal.KeyData) + + // Set volatile keys tracker for database. + server.keysWithExpiry.rwMutex.Lock() + defer server.keysWithExpiry.rwMutex.Unlock() + server.keysWithExpiry.keys[database] = make([]string, 0) + + // Create database LFU cache. + server.lfuCache.mutex.Lock() + defer server.lfuCache.mutex.Unlock() + server.lfuCache.cache[database] = eviction.NewCacheLFU() + + // Create database LRU cache. + server.lruCache.mutex.Lock() + defer server.lruCache.mutex.Unlock() + server.lruCache.cache[database] = eviction.NewCacheLRU() +} + +func (server *EchoVault) getState() map[int]map[string]interface{} { // Wait unit there's no state mutation or copy in progress before starting a new copy process. for { if !server.stateCopyInProgress.Load() && !server.stateMutationInProgress.Load() { @@ -198,9 +318,12 @@ func (server *EchoVault) getState() map[string]interface{} { break } } - data := make(map[string]interface{}) - for k, v := range server.store { - data[k] = v + data := make(map[int]map[string]interface{}) + for db, store := range server.store { + data[db] = make(map[string]interface{}) + for k, v := range store { + data[db][k] = v + } } server.stateCopyInProgress.Store(false) return data @@ -209,6 +332,8 @@ func (server *EchoVault) getState() map[string]interface{} { // updateKeysInCache updates either the key access count or the most recent access time in the cache // depending on whether an LFU or LRU strategy was used. func (server *EchoVault) updateKeysInCache(ctx context.Context, keys []string) error { + database := ctx.Value("Database").(int) + for _, key := range keys { // Only update cache when in standalone mode or when raft leader. if server.isInCluster() || (server.isInCluster() && !server.raft.IsRaftLeader()) { @@ -221,29 +346,56 @@ func (server *EchoVault) updateKeysInCache(ctx context.Context, keys []string) e switch strings.ToLower(server.config.EvictionPolicy) { case constants.AllKeysLFU: server.lfuCache.mutex.Lock() - server.lfuCache.cache.Update(key) + server.lfuCache.cache[database].Update(key) server.lfuCache.mutex.Unlock() case constants.AllKeysLRU: server.lruCache.mutex.Lock() - server.lruCache.cache.Update(key) + server.lruCache.cache[database].Update(key) server.lruCache.mutex.Unlock() case constants.VolatileLFU: server.lfuCache.mutex.Lock() - if server.store[key].ExpireAt != (time.Time{}) { - server.lfuCache.cache.Update(key) + if server.store[database][key].ExpireAt != (time.Time{}) { + server.lfuCache.cache[database].Update(key) } server.lfuCache.mutex.Unlock() case constants.VolatileLRU: server.lruCache.mutex.Lock() - if server.store[key].ExpireAt != (time.Time{}) { - server.lruCache.cache.Update(key) + if server.store[database][key].ExpireAt != (time.Time{}) { + server.lruCache.cache[database].Update(key) } server.lruCache.mutex.Unlock() } - if err := server.adjustMemoryUsage(ctx); err != nil { - return fmt.Errorf("updateKeysInCache: %+v", err) - } } + + server.storeLock.Lock() + defer server.storeLock.Unlock() + + wg := sync.WaitGroup{} + errChan := make(chan error) + doneChan := make(chan struct{}) + + for db, _ := range server.store { + wg.Add(1) + ctx := context.WithValue(ctx, "Database", db) + go func(ctx context.Context, database int, wg *sync.WaitGroup, errChan *chan error) { + if err := server.adjustMemoryUsage(ctx); err != nil { + *errChan <- fmt.Errorf("adjustMemoryUsade database %d", database) + } + wg.Done() + }(ctx, db, &wg, &errChan) + } + + go func() { + wg.Wait() + doneChan <- struct{}{} + }() + + select { + case err := <-errChan: + return fmt.Errorf("adjustMemoryUsage error: %+v", err) + case <-doneChan: + } + return nil } @@ -253,6 +405,9 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { if server.config.MaxMemory == 0 { return nil } + + database := ctx.Value("Database").(int) + // Check if memory usage is above max-memory. // If it is, pop items from the cache until we get under the limit. var memStats runtime.MemStats @@ -261,7 +416,7 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { if memStats.HeapInuse < server.config.MaxMemory { return nil } - // Force a garbage collection first before we start evicting key. + // Force a garbage collection first before we start evicting keys. runtime.GC() runtime.ReadMemStats(&memStats) if memStats.HeapInuse < server.config.MaxMemory { @@ -270,8 +425,6 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { // We've done a GC, but we're still at or above the max memory limit. // Start a loop that evicts keys until either the heap is empty or // we're below the max memory limit. - server.storeLock.Lock() - defer server.storeLock.Unlock() switch { case slices.Contains([]string{constants.AllKeysLFU, constants.VolatileLFU}, strings.ToLower(server.config.EvictionPolicy)): // Remove keys from LFU cache until we're below the max memory limit or @@ -280,14 +433,14 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { defer server.lfuCache.mutex.Unlock() for { // Return if cache is empty - if server.lfuCache.cache.Len() == 0 { - return fmt.Errorf("adjsutMemoryUsage -> LFU cache empty") + if server.lfuCache.cache[database].Len() == 0 { + return fmt.Errorf("adjustMemoryUsage -> LFU cache empty") } - key := heap.Pop(&server.lfuCache.cache).(string) + key := heap.Pop(server.lfuCache.cache[database]).(string) if !server.isInCluster() { // If in standalone mode, directly delete the key - if err := server.deleteKey(key); err != nil { + if err := server.deleteKey(ctx, key); err != nil { return fmt.Errorf("adjustMemoryUsage -> LFU cache eviction: %+v", err) } } else if server.isInCluster() && server.raft.IsRaftLeader() { @@ -296,7 +449,6 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { return fmt.Errorf("adjustMemoryUsage -> LFU cache eviction: %+v", err) } } - // Run garbage collection runtime.GC() // Return if we're below max memory @@ -312,14 +464,14 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { defer server.lruCache.mutex.Unlock() for { // Return if cache is empty - if server.lruCache.cache.Len() == 0 { - return fmt.Errorf("adjsutMemoryUsage -> LRU cache empty") + if server.lruCache.cache[database].Len() == 0 { + return fmt.Errorf("adjustMemoryUsage -> LRU cache empty") } - key := heap.Pop(&server.lruCache.cache).(string) + key := heap.Pop(server.lruCache.cache[database]).(string) if !server.isInCluster() { // If in standalone mode, directly delete the key. - if err := server.deleteKey(key); err != nil { + if err := server.deleteKey(ctx, key); err != nil { return fmt.Errorf("adjustMemoryUsage -> LRU cache eviction: %+v", err) } } else if server.isInCluster() && server.raft.IsRaftLeader() { @@ -342,36 +494,38 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { // Remove random keys until we're below the max memory limit // or there are no more keys remaining. for { - server.storeLock.Lock() // If there are no keys, return error if len(server.store) == 0 { err := errors.New("no keys to evict") - server.storeLock.Unlock() return fmt.Errorf("adjustMemoryUsage -> all keys random: %+v", err) } - // Get random key + // Get random key in the database idx := rand.Intn(len(server.store)) - for key, _ := range server.store { - if idx == 0 { - if !server.isInCluster() { - // If in standalone mode, directly delete the key - if err := server.deleteKey(key); err != nil { - return fmt.Errorf("adjustMemoryUsage -> all keys random: %+v", err) + for db, data := range server.store { + if db == database { + for key, _ := range data { + if idx == 0 { + if !server.isInCluster() { + // If in standalone mode, directly delete the key + if err := server.deleteKey(ctx, key); err != nil { + return fmt.Errorf("adjustMemoryUsage -> all keys random: %+v", err) + } + } else if server.isInCluster() && server.raft.IsRaftLeader() { + if err := server.raftApplyDeleteKey(ctx, key); err != nil { + return fmt.Errorf("adjustMemoryUsage -> all keys random: %+v", err) + } + } + // Run garbage collection + runtime.GC() + // Return if we're below max memory + runtime.ReadMemStats(&memStats) + if memStats.HeapInuse < server.config.MaxMemory { + return nil + } } - } else if server.isInCluster() && server.raft.IsRaftLeader() { - if err := server.raftApplyDeleteKey(ctx, key); err != nil { - return fmt.Errorf("adjustMemoryUsage -> all keys random: %+v", err) - } - } - // Run garbage collection - runtime.GC() - // Return if we're below max memory - runtime.ReadMemStats(&memStats) - if memStats.HeapInuse < server.config.MaxMemory { - return nil + idx-- } } - idx-- } } case slices.Contains([]string{constants.VolatileRandom}, strings.ToLower(server.config.EvictionPolicy)): @@ -381,12 +535,12 @@ func (server *EchoVault) adjustMemoryUsage(ctx context.Context) error { // Get random volatile key server.keysWithExpiry.rwMutex.RLock() idx := rand.Intn(len(server.keysWithExpiry.keys)) - key := server.keysWithExpiry.keys[idx] + key := server.keysWithExpiry.keys[database][idx] server.keysWithExpiry.rwMutex.RUnlock() if !server.isInCluster() { // If in standalone mode, directly delete the key - if err := server.deleteKey(key); err != nil { + if err := server.deleteKey(ctx, key); err != nil { return fmt.Errorf("adjustMemoryUsage -> volatile keys random: %+v", err) } } else if server.isInCluster() && server.raft.IsRaftLeader() { @@ -421,10 +575,12 @@ func (server *EchoVault) evictKeysWithExpiredTTL(ctx context.Context) error { server.keysWithExpiry.rwMutex.RLock() + database := ctx.Value("Database").(int) + // Sample size should be the configured sample size, or the size of the keys with expiry, // whichever one is smaller. sampleSize := int(server.config.EvictionSample) - if len(server.keysWithExpiry.keys) < sampleSize { + if len(server.keysWithExpiry.keys[database]) < sampleSize { sampleSize = len(server.keysWithExpiry.keys) } keys := make([]string, sampleSize) @@ -438,7 +594,7 @@ func (server *EchoVault) evictKeysWithExpiredTTL(ctx context.Context) error { for { // Retry retrieval of a random key until we find a key that is not already in the list of sampled keys. idx = rand.Intn(len(server.keysWithExpiry.keys)) - key = server.keysWithExpiry.keys[idx] + key = server.keysWithExpiry.keys[database][idx] if !slices.Contains(keys, key) { keys[i] = key break @@ -454,7 +610,7 @@ func (server *EchoVault) evictKeysWithExpiredTTL(ctx context.Context) error { // Delete the expired key deletedCount += 1 if !server.isInCluster() { - if err := server.deleteKey(k); err != nil { + if err := server.deleteKey(ctx, k); err != nil { return fmt.Errorf("evictKeysWithExpiredTTL -> standalone delete: %+v", err) } } else if server.isInCluster() && server.raft.IsRaftLeader() { diff --git a/echovault/modules.go b/echovault/modules.go index 973bea10..2cad2d2d 100644 --- a/echovault/modules.go +++ b/echovault/modules.go @@ -57,15 +57,66 @@ func (server *EchoVault) getHandlerFuncParams(ctx context.Context, cmd []string, GetACL: server.getACL, GetAllCommands: server.getCommands, GetClock: server.getClock, - DeleteKey: func(key string) error { + Flush: server.Flush, + SwapDBs: server.SwapDBs, + GetServerInfo: server.GetServerInfo, + DeleteKey: func(ctx context.Context, key string) error { server.storeLock.Lock() defer server.storeLock.Unlock() - return server.deleteKey(key) + return server.deleteKey(ctx, key) + }, + GetConnectionInfo: func(conn *net.Conn) internal.ConnectionInfo { + server.connInfo.mut.RLock() + defer server.connInfo.mut.RUnlock() + return server.connInfo.tcpClients[conn] + }, + SetConnectionInfo: func(conn *net.Conn, clientname string, protocol int, database int) { + server.connInfo.mut.Lock() + defer server.connInfo.mut.Unlock() + + info := server.connInfo.tcpClients[conn] + + // Set protocol. + info.Protocol = protocol + + // Set connection name. + if clientname != "" { + info.Name = clientname + } + + // If the database index does not exist, create the new database. + server.storeLock.Lock() + if server.store[database] == nil { + server.createDatabase(database) + } + server.storeLock.Unlock() + + // Set database index for the current connection. + info.Database = database + + server.connInfo.tcpClients[conn] = info }, } } func (server *EchoVault) handleCommand(ctx context.Context, message []byte, conn *net.Conn, replay bool, embedded bool) ([]byte, error) { + // Prepare context before processing the command. + server.connInfo.mut.RLock() + if embedded && !replay { + // The call is triggered via the embedded API. + // Add embedded connection info to the context of the request. + ctx = context.WithValue(ctx, "ConnectionName", server.connInfo.embedded.Name) + ctx = context.WithValue(ctx, "Protocol", server.connInfo.embedded.Protocol) + ctx = context.WithValue(ctx, "Database", server.connInfo.embedded.Database) + } else { + // The call is triggered by a TCP connection. + // Add TCP connection info to the context of the request. + ctx = context.WithValue(ctx, "ConnectionName", server.connInfo.tcpClients[conn].Name) + ctx = context.WithValue(ctx, "Protocol", server.connInfo.tcpClients[conn].Protocol) + ctx = context.WithValue(ctx, "Database", server.connInfo.tcpClients[conn].Database) + } + server.connInfo.mut.RUnlock() + cmd, err := internal.Decode(message) if err != nil { return nil, err @@ -123,7 +174,9 @@ func (server *EchoVault) handleCommand(ctx context.Context, message []byte, conn } if internal.IsWriteCommand(command, subCommand) && !replay { - go server.aofEngine.QueueCommand(message) + server.connInfo.mut.RLock() + server.aofEngine.LogCommand(server.connInfo.tcpClients[conn].Database, message) + server.connInfo.mut.RUnlock() } server.stateMutationInProgress.Store(false) diff --git a/echovault/plugin.go b/echovault/plugin.go index 956a9248..6ec309b2 100644 --- a/echovault/plugin.go +++ b/echovault/plugin.go @@ -102,7 +102,7 @@ func (server *EchoVault) LoadModule(path string, args ...string) error { handlerFunc, ok := handlerFuncSymbol.(func( ctx context.Context, command []string, - keysExist func(key []string) map[string]bool, + keysExist func(ctx context.Context, key []string) map[string]bool, getValues func(ctx context.Context, key []string) map[string]interface{}, setValues func(ctx context.Context, entries map[string]interface{}) error, args ...string, diff --git a/echovault/test_helpers.go b/echovault/test_helpers.go index 4f1b204f..979b354b 100644 --- a/echovault/test_helpers.go +++ b/echovault/test_helpers.go @@ -25,6 +25,7 @@ func createEchoVaultWithConfig(conf config.Config) *EchoVault { } func presetValue(server *EchoVault, ctx context.Context, key string, value interface{}) error { + ctx = context.WithValue(ctx, "Database", 0) if err := server.setValues(ctx, map[string]interface{}{key: value}); err != nil { return err } @@ -32,6 +33,7 @@ func presetValue(server *EchoVault, ctx context.Context, key string, value inter } func presetKeyData(server *EchoVault, ctx context.Context, key string, data internal.KeyData) { + ctx = context.WithValue(ctx, "Database", 0) _ = server.setValues(ctx, map[string]interface{}{key: data.Value}) server.setExpiry(ctx, key, data.ExpireAt, false) } diff --git a/go.mod b/go.mod index 7125dfbb..90a80b84 100644 --- a/go.mod +++ b/go.mod @@ -16,6 +16,7 @@ require ( github.com/armon/go-metrics v0.4.1 // indirect github.com/boltdb/bolt v1.3.1 // indirect github.com/fatih/color v1.13.0 // indirect + github.com/go-test/deep v1.1.1 // indirect github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c // indirect github.com/hashicorp/errwrap v1.0.0 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect diff --git a/go.sum b/go.sum index 2b1b8daf..7a0739be 100644 --- a/go.sum +++ b/go.sum @@ -27,6 +27,8 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-test/deep v1.1.1 h1:0r/53hagsehfO4bzD2Pgr/+RgHqhmf+k1Bpse2cTu1U= +github.com/go-test/deep v1.1.1/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= diff --git a/internal/aof/engine.go b/internal/aof/engine.go index d1717daf..4319b7ad 100644 --- a/internal/aof/engine.go +++ b/internal/aof/engine.go @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +// Package aof handles AOF logging in standalone mode only. +// Logging in replication clusters is handled in the raft layer. package aof import ( @@ -24,27 +26,23 @@ import ( "sync" ) -// This package handles AOF logging in standalone mode only. -// Logging in replication clusters is handled in the raft layer. - type Engine struct { clock clock.Clock syncStrategy string directory string - preambleRW preamble.PreambleReadWriter - appendRW logstore.AppendReadWriter + preambleRW preamble.ReadWriter + appendRW logstore.ReadWriter mut sync.Mutex - logChan chan []byte logCount uint64 - preambleStore *preamble.PreambleStore - appendStore *logstore.AppendStore + preambleStore *preamble.Store + appendStore *logstore.Store startRewriteFunc func() finishRewriteFunc func() - getStateFunc func() map[string]internal.KeyData - setKeyDataFunc func(key string, data internal.KeyData) - handleCommand func(command []byte) + getStateFunc func() map[int]map[string]internal.KeyData + setKeyDataFunc func(database int, key string, data internal.KeyData) + handleCommand func(database int, command []byte) } func WithClock(clock clock.Clock) func(engine *Engine) { @@ -77,31 +75,31 @@ func WithFinishRewriteFunc(f func()) func(engine *Engine) { } } -func WithGetStateFunc(f func() map[string]internal.KeyData) func(engine *Engine) { +func WithGetStateFunc(f func() map[int]map[string]internal.KeyData) func(engine *Engine) { return func(engine *Engine) { engine.getStateFunc = f } } -func WithSetKeyDataFunc(f func(key string, data internal.KeyData)) func(engine *Engine) { +func WithSetKeyDataFunc(f func(database int, key string, data internal.KeyData)) func(engine *Engine) { return func(engine *Engine) { engine.setKeyDataFunc = f } } -func WithHandleCommandFunc(f func(command []byte)) func(engine *Engine) { +func WithHandleCommandFunc(f func(database int, command []byte)) func(engine *Engine) { return func(engine *Engine) { engine.handleCommand = f } } -func WithPreambleReadWriter(rw preamble.PreambleReadWriter) func(engine *Engine) { +func WithPreambleReadWriter(rw preamble.ReadWriter) func(engine *Engine) { return func(engine *Engine) { engine.preambleRW = rw } } -func WithAppendReadWriter(rw logstore.AppendReadWriter) func(engine *Engine) { +func WithAppendReadWriter(rw logstore.ReadWriter) func(engine *Engine) { return func(engine *Engine) { engine.appendRW = rw } @@ -113,13 +111,12 @@ func NewAOFEngine(options ...func(engine *Engine)) (*Engine, error) { syncStrategy: "everysec", directory: "", mut: sync.Mutex{}, - logChan: make(chan []byte, 4096), logCount: 0, startRewriteFunc: func() {}, finishRewriteFunc: func() {}, - getStateFunc: func() map[string]internal.KeyData { return nil }, - setKeyDataFunc: func(key string, data internal.KeyData) {}, - handleCommand: func(command []byte) {}, + getStateFunc: func() map[int]map[string]internal.KeyData { return nil }, + setKeyDataFunc: func(database int, key string, data internal.KeyData) {}, + handleCommand: func(database int, command []byte) {}, } // Setup AOFEngine options first as these options are used @@ -154,22 +151,13 @@ func NewAOFEngine(options ...func(engine *Engine)) (*Engine, error) { } engine.appendStore = appendStore - // 3. Start the goroutine to pick up queued commands in order to write them to the file. - // LogCommand will get the open file handler from the struct top perform the AOF operation. - go func() { - for { - c := <-engine.logChan - if err := engine.appendStore.Write(c); err != nil { - log.Println(fmt.Errorf("new aof engine error: %+v", err)) - } - } - }() - return engine, nil } -func (engine *Engine) QueueCommand(command []byte) { - engine.logChan <- command +func (engine *Engine) LogCommand(database int, command []byte) { + if err := engine.appendStore.Write(database, command); err != nil { + log.Printf("log command error: %+v\n", err) + } } func (engine *Engine) RewriteLog() error { @@ -181,12 +169,12 @@ func (engine *Engine) RewriteLog() error { // Create AOF preamble. if err := engine.preambleStore.CreatePreamble(); err != nil { - return fmt.Errorf("rewrite log -> create preamble error: %+v", err) + return fmt.Errorf("rewrite log error: create preamble error: %+v", err) } // Truncate the AOF file. if err := engine.appendStore.Truncate(); err != nil { - return fmt.Errorf("rewrite log -> create aof error: %+v", err) + return fmt.Errorf("rewrite log error: create aof error: %+v", err) } return nil @@ -194,10 +182,19 @@ func (engine *Engine) RewriteLog() error { func (engine *Engine) Restore() error { if err := engine.preambleStore.Restore(); err != nil { - return fmt.Errorf("restore aof -> restore preamble error: %+v", err) + return fmt.Errorf("restore aof error: restore preamble error: %+v", err) } if err := engine.appendStore.Restore(); err != nil { - return fmt.Errorf("restore aof -> restore aof error: %+v", err) + return fmt.Errorf("restore aof error: restore aof error: %+v", err) } return nil } + +func (engine *Engine) Close() { + if err := engine.preambleStore.Close(); err != nil { + log.Printf("close preamble store error: %+v\n", engine) + } + if err := engine.appendStore.Close(); err != nil { + log.Printf("close append store error: %+v\n", engine) + } +} diff --git a/internal/aof/engine_test.go b/internal/aof/engine_test.go index a8eb54b8..47ecc760 100644 --- a/internal/aof/engine_test.go +++ b/internal/aof/engine_test.go @@ -54,41 +54,67 @@ func Test_AOFEngine(t *testing.T) { } } - state := map[string]internal.KeyData{ - "key1": {Value: "value1", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, - "key2": {Value: "value2", ExpireAt: clock.NewClock().Now().Add(-10 * time.Second)}, // Should be excluded on restore - "key3": {Value: "value3", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + state := map[int]map[string]internal.KeyData{ + 0: { + "key1": {Value: "value-01", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key2": {Value: "value-02", ExpireAt: clock.NewClock().Now().Add(-10 * time.Second)}, // Should be excluded on restore + "key3": {Value: "value-03", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + }, + 1: { + "key1": {Value: "value-11", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key2": {Value: "value-12", ExpireAt: clock.NewClock().Now().Add(-10 * time.Second)}, // Should be excluded on restore + "key3": {Value: "value-13", ExpireAt: clock.NewClock().Now().Add(-10 * time.Second)}, // Should be excluded on restore + "key4": {Value: "value-14", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + }, } - restoredState := map[string]internal.KeyData{} - wantRestoredState := map[string]internal.KeyData{ - "key1": {Value: "value1", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, - "key3": {Value: "value3", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, - "key4": {Value: "value4", ExpireAt: time.Time{}}, - "key5": {Value: "value5", ExpireAt: time.Time{}}, - "key6": {Value: "value6", ExpireAt: time.Time{}}, - "key7": {Value: "value7", ExpireAt: time.Time{}}, - "key8": {Value: "value8", ExpireAt: time.Time{}}, - "key9": {Value: "value9", ExpireAt: time.Time{}}, - "key10": {Value: "value10", ExpireAt: time.Time{}}, + restoredState := map[int]map[string]internal.KeyData{} + wantRestoredState := map[int]map[string]internal.KeyData{ + 0: { + "key1": {Value: "value-01", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key3": {Value: "value-03", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key4": {Value: "value-04", ExpireAt: time.Time{}}, + "key5": {Value: "value-05", ExpireAt: time.Time{}}, + "key6": {Value: "value-06", ExpireAt: time.Time{}}, + "key7": {Value: "value-07", ExpireAt: time.Time{}}, + "key8": {Value: "value-08", ExpireAt: time.Time{}}, + "key9": {Value: "value-09", ExpireAt: time.Time{}}, + "key10": {Value: "value-010", ExpireAt: time.Time{}}, + }, + 1: { + "key1": {Value: "value-11", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key4": {Value: "value-14", ExpireAt: time.Time{}}, + "key5": {Value: "value-15", ExpireAt: time.Time{}}, + "key6": {Value: "value-16", ExpireAt: time.Time{}}, + "key7": {Value: "value-17", ExpireAt: time.Time{}}, + "key8": {Value: "value-18", ExpireAt: time.Time{}}, + "key9": {Value: "value-19", ExpireAt: time.Time{}}, + "key10": {Value: "value-110", ExpireAt: time.Time{}}, + }, } - getStateFunc := func() map[string]internal.KeyData { + + getStateFunc := func() map[int]map[string]internal.KeyData { return state } - setKeyDataFunc := func(key string, data internal.KeyData) { - restoredState[key] = data + + setKeyDataFunc := func(database int, key string, data internal.KeyData) { + if restoredState[database] == nil { + restoredState[database] = make(map[string]internal.KeyData) + } + restoredState[database][key] = data } - handleCommandFunc := func(command []byte) { + + handleCommandFunc := func(database int, command []byte) { cmd, err := internal.Decode(command) if err != nil { t.Error(err) } - restoredState[cmd[1]] = internal.KeyData{Value: cmd[2], ExpireAt: time.Time{}} + restoredState[database][cmd[1]] = internal.KeyData{Value: cmd[2], ExpireAt: time.Time{}} } - preambleReadWriter := func() preamble.PreambleReadWriter { + preambleReadWriter := func() preamble.ReadWriter { return nil }() - appendReadWriter := func() log.AppendReadWriter { + appendReadWriter := func() log.ReadWriter { return nil }() @@ -109,15 +135,26 @@ func Test_AOFEngine(t *testing.T) { } // Log some commands to mutate the state - preRewriteCommands := [][]string{ - {"SET", "key4", "value4"}, - {"SET", "key5", "value5"}, - {"SET", "key6", "value6"}, + preRewriteCommands := map[int][][]string{ + 0: { + {"SET", "key4", "value4"}, + {"SET", "key5", "value5"}, + {"SET", "key6", "value6"}, + }, + 1: { + {"SET", "key4", "value4"}, + {"SET", "key5", "value5"}, + {"SET", "key6", "value6"}, + }, } - for _, command := range preRewriteCommands { - state[command[1]] = internal.KeyData{Value: command[2], ExpireAt: time.Time{}} - engine.QueueCommand(marshalRespCommand(command)) + + for database, commands := range preRewriteCommands { + for _, command := range commands { + state[database][command[1]] = internal.KeyData{Value: command[2], ExpireAt: time.Time{}} + engine.LogCommand(database, marshalRespCommand(command)) + } } + ticker := time.NewTicker(100 * time.Millisecond) defer func() { ticker.Stop() @@ -130,16 +167,27 @@ func Test_AOFEngine(t *testing.T) { t.Error(err) } - // Log some mode commands - postRewriteCommands := [][]string{ - {"SET", "key7", "value7"}, - {"SET", "key8", "value8"}, - {"SET", "key9", "value9"}, - {"SET", "key10", "value10"}, + // Log some more commands + postRewriteCommands := map[int][][]string{ + 0: { + {"SET", "key7", "value7"}, + {"SET", "key8", "value8"}, + {"SET", "key9", "value9"}, + {"SET", "key10", "value10"}, + }, + 1: { + {"SET", "key7", "value7"}, + {"SET", "key8", "value8"}, + {"SET", "key9", "value9"}, + {"SET", "key10", "value10"}, + }, } - for _, command := range postRewriteCommands { - state[command[1]] = internal.KeyData{Value: command[2], ExpireAt: time.Time{}} - engine.QueueCommand(marshalRespCommand(command)) + + for database, commands := range postRewriteCommands { + for _, command := range commands { + state[database][command[1]] = internal.KeyData{Value: command[2], ExpireAt: time.Time{}} + engine.LogCommand(database, marshalRespCommand(command)) + } } ticker.Reset(100 * time.Millisecond) @@ -152,19 +200,22 @@ func Test_AOFEngine(t *testing.T) { if len(wantRestoredState) != len(restoredState) { t.Errorf("expected restored state to be length %d, got %d", len(wantRestoredState), len(restoredState)) - for key, data := range restoredState { - want, ok := wantRestoredState[key] - if !ok { - t.Errorf("could not find key %s in expected state", key) - } - if want.Value != data.Value { - t.Errorf("expected value %v for key %s, got %v", want.Value, key, data.Value) - } - if !want.ExpireAt.Equal(data.ExpireAt) { - t.Errorf("expected expiry time of %v for key %s, got %v", want.ExpireAt, key, data.ExpireAt) + for database, data := range restoredState { + for key, keyData := range data { + want, ok := wantRestoredState[database][key] + if !ok { + t.Errorf("could not find key %s in expected state", key) + } + if want.Value != keyData.Value { + t.Errorf("expected value %v for key %s, got %v", want.Value, key, keyData.Value) + } + if !want.ExpireAt.Equal(keyData.ExpireAt) { + t.Errorf("expected expiry time of %v for key %s, got %v", want.ExpireAt, key, keyData.ExpireAt) + } } } } + engine.Close() _ = os.RemoveAll(directory) } diff --git a/internal/aof/log/store.go b/internal/aof/log/store.go index d45562ec..09c71cff 100644 --- a/internal/aof/log/store.go +++ b/internal/aof/log/store.go @@ -16,71 +16,81 @@ package log import ( "fmt" + "github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal/clock" "github.com/tidwall/resp" "io" "log" "os" "path" + "strconv" "strings" "sync" "time" ) -type AppendReadWriter interface { +type ReadWriter interface { io.ReadWriteSeeker io.Closer Truncate(size int64) error Sync() error } -type AppendStore struct { - clock clock.Clock - strategy string // Append file sync strategy. Can only be "always", "everysec", or "no" - mut sync.Mutex // Store mutex - rw AppendReadWriter // The ReadWriter used to persist and load the log - directory string // The directory for the AOF file if we must create one - handleCommand func(command []byte) // Function to handle command read from AOF log after restore +type Store struct { + clock clock.Clock + // Keeps track of the current database that we're logging commands for. + currentDatabase int + // Append file sync strategy. Can only be "always", "everysec", or "no". + strategy string + // Store mutex. + mut sync.Mutex + // The ReadWriter used to persist and load the log. + rw ReadWriter + // The directory for the AOF file if we must create one. + directory string + // Function to handle command read from AOF log after restore. + handleCommand func(database int, command []byte) } -func WithClock(clock clock.Clock) func(store *AppendStore) { - return func(store *AppendStore) { +func WithClock(clock clock.Clock) func(store *Store) { + return func(store *Store) { store.clock = clock } } -func WithStrategy(strategy string) func(store *AppendStore) { - return func(store *AppendStore) { +func WithStrategy(strategy string) func(store *Store) { + return func(store *Store) { store.strategy = strings.ToLower(strategy) } } -func WithReadWriter(rw AppendReadWriter) func(store *AppendStore) { - return func(store *AppendStore) { +func WithReadWriter(rw ReadWriter) func(store *Store) { + return func(store *Store) { store.rw = rw } } -func WithDirectory(directory string) func(store *AppendStore) { - return func(store *AppendStore) { +func WithDirectory(directory string) func(store *Store) { + return func(store *Store) { store.directory = directory } } -func WithHandleCommandFunc(f func(command []byte)) func(store *AppendStore) { - return func(store *AppendStore) { +func WithHandleCommandFunc(f func(database int, command []byte)) func(store *Store) { + return func(store *Store) { store.handleCommand = f } } -func NewAppendStore(options ...func(store *AppendStore)) (*AppendStore, error) { - store := &AppendStore{ - clock: clock.NewClock(), - directory: "", - strategy: "everysec", - rw: nil, - mut: sync.Mutex{}, - handleCommand: func(command []byte) {}, +func NewAppendStore(options ...func(store *Store)) (*Store, error) { + store := &Store{ + clock: clock.NewClock(), + currentDatabase: -1, + directory: "", + strategy: "everysec", + rw: nil, + mut: sync.Mutex{}, + handleCommand: func(database int, command []byte) {}, } for _, option := range options { @@ -125,8 +135,8 @@ func NewAppendStore(options ...func(store *AppendStore)) (*AppendStore, error) { return store, nil } -func (store *AppendStore) Write(command []byte) error { - // Skip operation if ReadWriter is not defined +func (store *Store) Write(database int, command []byte) error { + // Skip operation if ReadWriter is not defined. if store.rw == nil { return nil } @@ -134,27 +144,38 @@ func (store *AppendStore) Write(command []byte) error { store.mut.Lock() defer store.mut.Unlock() + // If the database parameter is different from the current database index, + // log the SELECT command before logging the incoming command. + // This allows us to switch databases appropriately when restoring the state on startup. + if database != store.currentDatabase { + _, err := store.rw.Write([]byte(fmt.Sprintf("*2\r\n$6\r\nSELECT\r\n$1\r\n%s\r\n", strconv.Itoa(database)))) + if err != nil { + return fmt.Errorf("log select error: %+v", err) + } + store.currentDatabase = database + } + if _, err := store.rw.Write(command); err != nil { - return err + return fmt.Errorf("log command error: %+v", err) } if strings.EqualFold(store.strategy, "always") { if err := store.Sync(); err != nil { - return err + return fmt.Errorf("log file sync error: %+v", err) } } return nil } -func (store *AppendStore) Sync() error { +func (store *Store) Sync() error { if store.rw != nil { return store.rw.Sync() } return nil } -func (store *AppendStore) Restore() error { +func (store *Store) Restore() error { store.mut.Lock() defer store.mut.Unlock() @@ -164,40 +185,79 @@ func (store *AppendStore) Restore() error { } r := resp.NewReader(store.rw) + database := 0 + for { value, n, err := r.ReadValue() if err != nil && err != io.EOF { return err } if n == 0 { - // Break out when there are no more bytes to read + // Break out when there are no more bytes to read. break } + command, err := value.MarshalRESP() if err != nil { return err } - store.handleCommand(command) + + // Decode command. + cmd, err := internal.Decode(command) + if err != nil { + return err + } + // If the command is a SELECT command, set the database value. + if strings.EqualFold(cmd[0], "select") { + database, err = strconv.Atoi(cmd[1]) + if err != nil { + return err + } + // Restart the read loop. + continue + } + + store.handleCommand(database, command) } return nil } -func (store *AppendStore) Truncate() error { +func (store *Store) Truncate() error { store.mut.Lock() defer store.mut.Unlock() + if err := store.rw.Truncate(0); err != nil { - return err + return fmt.Errorf("truncate: truncate error: %+v", err) } - // Seek to the beginning of the file after truncating + + // Seek to the beginning of the file after truncating. if _, err := store.rw.Seek(0, 0); err != nil { - return err + return fmt.Errorf("truncate: seek error: %+v", err) + } + + // Add command to select the current database at the top of the file. + _, err := store.rw.Write([]byte( + fmt.Sprintf("*2\r\n$6\r\nSELECT\r\n$1\r\n%s\r\n", strconv.Itoa(store.currentDatabase)))) + if err != nil { + return fmt.Errorf("truncate: log select error: %+v", err) + } + // Immediately sync the file. + if err = store.rw.Sync(); err != nil { + return fmt.Errorf("truncate: sync error: %+v", err) } + return nil } -func (store *AppendStore) Close() error { +func (store *Store) Close() error { store.mut.Lock() defer store.mut.Unlock() - return store.rw.Close() + if store.rw == nil { + return nil + } + if err := store.rw.Close(); err != nil { + return err + } + return nil } diff --git a/internal/aof/log/store_test.go b/internal/aof/log/store_test.go index daeb72c3..9064235a 100644 --- a/internal/aof/log/store_test.go +++ b/internal/aof/log/store_test.go @@ -44,7 +44,7 @@ func Test_AppendStore(t *testing.T) { directory string strategy string commands [][]string - appendReadWriter log.AppendReadWriter + appendReadWriter log.ReadWriter }{ { name: "1. Not passing an AppendReadWriter to NewAppendStore should create a new append file", @@ -66,7 +66,7 @@ func Test_AppendStore(t *testing.T) { {"SET", "key2", "value2"}, {"SET", "key3", "value3"}, }, - appendReadWriter: func() log.AppendReadWriter { + appendReadWriter: func() log.ReadWriter { // Create the directory if it does not exist if err := os.MkdirAll(path.Join("./testdata/with_read_writer", "aof"), os.ModePerm); err != nil { t.Error(err) @@ -95,11 +95,11 @@ func Test_AppendStore(t *testing.T) { for _, test := range tests { done := make(chan struct{}, 1) - options := []func(store *log.AppendStore){ + options := []func(store *log.Store){ log.WithClock(clock.NewClock()), log.WithDirectory(test.directory), log.WithStrategy(test.strategy), - log.WithHandleCommandFunc(func(command []byte) { + log.WithHandleCommandFunc(func(database int, command []byte) { for _, c := range test.commands { if bytes.Contains(command, marshalRespCommand(c)) { return @@ -120,7 +120,7 @@ func Test_AppendStore(t *testing.T) { for _, command := range test.commands { b := marshalRespCommand(command) - if err = store.Write(b); err != nil { + if err = store.Write(0, b); err != nil { t.Error(err) } } diff --git a/internal/aof/preamble/store.go b/internal/aof/preamble/store.go index 4dacc7db..4c222355 100644 --- a/internal/aof/preamble/store.go +++ b/internal/aof/preamble/store.go @@ -23,66 +23,65 @@ import ( "os" "path" "sync" - "time" ) -type PreambleReadWriter interface { +type ReadWriter interface { io.ReadWriteSeeker io.Closer Truncate(size int64) error Sync() error } -type PreambleStore struct { +type Store struct { clock clock.Clock - rw PreambleReadWriter + rw ReadWriter mut sync.Mutex directory string - getStateFunc func() map[string]internal.KeyData - setKeyDataFunc func(key string, data internal.KeyData) + getStateFunc func() map[int]map[string]internal.KeyData + setKeyDataFunc func(database int, key string, data internal.KeyData) } -func WithClock(clock clock.Clock) func(store *PreambleStore) { - return func(store *PreambleStore) { +func WithClock(clock clock.Clock) func(store *Store) { + return func(store *Store) { store.clock = clock } } -func WithReadWriter(rw PreambleReadWriter) func(store *PreambleStore) { - return func(store *PreambleStore) { +func WithReadWriter(rw ReadWriter) func(store *Store) { + return func(store *Store) { store.rw = rw } } -func WithGetStateFunc(f func() map[string]internal.KeyData) func(store *PreambleStore) { - return func(store *PreambleStore) { +func WithGetStateFunc(f func() map[int]map[string]internal.KeyData) func(store *Store) { + return func(store *Store) { store.getStateFunc = f } } -func WithSetKeyDataFunc(f func(key string, data internal.KeyData)) func(store *PreambleStore) { - return func(store *PreambleStore) { +func WithSetKeyDataFunc(f func(database int, key string, data internal.KeyData)) func(store *Store) { + return func(store *Store) { store.setKeyDataFunc = f } } -func WithDirectory(directory string) func(store *PreambleStore) { - return func(store *PreambleStore) { +func WithDirectory(directory string) func(store *Store) { + return func(store *Store) { store.directory = directory } } -func NewPreambleStore(options ...func(store *PreambleStore)) (*PreambleStore, error) { - store := &PreambleStore{ +func NewPreambleStore(options ...func(store *Store)) (*Store, error) { + store := &Store{ clock: clock.NewClock(), rw: nil, mut: sync.Mutex{}, directory: "", - getStateFunc: func() map[string]internal.KeyData { + getStateFunc: func() map[int]map[string]internal.KeyData { // No-Op by default return nil }, - setKeyDataFunc: func(key string, data internal.KeyData) {}, + setKeyDataFunc: func(database int, key string, data internal.KeyData) {}, } for _, option := range options { @@ -105,12 +104,12 @@ func NewPreambleStore(options ...func(store *PreambleStore)) (*PreambleStore, er return store, nil } -func (store *PreambleStore) CreatePreamble() error { +func (store *Store) CreatePreamble() error { store.mut.Lock() store.mut.Unlock() // Get current state. - state := store.filterExpiredKeys(store.getStateFunc()) + state := internal.FilterExpiredKeys(store.clock.Now(), store.getStateFunc()) o, err := json.Marshal(state) if err != nil { return err @@ -137,12 +136,12 @@ func (store *PreambleStore) CreatePreamble() error { return nil } -func (store *PreambleStore) Restore() error { +func (store *Store) Restore() error { if store.rw == nil { return nil } - // Seek to the beginning of the file before beginning restore + // Seek to the beginning of the file before beginning restore. if _, err := store.rw.Seek(0, 0); err != nil { return fmt.Errorf("restore preamble: %v", err) } @@ -156,38 +155,28 @@ func (store *PreambleStore) Restore() error { return nil } - state := make(map[string]internal.KeyData) - + state := make(map[int]map[string]internal.KeyData) if err = json.Unmarshal(b, &state); err != nil { return err } - for key, data := range store.filterExpiredKeys(state) { - store.setKeyDataFunc(key, data) + for database, data := range internal.FilterExpiredKeys(store.clock.Now(), state) { + for key, keyData := range data { + store.setKeyDataFunc(database, key, keyData) + } } return nil } -func (store *PreambleStore) Close() error { +func (store *Store) Close() error { store.mut.Lock() defer store.mut.Unlock() - return store.rw.Close() -} - -// filterExpiredKeys filters out keys that are already expired, so they are not persisted. -func (store *PreambleStore) filterExpiredKeys(state map[string]internal.KeyData) map[string]internal.KeyData { - var keysToDelete []string - for k, v := range state { - if v.ExpireAt.Equal(time.Time{}) { - continue - } - if v.ExpireAt.Before(store.clock.Now()) { - keysToDelete = append(keysToDelete, k) - } + if store.rw == nil { + return nil } - for _, key := range keysToDelete { - delete(state, key) + if err := store.rw.Close(); err != nil { + return err } - return state + return nil } diff --git a/internal/aof/preamble/store_test.go b/internal/aof/preamble/store_test.go index 846cfea3..c38e6d11 100644 --- a/internal/aof/preamble/store_test.go +++ b/internal/aof/preamble/store_test.go @@ -29,61 +29,55 @@ func Test_PreambleStore(t *testing.T) { tests := []struct { name string directory string - state map[string]internal.KeyData - preambleReadWriter preamble.PreambleReadWriter - wantState map[string]internal.KeyData + state map[int]map[string]internal.KeyData + preambleReadWriter preamble.ReadWriter + wantState map[int]map[string]internal.KeyData }{ { name: "1. Preamble store with no preamble read writer passed should trigger one to be created upon initialization", directory: directory, - state: map[string]internal.KeyData{ - "key1": { - Value: "value1", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), + state: map[int]map[string]internal.KeyData{ + 0: { + "key1": {Value: "value-01", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key2": {Value: "value-02", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key3": {Value: "value-03", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, }, - "key2": { - Value: "value2", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), - }, - "key3": { - Value: "value3", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), + 1: { + "key1": {Value: "value-11", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key2": {Value: "value-12", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key3": {Value: "value-13", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, }, }, preambleReadWriter: nil, - wantState: map[string]internal.KeyData{ - "key1": { - Value: "value1", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), - }, - "key2": { - Value: "value2", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), + wantState: map[int]map[string]internal.KeyData{ + 0: { + "key1": {Value: "value-01", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key2": {Value: "value-02", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key3": {Value: "value-03", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, }, - "key3": { - Value: "value3", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), + 1: { + "key1": {Value: "value-11", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key2": {Value: "value-12", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key3": {Value: "value-13", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, }, }, }, { name: "2. Pass a pre-existing preamble read writer to constructor", directory: directory, - state: map[string]internal.KeyData{ - "key4": { - Value: "value4", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), + state: map[int]map[string]internal.KeyData{ + 0: { + "key4": {Value: "value-04", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key5": {Value: "value-05", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key6": {Value: "value-06", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, }, - "key5": { - Value: "value5", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), - }, - "key6": { - Value: "value6", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), + 1: { + "key4": {Value: "value-14", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key5": {Value: "value-15", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key6": {Value: "value-16", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, }, }, - preambleReadWriter: func() preamble.PreambleReadWriter { + preambleReadWriter: func() preamble.ReadWriter { if err := os.MkdirAll(path.Join("./testdata/preamble", "aof"), os.ModePerm); err != nil { t.Error(err) } @@ -94,65 +88,59 @@ func Test_PreambleStore(t *testing.T) { } return f }(), - wantState: map[string]internal.KeyData{ - "key4": { - Value: "value4", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), - }, - "key5": { - Value: "value5", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), + wantState: map[int]map[string]internal.KeyData{ + 0: { + "key4": {Value: "value-04", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key5": {Value: "value-05", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key6": {Value: "value-06", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, }, - "key6": { - Value: "value6", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), + 1: { + "key4": {Value: "value-14", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key5": {Value: "value-15", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key6": {Value: "value-16", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, }, }, }, { name: "3. Skip expired keys when saving/loading state from preamble read writer", directory: directory, - state: map[string]internal.KeyData{ - "key7": { - Value: "value7", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), - }, - "key8": { - Value: "value8", - ExpireAt: clock.NewClock().Now().Add(-10 * time.Second), - }, - "key9": { - Value: "value9", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), - }, - "key10": { - Value: "value10", - ExpireAt: clock.NewClock().Now().Add(-10 * time.Second), + state: map[int]map[string]internal.KeyData{ + 0: { + "key7": {Value: "value-07", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key8": {Value: "value-08", ExpireAt: clock.NewClock().Now().Add(-10 * time.Second)}, + "key9": {Value: "value-09", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key10": {Value: "value-010", ExpireAt: clock.NewClock().Now().Add(-10 * time.Second)}, + }, + 1: { + "key7": {Value: "value-17", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key8": {Value: "value-18", ExpireAt: clock.NewClock().Now().Add(-10 * time.Second)}, + "key9": {Value: "value-19", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key10": {Value: "value-110", ExpireAt: clock.NewClock().Now().Add(-10 * time.Second)}, }, }, preambleReadWriter: nil, - wantState: map[string]internal.KeyData{ - "key7": { - Value: "value7", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), + wantState: map[int]map[string]internal.KeyData{ + 0: { + "key7": {Value: "value-07", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key9": {Value: "value-09", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, }, - "key9": { - Value: "value9", - ExpireAt: clock.NewClock().Now().Add(10 * time.Second), + 1: { + "key7": {Value: "value-17", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, + "key9": {Value: "value-19", ExpireAt: clock.NewClock().Now().Add(10 * time.Second)}, }, }, }, } for _, test := range tests { - options := []func(store *preamble.PreambleStore){ + options := []func(store *preamble.Store){ preamble.WithClock(clock.NewClock()), preamble.WithDirectory(test.directory), - preamble.WithGetStateFunc(func() map[string]internal.KeyData { + preamble.WithGetStateFunc(func() map[int]map[string]internal.KeyData { return test.state }), - preamble.WithSetKeyDataFunc(func(key string, data internal.KeyData) { - entry, ok := test.wantState[key] + preamble.WithSetKeyDataFunc(func(database int, key string, data internal.KeyData) { + entry, ok := test.wantState[database][key] if !ok { t.Errorf("could not find element: %v", key) } diff --git a/internal/config/config.go b/internal/config/config.go index a528e4ed..c01299f8 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -224,7 +224,7 @@ It is a plain text value by default but you can provide a SHA256 hash by adding } if len(*config) > 0 { - // Override configurations from file + // Override configurations from file. if f, err := os.Open(*config); err != nil { panic(err) } else { @@ -250,11 +250,11 @@ It is a plain text value by default but you can provide a SHA256 hash by adding } } - // If requirePass is set to true, then password must be provided as well + // If requirePass is set to true, then password must be provided as well. var err error = nil if conf.RequirePass && conf.Password == "" { - err = errors.New("password cannot be empty if requirePass is generic to true") + err = errors.New("password cannot be empty if requirePass is true") } return conf, err diff --git a/internal/constants/const.go b/internal/constants/const.go index 2d724e0b..9c8e1175 100644 --- a/internal/constants/const.go +++ b/internal/constants/const.go @@ -14,6 +14,8 @@ package constants +const Version = "0.8.0" // Next EchoVault version. Update this before each release. + const ( ACLModule = "acl" AdminModule = "admin" diff --git a/internal/eviction/lfu.go b/internal/eviction/lfu.go index c7b286a7..1a2405d9 100644 --- a/internal/eviction/lfu.go +++ b/internal/eviction/lfu.go @@ -32,13 +32,13 @@ type CacheLFU struct { entries []*EntryLFU } -func NewCacheLFU() CacheLFU { +func NewCacheLFU() *CacheLFU { cache := CacheLFU{ keys: make(map[string]bool), entries: make([]*EntryLFU, 0), } heap.Init(&cache) - return cache + return &cache } func (cache *CacheLFU) Len() int { diff --git a/internal/eviction/lfu_test.go b/internal/eviction/lfu_test.go index e0c38a69..68f7d14e 100644 --- a/internal/eviction/lfu_test.go +++ b/internal/eviction/lfu_test.go @@ -57,7 +57,7 @@ func Test_CacheLFU(t *testing.T) { mut.Lock() for i := 0; i < len(expectedKeys); i++ { - key := heap.Pop(&cache).(string) + key := heap.Pop(cache).(string) if key != expectedKeys[i] { t.Errorf("expected popped key at index %d to be %s, got %s", i, expectedKeys[i], key) } diff --git a/internal/eviction/lru.go b/internal/eviction/lru.go index ef7bc1f5..46ffe58c 100644 --- a/internal/eviction/lru.go +++ b/internal/eviction/lru.go @@ -31,13 +31,13 @@ type CacheLRU struct { entries []*EntryLRU } -func NewCacheLRU() CacheLRU { +func NewCacheLRU() *CacheLRU { cache := CacheLRU{ keys: make(map[string]bool), entries: make([]*EntryLRU, 0), } heap.Init(&cache) - return cache + return &cache } func (cache *CacheLRU) Len() int { diff --git a/internal/eviction/lru_test.go b/internal/eviction/lru_test.go index f0996fbe..7aff9dde 100644 --- a/internal/eviction/lru_test.go +++ b/internal/eviction/lru_test.go @@ -40,7 +40,7 @@ func Test_CacheLRU(t *testing.T) { ticker.Stop() for i := len(access) - 1; i >= 0; i-- { - key := heap.Pop(&cache).(string) + key := heap.Pop(cache).(string) if key != access[i] { t.Errorf("expected key at index %d to be %s, got %s", i, access[i], key) } diff --git a/internal/memberlist/memberlist.go b/internal/memberlist/memberlist.go index 895e1cf7..00c37b3b 100644 --- a/internal/memberlist/memberlist.go +++ b/internal/memberlist/memberlist.go @@ -21,6 +21,7 @@ import ( "github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal/config" "log" + "sync" "time" "github.com/hashicorp/memberlist" @@ -47,7 +48,8 @@ type Opts struct { type MemberList struct { options Opts broadcastQueue *memberlist.TransmitLimitedQueue - numOfNodes int + noOfNodesMut sync.RWMutex + noOfNodes int memberList *memberlist.Memberlist } @@ -55,7 +57,8 @@ func NewMemberList(opts Opts) *MemberList { return &MemberList{ options: opts, broadcastQueue: new(memberlist.TransmitLimitedQueue), - numOfNodes: 0, + noOfNodesMut: sync.RWMutex{}, + noOfNodes: 0, } } @@ -74,14 +77,25 @@ func (m *MemberList) MemberListInit(ctx context.Context) { applyDeleteKey: m.options.ApplyDeleteKey, }) cfg.Events = NewEventDelegate(EventDelegateOpts{ - incrementNodes: func() { m.numOfNodes += 1 }, - decrementNodes: func() { m.numOfNodes -= 1 }, + incrementNodes: func() { + m.noOfNodesMut.Lock() + defer m.noOfNodesMut.Unlock() + m.noOfNodes += 1 + }, + decrementNodes: func() { + m.noOfNodesMut.Lock() + defer m.noOfNodesMut.Unlock() + m.noOfNodes -= 1 + }, removeRaftServer: m.options.RemoveRaftServer, }) m.broadcastQueue.RetransmitMult = 1 m.broadcastQueue.NumNodes = func() int { - return m.numOfNodes + m.noOfNodesMut.RLock() + defer m.noOfNodesMut.RUnlock() + noOfNodes := m.noOfNodes + return noOfNodes } list, err := memberlist.Create(cfg) diff --git a/internal/modules/acl/acl.go b/internal/modules/acl/acl.go index 086bbcfb..8387b898 100644 --- a/internal/modules/acl/acl.go +++ b/internal/modules/acl/acl.go @@ -50,18 +50,20 @@ type ACL struct { GlobPatterns map[string]glob.Glob } -func loadUsersFromConfigFile(users []*User, filePath string) { +func loadUsersFromConfigFile(filePath string) []*User { + var users []*User + if filePath != "" { - // Create the director if it does not exist. + // Create the directory if it does not exist. if err := os.MkdirAll(path.Dir(filePath), os.ModePerm); err != nil { log.Printf("mkdir ACL config: %v\n", err) - return + return users } // Open the config file. Create it if it does not exist. f, err := os.OpenFile(filePath, os.O_RDONLY|os.O_CREATE, os.ModePerm) if err != nil { log.Printf("open ACL config: %v\n", err) - return + return users } defer func() { @@ -75,18 +77,19 @@ func loadUsersFromConfigFile(users []*User, filePath string) { if strings.ToLower(ext) == ".json" { if err := json.NewDecoder(f).Decode(&users); err != nil { log.Printf("load ACL config: %v\n", err) - return + return users } } if slices.Contains([]string{".yaml", ".yml"}, strings.ToLower(ext)) { if err := yaml.NewDecoder(f).Decode(&users); err != nil { log.Printf("load ACL config: %v\n", err) - return + return users } } - } + + return users } func NewACL(config config.Config) *ACL { @@ -105,7 +108,7 @@ func NewACL(config config.Config) *ACL { } // 2. Read and parse the ACL config file - loadUsersFromConfigFile(users, config.AclConfig) + users = loadUsersFromConfigFile(config.AclConfig) // 3. If default user was not loaded from file, add the created one defaultLoaded := false @@ -322,8 +325,8 @@ func (acl *ACL) AuthorizeConnection(conn *net.Conn, cmd []string, command intern return nil } - // Skip PING - if strings.EqualFold(comm, "ping") { + // Skip certain commands from authorization + if slices.Contains([]string{"ping", "echo", "hello"}, strings.ToLower(comm)) { return nil } @@ -418,7 +421,7 @@ func (acl *ACL) AuthorizeConnection(conn *net.Conn, cmd []string, command intern } // 8. Check if readKeys are in IncludedReadKeys - if !slices.ContainsFunc(readKeys, func(key string) bool { + if len(readKeys) > 0 && !slices.ContainsFunc(readKeys, func(key string) bool { return slices.ContainsFunc(connection.User.IncludedReadKeys, func(readKeyGlob string) bool { if acl.GlobPatterns[readKeyGlob].Match(key) { return true @@ -430,12 +433,12 @@ func (acl *ACL) AuthorizeConnection(conn *net.Conn, cmd []string, command intern }) }) { if len(notAllowed) > 0 { - return fmt.Errorf("not authorised to access the following keys: %+v", notAllowed) + return fmt.Errorf("not authorised to access the following read keys: %+v", notAllowed) } } // 9. Check if write keys are in IncludedWriteKeys - if !slices.ContainsFunc(writeKeys, func(key string) bool { + if len(writeKeys) > 0 && !slices.ContainsFunc(writeKeys, func(key string) bool { return slices.ContainsFunc(connection.User.IncludedWriteKeys, func(writeKeyGlob string) bool { if acl.GlobPatterns[writeKeyGlob].Match(key) { return true @@ -446,7 +449,7 @@ func (acl *ACL) AuthorizeConnection(conn *net.Conn, cmd []string, command intern return false }) }) { - return fmt.Errorf("not authorised to access the following keys: %+v", notAllowed) + return fmt.Errorf("not authorised to access the following write keys: %+v", notAllowed) } } diff --git a/internal/modules/acl/commands.go b/internal/modules/acl/commands.go index cc87c476..b4ac08fd 100644 --- a/internal/modules/acl/commands.go +++ b/internal/modules/acl/commands.go @@ -28,23 +28,6 @@ import ( "strings" ) -func handleAuth(params internal.HandlerFuncParams) ([]byte, error) { - if len(params.Command) < 2 || len(params.Command) > 3 { - return nil, errors.New(constants.WrongArgsResponse) - } - acl, ok := params.GetACL().(*ACL) - if !ok { - return nil, errors.New("could not load ACL") - } - acl.LockUsers() - defer acl.UnlockUsers() - - if err := acl.AuthenticateConnection(params.Context, params.Connection, params.Command); err != nil { - return nil, err - } - return []byte(constants.OkResponse), nil -} - func handleCat(params internal.HandlerFuncParams) ([]byte, error) { if len(params.Command) > 3 { return nil, errors.New(constants.WrongArgsResponse) @@ -496,23 +479,6 @@ func handleSave(params internal.HandlerFuncParams) ([]byte, error) { func Commands() []internal.Command { return []internal.Command{ - { - Command: "auth", - Module: constants.ACLModule, - Categories: []string{constants.ConnectionCategory, constants.SlowCategory}, - Description: `(AUTH [username] password) -Authenticates the connection. If the username is not provided, the connection will be authenticated against the -default ACL user. Otherwise, it is authenticated against the ACL user with the provided username.`, - Sync: false, - KeyExtractionFunc: func(cmd []string) (internal.KeyExtractionFuncResult, error) { - return internal.KeyExtractionFuncResult{ - Channels: make([]string, 0), - ReadKeys: make([]string, 0), - WriteKeys: make([]string, 0), - }, nil - }, - HandlerFunc: handleAuth, - }, { Command: "acl", Module: constants.ACLModule, diff --git a/internal/modules/acl/commands_test.go b/internal/modules/acl/commands_test.go index 1ad74661..8fbe6352 100644 --- a/internal/modules/acl/commands_test.go +++ b/internal/modules/acl/commands_test.go @@ -51,6 +51,14 @@ func setUpServer(port int, requirePass bool, aclConfig string) (*echovault.EchoV // Add the initial test users to the ACL module. for _, user := range generateInitialTestUsers() { + // If the user already exists in the server, skip. + existingUsers, err := mockServer.ACLUsers() + if err != nil { + return nil, err + } + if slices.Contains(existingUsers, user.Username) { + continue + } if _, err := mockServer.ACLSetUser(user); err != nil { return nil, err } @@ -157,6 +165,8 @@ func generateSHA256Password(plain string) string { } func Test_ACL(t *testing.T) { + t.Parallel() + port, err := internal.GetFreePort() if err != nil { t.Error(err) @@ -176,135 +186,6 @@ func Test_ACL(t *testing.T) { mockServer.ShutDown() }) - t.Run("Test_HandleAuth", func(t *testing.T) { - t.Parallel() - - conn, err := internal.GetConnection("localhost", port) - if err != nil { - t.Error(err) - return - } - defer func() { - if conn != nil { - _ = conn.Close() - } - }() - - r := resp.NewConn(conn) - - tests := []struct { - name string - cmd []resp.Value - wantRes string - wantErr string - }{ - { - name: "1. Authenticate with default user without specifying username", - cmd: []resp.Value{resp.StringValue("AUTH"), resp.StringValue("password1")}, - wantRes: "OK", - wantErr: "", - }, - { - name: "2. Authenticate with plaintext password", - cmd: []resp.Value{ - resp.StringValue("AUTH"), - resp.StringValue("with_password_user"), - resp.StringValue("password2"), - }, - wantRes: "OK", - wantErr: "", - }, - { - name: "3. Authenticate with SHA256 password", - cmd: []resp.Value{ - resp.StringValue("AUTH"), - resp.StringValue("with_password_user"), - resp.StringValue("password3"), - }, - wantRes: "OK", - wantErr: "", - }, - { - name: "4. Authenticate with no password user", - cmd: []resp.Value{ - resp.StringValue("AUTH"), - resp.StringValue("no_password_user"), - resp.StringValue("password4"), - }, - wantRes: "OK", - wantErr: "", - }, - { - name: "5. Fail to authenticate with disabled user", - cmd: []resp.Value{ - resp.StringValue("AUTH"), - resp.StringValue("disabled_user"), - resp.StringValue("password5"), - }, - wantRes: "", - wantErr: "Error user disabled_user is disabled", - }, - { - name: "6. Fail to authenticate with non-existent user", - cmd: []resp.Value{ - resp.StringValue("AUTH"), - resp.StringValue("non_existent_user"), - resp.StringValue("password6"), - }, - wantRes: "", - wantErr: "Error no user with username non_existent_user", - }, - { - name: "7. Fail to authenticate with the wrong password", - cmd: []resp.Value{ - resp.StringValue("AUTH"), - resp.StringValue("with_password_user"), - resp.StringValue("wrong_password"), - }, - wantRes: "", - wantErr: "Error could not authenticate user", - }, - { - name: "8. Command too short", - cmd: []resp.Value{resp.StringValue("AUTH")}, - wantRes: "", - wantErr: fmt.Sprintf("Error %s", constants.WrongArgsResponse), - }, - { - name: "9. Command too long", - cmd: []resp.Value{ - resp.StringValue("AUTH"), - resp.StringValue("user"), - resp.StringValue("password1"), - resp.StringValue("password2"), - }, - wantRes: "", - wantErr: fmt.Sprintf("Error %s", constants.WrongArgsResponse), - }, - } - - for _, test := range tests { - t.Run(test.name, func(t *testing.T) { - if err = r.WriteArray(test.cmd); err != nil { - t.Error(err) - } - rv, _, err := r.ReadValue() - if err != nil { - t.Error(err) - } - if test.wantErr != "" { - if rv.Error().Error() != test.wantErr { - t.Errorf("expected error response \"%s\", got \"%s\"", test.wantErr, rv.Error().Error()) - } - return - } - if rv.String() != test.wantRes { - t.Errorf("expected response \"%s\", got \"%s\"", test.wantRes, rv.String()) - } - }) - } - }) - t.Run("Test_Permissions", func(t *testing.T) { port, err := internal.GetFreePort() if err != nil { @@ -501,7 +382,7 @@ func Test_ACL(t *testing.T) { resp.StringValue("0"), resp.StringValue("-1"), }, - wantErr: fmt.Sprintf("not authorised to access the following keys: [%s~%s]", "%R", "key3"), + wantErr: fmt.Sprintf("not authorised to access the following read keys: [%s~%s]", "%R", "key3"), }, { name: "10. Return error when trying to write to keys that are not in write keys list", @@ -516,7 +397,7 @@ func Test_ACL(t *testing.T) { resp.StringValue("0"), resp.StringValue("3"), }, - wantErr: fmt.Sprintf("not authorised to access the following keys: [%s~%s]", "%W", "key3"), + wantErr: fmt.Sprintf("not authorised to access the following write keys: [%s~%s]", "%W", "key3"), }, } @@ -1983,10 +1864,15 @@ func Test_ACL(t *testing.T) { // Check if ACL LIST returns the expected list of users. resArr := res.Array() if len(resArr) != len(test.want) { - t.Errorf("expected response of lenght %d, got lenght %d", len(test.want), len(resArr)) + t.Errorf("expected response of lenght %d, got length %d", len(test.want), len(resArr)) return } + fmt.Println("USER LIST: ") + for j, user := range resArr { + fmt.Printf("%d) %+v\n", j, user) + } + var resStr []string for i := 0; i < len(resArr); i++ { resStr = strings.Split(resArr[i].String(), " ") diff --git a/internal/modules/connection/commands.go b/internal/modules/connection/commands.go index 05a87f98..182a3452 100644 --- a/internal/modules/connection/commands.go +++ b/internal/modules/connection/commands.go @@ -17,11 +17,31 @@ package connection import ( "errors" "fmt" + "github.com/echovault/echovault/internal/modules/acl" + "slices" + "strconv" "github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal/constants" ) +func handleAuth(params internal.HandlerFuncParams) ([]byte, error) { + if len(params.Command) < 2 || len(params.Command) > 3 { + return nil, errors.New(constants.WrongArgsResponse) + } + accessControlList, ok := params.GetACL().(*acl.ACL) + if !ok { + return nil, errors.New("could not load ACL") + } + accessControlList.LockUsers() + defer accessControlList.UnlockUsers() + + if err := accessControlList.AuthenticateConnection(params.Context, params.Connection, params.Command); err != nil { + return nil, err + } + return []byte(constants.OkResponse), nil +} + func handlePing(params internal.HandlerFuncParams) ([]byte, error) { switch len(params.Command) { default: @@ -40,8 +60,136 @@ func handleEcho(params internal.HandlerFuncParams) ([]byte, error) { return []byte(fmt.Sprintf("$%d\r\n%s\r\n", len(params.Command[1]), params.Command[1])), nil } +func handleHello(params internal.HandlerFuncParams) ([]byte, error) { + if !slices.Contains([]int{1, 2, 4, 5, 7}, len(params.Command)) { + return nil, errors.New(constants.WrongArgsResponse) + } + + if len(params.Command) == 1 { + serverInfo := params.GetServerInfo() + connectionInfo := params.GetConnectionInfo(params.Connection) + return BuildHelloResponse(serverInfo, connectionInfo), nil + } + + options, err := getHelloOptions( + params.Command[2:], + helloOptions{ + protocol: 2, + clientname: "", + auth: struct { + authenticate bool + username string + password string + }{ + authenticate: false, + username: "", + password: "", + }, + }) + + if err != nil { + return nil, err + } + + // Get protocol version + protocol, err := strconv.Atoi(params.Command[1]) + if err != nil { + return nil, err + } + if !slices.Contains([]int{2, 3}, protocol) { + return nil, errors.New("protocol must be 2 or 3") + } + options.protocol = protocol + + // If AUTH option is provided, authenticate the connection. + if options.auth.authenticate { + accessControlList, ok := params.GetACL().(*acl.ACL) + if !ok { + return nil, errors.New("could not load ACL") + } + accessControlList.LockUsers() + defer accessControlList.UnlockUsers() + if err = accessControlList.AuthenticateConnection( + params.Context, + params.Connection, + []string{"AUTH", options.auth.username, options.auth.password}, + ); err != nil { + return nil, err + } + } + + // Set the connection details. + connectionInfo := params.GetConnectionInfo(params.Connection) + params.SetConnectionInfo(params.Connection, options.clientname, options.protocol, connectionInfo.Database) + + // Get the new connection details and server info to return to the client. + serverInfo := params.GetServerInfo() + connectionInfo = params.GetConnectionInfo(params.Connection) + return BuildHelloResponse(serverInfo, connectionInfo), nil +} + +func handleSelect(params internal.HandlerFuncParams) ([]byte, error) { + if len(params.Command) != 2 { + return nil, errors.New(constants.WrongArgsResponse) + } + + database, err := strconv.Atoi(params.Command[1]) + if err != nil { + return nil, err + } + if database < 0 { + return nil, errors.New("database must be >= 0") + } + + connectionInfo := params.GetConnectionInfo(params.Connection) + params.SetConnectionInfo(params.Connection, connectionInfo.Name, connectionInfo.Protocol, database) + + return []byte(constants.OkResponse), nil +} + +func handleSwapDB(params internal.HandlerFuncParams) ([]byte, error) { + if len(params.Command) != 3 { + return nil, errors.New(constants.WrongArgsResponse) + } + + database1, err := strconv.Atoi(params.Command[1]) + if err != nil { + return nil, errors.New("both database indices must be integers") + } + + database2, err := strconv.Atoi(params.Command[2]) + if err != nil { + return nil, errors.New("both database indices must be integers") + } + + if database1 < 0 || database2 < 0 { + return nil, errors.New("database indices must be >= 0") + } + + params.SwapDBs(database1, database2) + + return []byte(constants.OkResponse), nil +} + func Commands() []internal.Command { return []internal.Command{ + { + Command: "auth", + Module: constants.ConnectionModule, + Categories: []string{constants.ConnectionCategory, constants.SlowCategory}, + Description: `(AUTH [username] password) +Authenticates the connection. If the username is not provided, the connection will be authenticated against the +default ACL user. Otherwise, it is authenticated against the ACL user with the provided username.`, + Sync: false, + KeyExtractionFunc: func(cmd []string) (internal.KeyExtractionFuncResult, error) { + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), + ReadKeys: make([]string, 0), + WriteKeys: make([]string, 0), + }, nil + }, + HandlerFunc: handleAuth, + }, { Command: "ping", Module: constants.ConnectionModule, @@ -60,11 +208,27 @@ Otherwise, the server will return "PONG".`, HandlerFunc: handlePing, }, { - Command: "echo", + Command: "echo", + Module: constants.ConnectionModule, + Categories: []string{constants.ConnectionCategory, constants.FastCategory}, + Description: `(ECHO message) Echo the message back to the client.`, + Sync: false, + KeyExtractionFunc: func(cmd []string) (internal.KeyExtractionFuncResult, error) { + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), + ReadKeys: make([]string, 0), + WriteKeys: make([]string, 0), + }, nil + }, + HandlerFunc: handleEcho, + }, + { + Command: "hello", Module: constants.ConnectionModule, - Categories: []string{constants.ConnectionCategory, constants.FastCategory}, - Description: `(ECHO message) -Echo the message back to the client.`, + Categories: []string{constants.FastCategory, constants.ConnectionCategory}, + Description: `(HELLO [protover [AUTH username password] [SETNAME clientname]]) +Switch to a different protocol, optionally authenticating and setting the connection's name, +or provide a contextual client report.`, Sync: false, KeyExtractionFunc: func(cmd []string) (internal.KeyExtractionFuncResult, error) { return internal.KeyExtractionFuncResult{ @@ -73,7 +237,45 @@ Echo the message back to the client.`, WriteKeys: make([]string, 0), }, nil }, - HandlerFunc: handleEcho, + HandlerFunc: handleHello, + }, + { + Command: "select", + Module: constants.ConnectionModule, + Categories: []string{constants.FastCategory, constants.ConnectionCategory}, + Description: `(SELECT index) Change the logical database that the current connection is operating from.`, + Sync: false, + KeyExtractionFunc: func(cmd []string) (internal.KeyExtractionFuncResult, error) { + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), + ReadKeys: make([]string, 0), + WriteKeys: make([]string, 0), + }, nil + }, + HandlerFunc: handleSelect, + }, + { + Command: "swapdb", + Module: constants.ConnectionModule, + Categories: []string{ + constants.KeyspaceCategory, + constants.SlowCategory, + constants.DangerousCategory, + constants.ConnectionCategory, + }, + Description: `(SWAPDB index1 index2) +This command swaps two databases, +so that immediately all the clients connected to a given database will see the data of the other database, +and the other way around.`, + Sync: false, + KeyExtractionFunc: func(cmd []string) (internal.KeyExtractionFuncResult, error) { + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), + ReadKeys: make([]string, 0), + WriteKeys: make([]string, 0), + }, nil + }, + HandlerFunc: handleSwapDB, }, } } diff --git a/internal/modules/connection/commands_test.go b/internal/modules/connection/commands_test.go index d4e77f8d..4fbf9bbd 100644 --- a/internal/modules/connection/commands_test.go +++ b/internal/modules/connection/commands_test.go @@ -15,7 +15,15 @@ package connection_test import ( + "bufio" + "bytes" + "crypto/sha256" + "encoding/hex" "errors" + "fmt" + "github.com/echovault/echovault/internal/modules/connection" + "reflect" + "strconv" "strings" "testing" @@ -26,6 +34,67 @@ import ( "github.com/tidwall/resp" ) +func setUpServer(port int, requirePass bool, aclConfig string) (*echovault.EchoVault, error) { + conf := config.Config{ + BindAddr: "localhost", + Port: uint16(port), + DataDir: "", + EvictionPolicy: constants.NoEviction, + RequirePass: requirePass, + Password: "password1", + AclConfig: aclConfig, + } + + mockServer, err := echovault.NewEchoVault( + echovault.WithConfig(conf), + ) + if err != nil { + return nil, err + } + + // Add the initial test users to the ACL module. + for _, user := range generateInitialTestUsers() { + if _, err := mockServer.ACLSetUser(user); err != nil { + return nil, err + } + } + + return mockServer, nil +} + +func generateInitialTestUsers() []echovault.User { + return []echovault.User{ + { + // User with both hash password and plaintext password. + Username: "with_password_user", + Enabled: true, + IncludeCategories: []string{"*"}, + IncludeCommands: []string{"*"}, + AddPlainPasswords: []string{"password2"}, + AddHashPasswords: []string{generateSHA256Password("password3")}, + }, + { + // User with NoPassword option. + Username: "no_password_user", + Enabled: true, + NoPassword: true, + AddPlainPasswords: []string{"password4"}, + }, + { + // Disabled user. + Username: "disabled_user", + Enabled: false, + AddPlainPasswords: []string{"password5"}, + }, + } +} + +func generateSHA256Password(plain string) string { + h := sha256.New() + h.Write([]byte(plain)) + return hex.EncodeToString(h.Sum(nil)) +} + func Test_Connection(t *testing.T) { port, err := internal.GetFreePort() if err != nil { @@ -33,14 +102,7 @@ func Test_Connection(t *testing.T) { return } - mockServer, err := echovault.NewEchoVault( - echovault.WithConfig(config.Config{ - DataDir: "", - EvictionPolicy: constants.NoEviction, - BindAddr: "localhost", - Port: uint16(port), - }), - ) + mockServer, err := setUpServer(port, true, "") if err != nil { t.Error(err) return @@ -54,6 +116,135 @@ func Test_Connection(t *testing.T) { mockServer.ShutDown() }) + t.Run("Test_HandleAuth", func(t *testing.T) { + t.Parallel() + + conn, err := internal.GetConnection("localhost", port) + if err != nil { + t.Error(err) + return + } + defer func() { + if conn != nil { + _ = conn.Close() + } + }() + + r := resp.NewConn(conn) + + tests := []struct { + name string + cmd []resp.Value + wantRes string + wantErr string + }{ + { + name: "1. Authenticate with default user without specifying username", + cmd: []resp.Value{resp.StringValue("AUTH"), resp.StringValue("password1")}, + wantRes: "OK", + wantErr: "", + }, + { + name: "2. Authenticate with plaintext password", + cmd: []resp.Value{ + resp.StringValue("AUTH"), + resp.StringValue("with_password_user"), + resp.StringValue("password2"), + }, + wantRes: "OK", + wantErr: "", + }, + { + name: "3. Authenticate with SHA256 password", + cmd: []resp.Value{ + resp.StringValue("AUTH"), + resp.StringValue("with_password_user"), + resp.StringValue("password3"), + }, + wantRes: "OK", + wantErr: "", + }, + { + name: "4. Authenticate with no password user", + cmd: []resp.Value{ + resp.StringValue("AUTH"), + resp.StringValue("no_password_user"), + resp.StringValue("password4"), + }, + wantRes: "OK", + wantErr: "", + }, + { + name: "5. Fail to authenticate with disabled user", + cmd: []resp.Value{ + resp.StringValue("AUTH"), + resp.StringValue("disabled_user"), + resp.StringValue("password5"), + }, + wantRes: "", + wantErr: "Error user disabled_user is disabled", + }, + { + name: "6. Fail to authenticate with non-existent user", + cmd: []resp.Value{ + resp.StringValue("AUTH"), + resp.StringValue("non_existent_user"), + resp.StringValue("password6"), + }, + wantRes: "", + wantErr: "Error no user with username non_existent_user", + }, + { + name: "7. Fail to authenticate with the wrong password", + cmd: []resp.Value{ + resp.StringValue("AUTH"), + resp.StringValue("with_password_user"), + resp.StringValue("wrong_password"), + }, + wantRes: "", + wantErr: "Error could not authenticate user", + }, + { + name: "8. Command too short", + cmd: []resp.Value{resp.StringValue("AUTH")}, + wantRes: "", + wantErr: fmt.Sprintf("Error %s", constants.WrongArgsResponse), + }, + { + name: "9. Command too long", + cmd: []resp.Value{ + resp.StringValue("AUTH"), + resp.StringValue("user"), + resp.StringValue("password1"), + resp.StringValue("password2"), + }, + wantRes: "", + wantErr: fmt.Sprintf("Error %s", constants.WrongArgsResponse), + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + if err = r.WriteArray(test.cmd); err != nil { + t.Error(err) + } + rv, _, err := r.ReadValue() + if err != nil { + t.Error(err) + } + if test.wantErr != "" { + if rv.Error().Error() != test.wantErr { + t.Errorf("expected error response \"%s\", got \"%s\"", test.wantErr, rv.Error().Error()) + } + return + } + if rv.String() != test.wantRes { + t.Errorf("expected response \"%s\", got \"%s\"", test.wantRes, rv.String()) + } + }) + } + }) + t.Run("Test_HandlePing", func(t *testing.T) { conn, err := internal.GetConnection("localhost", port) if err != nil { @@ -115,46 +306,338 @@ func Test_Connection(t *testing.T) { } }) - t.Run("Test_HandleEcho", func(t *testing.T) { + conn, err := internal.GetConnection("localhost", port) + if err != nil { + t.Error(err) + return + } + defer func() { + _ = conn.Close() + }() + client := resp.NewConn(conn) + + tests := []struct { + command []resp.Value + expected string + expectedErr error + }{ + { + command: []resp.Value{resp.StringValue("ECHO"), resp.StringValue("Hello, EchoVault!")}, + expected: "Hello, EchoVault!", + expectedErr: nil, + }, + { + command: []resp.Value{resp.StringValue("ECHO")}, + expected: "", + expectedErr: errors.New(constants.WrongArgsResponse), + }, + { + command: []resp.Value{ + resp.StringValue("ECHO"), + resp.StringValue("Hello, EchoVault!"), + resp.StringValue("Once more"), + }, + expected: "", + expectedErr: errors.New(constants.WrongArgsResponse), + }, + } + + for _, test := range tests { + if err = client.WriteArray(test.command); err != nil { + t.Error(err) + return + } + + res, _, err := client.ReadValue() + if err != nil { + t.Error(err) + } + + if test.expectedErr != nil { + if !strings.Contains(res.Error().Error(), test.expectedErr.Error()) { + t.Errorf("expected error \"%s\", got \"%s\"", test.expectedErr.Error(), res.Error().Error()) + } + continue + } + + if res.String() != test.expected { + t.Errorf("expected response \"%s\", got \"%s\"", test.expected, res.String()) + } + } + }) + + t.Run("Test_HandleHello", func(t *testing.T) { + t.Parallel() + + port, err := internal.GetFreePort() + if err != nil { + t.Error(err) + return + } + mockServer, err := setUpServer(port, true, "") + if err != nil { + t.Error(err) + return + } + go func() { + mockServer.Start() + }() + t.Cleanup(func() { + mockServer.ShutDown() + }) + + tests := []struct { + name string + command []resp.Value + wantRes []byte + }{ + { + name: "1. Hello", + command: []resp.Value{resp.StringValue("HELLO")}, + wantRes: connection.BuildHelloResponse( + internal.ServerInfo{ + Server: "echovault", + Version: constants.Version, + Id: "", + Mode: "standalone", + Role: "master", + Modules: mockServer.ListModules(), + }, + internal.ConnectionInfo{ + Id: 1, + Name: "", + Protocol: 2, + Database: 0, + }, + ), + }, + { + name: "2. Hello 2", + command: []resp.Value{resp.StringValue("HELLO"), resp.StringValue("2")}, + wantRes: connection.BuildHelloResponse( + internal.ServerInfo{ + Server: "echovault", + Version: constants.Version, + Id: "", + Mode: "standalone", + Role: "master", + Modules: mockServer.ListModules(), + }, + internal.ConnectionInfo{ + Id: 2, + Name: "", + Protocol: 2, + Database: 0, + }, + ), + }, + { + name: "3. Hello 3", + command: []resp.Value{resp.StringValue("HELLO"), resp.StringValue("3")}, + wantRes: connection.BuildHelloResponse( + internal.ServerInfo{ + Server: "echovault", + Version: constants.Version, + Id: "", + Mode: "standalone", + Role: "master", + Modules: mockServer.ListModules(), + }, + internal.ConnectionInfo{ + Id: 3, + Name: "", + Protocol: 3, + Database: 0, + }, + ), + }, + { + name: "4. Hello with auth success", + command: []resp.Value{ + resp.StringValue("HELLO"), + resp.StringValue("3"), + resp.StringValue("AUTH"), + resp.StringValue("default"), + resp.StringValue("password1"), + }, + wantRes: connection.BuildHelloResponse( + internal.ServerInfo{ + Server: "echovault", + Version: constants.Version, + Id: "", + Mode: "standalone", + Role: "master", + Modules: mockServer.ListModules(), + }, + internal.ConnectionInfo{ + Id: 4, + Name: "", + Protocol: 3, + Database: 0, + }, + ), + }, + { + name: "5. Hello with auth failure", + command: []resp.Value{ + resp.StringValue("HELLO"), + resp.StringValue("3"), + resp.StringValue("AUTH"), + resp.StringValue("default"), + resp.StringValue("password2"), + }, + wantRes: []byte("-Error could not authenticate user\r\n"), + }, + { + name: "6. Hello with auth and set client name", + command: []resp.Value{ + resp.StringValue("HELLO"), + resp.StringValue("3"), + resp.StringValue("AUTH"), + resp.StringValue("default"), + resp.StringValue("password1"), + resp.StringValue("SETNAME"), + resp.StringValue("client6"), + }, + wantRes: connection.BuildHelloResponse( + internal.ServerInfo{ + Server: "echovault", + Version: constants.Version, + Id: "", + Mode: "standalone", + Role: "master", + Modules: mockServer.ListModules(), + }, + internal.ConnectionInfo{ + Id: 6, + Name: "", + Protocol: 3, + Database: 0, + }, + ), + }, + { + name: "7. Command too long", + command: []resp.Value{ + resp.StringValue("HELLO"), + resp.StringValue("3"), + resp.StringValue("AUTH"), + resp.StringValue("default"), + resp.StringValue("password1"), + resp.StringValue("SETNAME"), + resp.StringValue("client6"), + resp.StringValue("extra_arg"), + }, + wantRes: []byte(fmt.Sprintf("-Error %s\r\n", constants.WrongArgsResponse)), + }, + } + + for i := 0; i < len(tests); i++ { conn, err := internal.GetConnection("localhost", port) if err != nil { t.Error(err) return } - defer func() { - _ = conn.Close() - }() client := resp.NewConn(conn) - tests := []struct { - command []resp.Value - expected string - expectedErr error - }{ - { - command: []resp.Value{resp.StringValue("ECHO"), resp.StringValue("Hello, EchoVault!")}, - expected: "Hello, EchoVault!", - expectedErr: nil, - }, - { - command: []resp.Value{resp.StringValue("ECHO")}, - expected: "", - expectedErr: errors.New(constants.WrongArgsResponse), - }, - { - command: []resp.Value{ - resp.StringValue("ECHO"), - resp.StringValue("Hello, EchoVault!"), - resp.StringValue("Once more"), - }, - expected: "", - expectedErr: errors.New(constants.WrongArgsResponse), - }, + if err = client.WriteArray(tests[i].command); err != nil { + t.Error(err) + return } - for _, test := range tests { - if err = client.WriteArray(test.command); err != nil { + buf := bufio.NewReader(conn) + res, err := internal.ReadMessage(buf) + if err != nil { + t.Error(err) + return + } + + if !bytes.Equal(tests[i].wantRes, res) { + t.Errorf("expected byte resposne:\n%s, \n\ngot:\n%s", string(tests[i].wantRes), string(res)) + return + } + + // Close connection + _ = conn.Close() + } + }) + + t.Run("Test_HandleSelect", func(t *testing.T) { + t.Parallel() + tests := []struct { + name string + database int + wantDBErr error + setCommand []resp.Value + getCommand []resp.Value + getWantRes []resp.Value + }{ + { + name: "1. Default database 0", + database: 0, + wantDBErr: nil, + setCommand: []resp.Value{ + resp.StringValue("MSET"), + resp.StringValue("key1"), resp.StringValue("value-01"), + resp.StringValue("key2"), resp.StringValue("value-02"), + resp.StringValue("key3"), resp.StringValue("value-03"), + }, + getCommand: []resp.Value{ + resp.StringValue("MGET"), + resp.StringValue("key1"), + resp.StringValue("key2"), + resp.StringValue("key3"), + }, + getWantRes: []resp.Value{ + resp.StringValue("value-01"), + resp.StringValue("value-02"), + resp.StringValue("value-03"), + }, + }, + { + name: "2. Select database 1", + database: 1, + wantDBErr: nil, + setCommand: []resp.Value{ + resp.StringValue("MSET"), + resp.StringValue("key1"), resp.StringValue("value-11"), + resp.StringValue("key2"), resp.StringValue("value-12"), + resp.StringValue("key3"), resp.StringValue("value-13"), + }, + getCommand: []resp.Value{ + resp.StringValue("MGET"), + resp.StringValue("key1"), + resp.StringValue("key2"), + resp.StringValue("key3"), + }, + getWantRes: []resp.Value{ + resp.StringValue("value-11"), + resp.StringValue("value-12"), + resp.StringValue("value-13"), + }, + }, + { + name: "3. Error when selecting database < 0", + database: -1, + wantDBErr: errors.New("database must be >= 0"), + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + conn, err := internal.GetConnection("localhost", port) + if err != nil { + t.Error(err) + return + } + client := resp.NewConn(conn) + + // Authenticate the connection + if err = client.WriteArray([]resp.Value{ + resp.StringValue("AUTH"), + resp.StringValue("password1"), + }); err != nil { t.Error(err) return } @@ -162,19 +645,356 @@ func Test_Connection(t *testing.T) { res, _, err := client.ReadValue() if err != nil { t.Error(err) + return + } + if !strings.EqualFold(res.String(), "ok") { + t.Errorf("expected OK auth response, got \"%s\"", res.String()) + return } - if test.expectedErr != nil { - if !strings.Contains(res.Error().Error(), test.expectedErr.Error()) { - t.Errorf("expected error \"%s\", got \"%s\"", test.expectedErr.Error(), res.Error().Error()) + // If database is not 0, execute the select command + if test.database != 0 { + if err = client.WriteArray([]resp.Value{ + resp.StringValue("SELECT"), + resp.StringValue(strconv.Itoa(test.database)), + }); err != nil { + t.Error(err) + return + } + res, _, err := client.ReadValue() + if err != nil { + t.Error(err) + return + } + if test.wantDBErr != nil { + // If we expect a select error, check that it's the expected error. + if !strings.Contains(res.Error().Error(), test.wantDBErr.Error()) { + t.Errorf("expected error response to contain \"%s\", \"%s\"", test.wantDBErr.Error(), res.Error().Error()) + return + } + return + } else { + // We do not expect an error, check if it's an OK response. + if !strings.EqualFold(res.String(), "ok") { + t.Errorf("expected OK response, got \"%s\"", res.String()) + return + } } - continue } - if res.String() != test.expected { - t.Errorf("expected response \"%s\", got \"%s\"", test.expected, res.String()) + // Execute command to set values + if err = client.WriteArray(test.setCommand); err != nil { + t.Error(err) + return } - } + res, _, err = client.ReadValue() + if err != nil { + t.Error(err) + return + } + if !strings.EqualFold(res.String(), "ok") { + t.Errorf("expected OK set response, got \"%s\"", res.String()) + return + } + + // Execute commands to get values. + if err = client.WriteArray(test.getCommand); err != nil { + t.Error(err) + return + } + res, _, err = client.ReadValue() + if err != nil { + t.Error(err) + return + } + if !reflect.DeepEqual(res.Array(), test.getWantRes) { + t.Errorf("expected response %+v, got %+v", test.getWantRes, res.Array()) + return + } + }) + } + }) + + t.Run("Test_HandleSwapDBs", func(t *testing.T) { + t.Parallel() + + port, err := internal.GetFreePort() + if err != nil { + t.Error(err) + return + } + mockServer, err := setUpServer(port, false, "") + if err != nil { + t.Error(err) + return + } + go func() { + mockServer.Start() + }() + t.Cleanup(func() { + mockServer.ShutDown() }) + tests := []struct { + name string + presetValues map[int]map[string]string + database0 string + database1 string + getCommand []resp.Value + swapCommand []resp.Value + want0 []resp.Value + want1 []resp.Value + wantErr error + }{ + { + name: "1. Successfully swap databases", + presetValues: map[int]map[string]string{ + 0: {"key1": "value-01", "key2": "value-02", "key3": "value-03", "key4": "value-04", "key5": "value-05"}, + 1: {"key1": "value-11", "key2": "value-12", "key3": "value-13", "key4": "value-14", "key5": "value-15"}, + }, + database0: "0", + database1: "1", + getCommand: []resp.Value{ + resp.StringValue("MGET"), + resp.StringValue("key1"), resp.StringValue("key2"), resp.StringValue("key3"), + resp.StringValue("key4"), resp.StringValue("key5"), + }, + swapCommand: []resp.Value{ + resp.StringValue("SWAPDB"), resp.StringValue("0"), resp.StringValue("1"), + }, + want0: []resp.Value{ + resp.StringValue("value-01"), resp.StringValue("value-02"), resp.StringValue("value-03"), + resp.StringValue("value-04"), resp.StringValue("value-05"), + }, + want1: []resp.Value{ + resp.StringValue("value-11"), resp.StringValue("value-12"), resp.StringValue("value-13"), + resp.StringValue("value-14"), resp.StringValue("value-15"), + }, + wantErr: nil, + }, + { + name: "2. First database index is not an integer", + presetValues: nil, + database0: "index0", + database1: "1", + getCommand: make([]resp.Value, 0), + swapCommand: []resp.Value{ + resp.StringValue("SWAPDB"), resp.StringValue("index0"), resp.StringValue("1"), + }, + want0: make([]resp.Value, 0), + want1: make([]resp.Value, 0), + wantErr: errors.New("both database indices must be integers"), + }, + { + name: "3. Second database index is not an integer", + presetValues: nil, + database0: "0", + database1: "index1", + getCommand: make([]resp.Value, 0), + swapCommand: []resp.Value{ + resp.StringValue("SWAPDB"), resp.StringValue("0"), resp.StringValue("index1"), + }, + want0: make([]resp.Value, 0), + want1: make([]resp.Value, 0), + wantErr: errors.New("both database indices must be integers"), + }, + { + name: "4. First database index is < 0", + presetValues: nil, + database0: "-1", + database1: "1", + getCommand: make([]resp.Value, 0), + swapCommand: []resp.Value{ + resp.StringValue("SWAPDB"), resp.StringValue("-1"), resp.StringValue("1"), + }, + want0: make([]resp.Value, 0), + want1: make([]resp.Value, 0), + wantErr: errors.New("database indices must be >= 0"), + }, + { + name: "5. Second database index is < 0", + presetValues: nil, + database0: "1", + database1: "-1", + getCommand: make([]resp.Value, 0), + swapCommand: []resp.Value{ + resp.StringValue("SWAPDB"), resp.StringValue("0"), resp.StringValue("-1"), + }, + want0: make([]resp.Value, 0), + want1: make([]resp.Value, 0), + wantErr: errors.New("database indices must be >= 0"), + }, + { + name: "6. Command too short", + presetValues: nil, + database0: "-1", + database1: "1", + getCommand: make([]resp.Value, 0), + swapCommand: []resp.Value{resp.StringValue("SWAPDB"), resp.StringValue("0")}, + want0: make([]resp.Value, 0), + want1: make([]resp.Value, 0), + wantErr: errors.New(constants.WrongArgsResponse), + }, + { + name: "7. Command too long", + presetValues: nil, + database0: "-1", + database1: "1", + getCommand: make([]resp.Value, 0), + swapCommand: []resp.Value{ + resp.StringValue("SWAPDB"), resp.StringValue("0"), + resp.StringValue("1"), resp.StringValue("2"), + }, + want0: make([]resp.Value, 0), + want1: make([]resp.Value, 0), + wantErr: errors.New(constants.WrongArgsResponse), + }, + } + + for _, test := range tests { + // Set values for database 0 and 1. + if test.presetValues != nil { + for db, data := range test.presetValues { + _ = mockServer.SelectDB(db) + if _, err = mockServer.MSet(data); err != nil { + t.Error(err) + return + } + } + } + + // Create TPC connection for database 0 + conn1, err := internal.GetConnection("localhost", port) + if err != nil { + t.Error(err) + return + } + client1 := resp.NewConn(conn1) + if len(test.getCommand) > 0 { + // Select database 0 for connection 1 + if err = client1.WriteArray([]resp.Value{ + resp.StringValue("SELECT"), + resp.StringValue(test.database0), + }); err != nil { + t.Error(err) + return + } + res, _, err := client1.ReadValue() + if err != nil { + t.Error(err) + return + } + if !strings.EqualFold(res.String(), "ok") { + t.Errorf("expcted OK response when selecting database, got %s", res.String()) + return + } + + // Check that the connection reads values from database 0 + if err = client1.WriteArray(test.getCommand); err != nil { + t.Error(err) + return + } + res, _, err = client1.ReadValue() + if err != nil { + t.Error(err) + return + } + if !reflect.DeepEqual(test.want0, res.Array()) { + t.Errorf("expected response %+v, got %+v", test.want0, res.Array()) + } + } + + // Create TCP connection for database 1 + conn2, err := internal.GetConnection("localhost", port) + if err != nil { + t.Error(err) + return + } + client2 := resp.NewConn(conn2) + if len(test.getCommand) > 0 { + // Select database 1 for the second connection. + if err = client2.WriteArray([]resp.Value{ + resp.StringValue("SELECT"), + resp.StringValue(test.database1), + }); err != nil { + t.Error(err) + return + } + res, _, err := client2.ReadValue() + if err != nil { + t.Error(err) + return + } + if !strings.EqualFold(res.String(), "ok") { + t.Errorf("expcted OK response when selecting database, got %s", res.String()) + return + } + // Check that the connection reads values from database 1. + if err = client2.WriteArray(test.getCommand); err != nil { + t.Error(err) + return + } + res, _, err = client2.ReadValue() + if err != nil { + t.Error(err) + return + } + if !reflect.DeepEqual(test.want1, res.Array()) { + t.Errorf("expected response %+v, got %+v", test.want1, res.Array()) + } + } + + // Run SWAPDB command + if err = client1.WriteArray(test.swapCommand); err != nil { + t.Error(err) + return + } + res, _, err := client1.ReadValue() + if err != nil { + t.Error(err) + return + } + // If we expect an error check the error. + if test.wantErr != nil { + if !strings.Contains(res.Error().Error(), test.wantErr.Error()) { + t.Errorf("expected error response to contain \"%s\", go \"%s\"", + test.wantErr.Error(), res.Error().Error()) + } + continue + } + // Check if response is OK. + if !strings.EqualFold(res.String(), "ok") { + t.Errorf("expected OK response from SWAPDB command, got %s", res.String()) + return + } + + // Check that the first connection now reads values from database 1 + if err = client1.WriteArray(test.getCommand); err != nil { + t.Error(err) + return + } + res, _, err = client1.ReadValue() + if err != nil { + t.Error(err) + return + } + if !reflect.DeepEqual(test.want1, res.Array()) { + t.Errorf("expected response %+v, got %+v", test.want1, res.Array()) + } + + // Check that the second connection now reads values from database 0 + if err = client2.WriteArray(test.getCommand); err != nil { + t.Error(err) + return + } + res, _, err = client2.ReadValue() + if err != nil { + t.Error(err) + return + } + if !reflect.DeepEqual(test.want0, res.Array()) { + t.Errorf("expected response %+v, got %+v", test.want0, res.Array()) + } + } + }) } diff --git a/internal/modules/connection/utils.go b/internal/modules/connection/utils.go new file mode 100644 index 00000000..d584993b --- /dev/null +++ b/internal/modules/connection/utils.go @@ -0,0 +1,66 @@ +package connection + +import ( + "fmt" + "github.com/echovault/echovault/internal" + "github.com/echovault/echovault/internal/constants" + "strings" +) + +type helloOptions struct { + protocol int + clientname string + auth struct { + authenticate bool + username string + password string + } +} + +func getHelloOptions(cmd []string, options helloOptions) (helloOptions, error) { + if len(cmd) == 0 { + return options, nil + } + switch strings.ToLower(cmd[0]) { + case "auth": + if len(cmd) < 3 { + return options, fmt.Errorf(constants.WrongArgsResponse) + } + options.auth.authenticate = true + options.auth.username = cmd[1] + options.auth.password = cmd[2] + return getHelloOptions(cmd[3:], options) + case "setname": + if len(cmd) < 2 { + return options, fmt.Errorf(constants.WrongArgsResponse) + } + options.clientname = cmd[1] + return getHelloOptions(cmd[2:], options) + default: + return options, fmt.Errorf("unknown keywork %s", strings.ToUpper(cmd[0])) + } +} + +func BuildHelloResponse(serverInfo internal.ServerInfo, connectionInfo internal.ConnectionInfo) []byte { + var res []byte + + if connectionInfo.Protocol == 2 { + // Construct RESP2 response. + res = []byte("*14\r\n") + } else { + // Construct RESP3 response. + res = []byte("%7\r\n") + } + + res = append(res, []byte(fmt.Sprintf("+server\r\n$%d\r\n%s\r\n", len(serverInfo.Server), serverInfo.Server))...) + res = append(res, []byte(fmt.Sprintf("+version\r\n$%d\r\n%s\r\n", len(serverInfo.Version), serverInfo.Version))...) + res = append(res, []byte(fmt.Sprintf("+proto\r\n:%d\r\n", connectionInfo.Protocol))...) + res = append(res, []byte(fmt.Sprintf("+id\r\n:%d\r\n", connectionInfo.Id))...) + res = append(res, []byte(fmt.Sprintf("+mode\r\n$%d\r\n%s\r\n", len(serverInfo.Mode), serverInfo.Mode))...) + res = append(res, []byte(fmt.Sprintf("+role\r\n$%d\r\n%s\r\n", len(serverInfo.Role), serverInfo.Role))...) + res = append(res, []byte(fmt.Sprintf("+modules\r\n*%d\r\n", len(serverInfo.Modules)))...) + for _, module := range serverInfo.Modules { + res = append(res, []byte(fmt.Sprintf("$%d\r\n%s\r\n", len(module), module))...) + } + return res +} diff --git a/internal/modules/generic/commands.go b/internal/modules/generic/commands.go index b340577c..bd0c253b 100644 --- a/internal/modules/generic/commands.go +++ b/internal/modules/generic/commands.go @@ -38,7 +38,7 @@ func handleSet(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] value := params.Command[2] res := []byte(constants.OkResponse) clock := params.GetClock() @@ -113,7 +113,7 @@ func handleGet(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } key := keys.ReadKeys[0] - keyExists := params.KeysExist([]string{key})[key] + keyExists := params.KeysExist(params.Context, []string{key})[key] if !keyExists { return []byte("$-1\r\n"), nil @@ -158,11 +158,11 @@ func handleDel(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } count := 0 - for key, exists := range params.KeysExist(keys.WriteKeys) { + for key, exists := range params.KeysExist(params.Context, keys.WriteKeys) { if !exists { continue } - err = params.DeleteKey(key) + err = params.DeleteKey(params.Context, key) if err != nil { log.Printf("could not delete key %s due to error: %+v\n", key, err) continue @@ -179,13 +179,13 @@ func handlePersist(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] if !keyExists { return []byte(":0\r\n"), nil } - expireAt := params.GetExpiry(key) + expireAt := params.GetExpiry(params.Context, key) if expireAt == (time.Time{}) { return []byte(":0\r\n"), nil } @@ -202,13 +202,13 @@ func handleExpireTime(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte(":-2\r\n"), nil } - expireAt := params.GetExpiry(key) + expireAt := params.GetExpiry(params.Context, key) if expireAt == (time.Time{}) { return []byte(":-1\r\n"), nil @@ -229,7 +229,7 @@ func handleTTL(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] clock := params.GetClock() @@ -237,7 +237,7 @@ func handleTTL(params internal.HandlerFuncParams) ([]byte, error) { return []byte(":-2\r\n"), nil } - expireAt := params.GetExpiry(key) + expireAt := params.GetExpiry(params.Context, key) if expireAt == (time.Time{}) { return []byte(":-1\r\n"), nil @@ -262,7 +262,7 @@ func handleExpire(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] // Extract time n, err := strconv.ParseInt(params.Command[2], 10, 64) @@ -283,7 +283,7 @@ func handleExpire(params internal.HandlerFuncParams) ([]byte, error) { return []byte(":1\r\n"), nil } - currentExpireAt := params.GetExpiry(key) + currentExpireAt := params.GetExpiry(params.Context, key) switch strings.ToLower(params.Command[3]) { case "nx": @@ -326,7 +326,7 @@ func handleExpireAt(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] // Extract time n, err := strconv.ParseInt(params.Command[2], 10, 64) @@ -347,7 +347,7 @@ func handleExpireAt(params internal.HandlerFuncParams) ([]byte, error) { return []byte(":1\r\n"), nil } - currentExpireAt := params.GetExpiry(key) + currentExpireAt := params.GetExpiry(params.Context, key) switch strings.ToLower(params.Command[3]) { case "nx": @@ -603,13 +603,28 @@ func handleRename(params internal.HandlerFuncParams) ([]byte, error) { } // Delete the old key - if err := params.DeleteKey(oldKey); err != nil { + if err := params.DeleteKey(params.Context, oldKey); err != nil { return nil, err } return []byte("+OK\r\n"), nil } +func handleFlush(params internal.HandlerFuncParams) ([]byte, error) { + if len(params.Command) != 1 { + return nil, errors.New(constants.WrongArgsResponse) + } + + if strings.EqualFold(params.Command[0], "flushall") { + params.Flush(-1) + return []byte(constants.OkResponse), nil + } + + database := params.Context.Value("Database").(int) + params.Flush(database) + return []byte(constants.OkResponse), nil +} + func Commands() []internal.Command { return []internal.Command{ { @@ -836,5 +851,42 @@ Renames key to newkey. If newkey already exists, it is overwritten. If key does KeyExtractionFunc: renameKeyFunc, HandlerFunc: handleRename, }, + { + Command: "flushall", + Module: constants.GenericModule, + Categories: []string{ + constants.KeyspaceCategory, + constants.WriteCategory, + constants.SlowCategory, + constants.DangerousCategory, + }, + Description: `(FLUSHALL) Delete all the keys in all the existing databases. This command is always synchronous.`, + Sync: true, + KeyExtractionFunc: func(cmd []string) (internal.KeyExtractionFuncResult, error) { + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), ReadKeys: make([]string, 0), WriteKeys: make([]string, 0), + }, nil + }, + HandlerFunc: handleFlush, + }, + { + Command: "flushdb", + Module: constants.GenericModule, + Categories: []string{ + constants.KeyspaceCategory, + constants.WriteCategory, + constants.SlowCategory, + constants.DangerousCategory, + }, + Description: `(FLUSHDB) +Delete all the keys in the currently selected database. This command is always synchronous.`, + Sync: true, + KeyExtractionFunc: func(cmd []string) (internal.KeyExtractionFuncResult, error) { + return internal.KeyExtractionFuncResult{ + Channels: make([]string, 0), ReadKeys: make([]string, 0), WriteKeys: make([]string, 0), + }, nil + }, + HandlerFunc: handleFlush, + }, } } diff --git a/internal/modules/generic/commands_test.go b/internal/modules/generic/commands_test.go index 17190ae3..e28fb0c6 100644 --- a/internal/modules/generic/commands_test.go +++ b/internal/modules/generic/commands_test.go @@ -17,17 +17,16 @@ package generic_test import ( "errors" "fmt" - "strconv" - "strings" - "testing" - "time" - "github.com/echovault/echovault/echovault" "github.com/echovault/echovault/internal" "github.com/echovault/echovault/internal/clock" "github.com/echovault/echovault/internal/config" "github.com/echovault/echovault/internal/constants" "github.com/tidwall/resp" + "strconv" + "strings" + "testing" + "time" ) type KeyData struct { @@ -1898,6 +1897,7 @@ func Test_Generic(t *testing.T) { t.Run("Test_HandlerINCR", func(t *testing.T) { t.Parallel() + conn, err := internal.GetConnection("localhost", port) if err != nil { t.Error(err) @@ -2020,6 +2020,7 @@ func Test_Generic(t *testing.T) { t.Run("Test_HandlerDECR", func(t *testing.T) { t.Parallel() conn, err := internal.GetConnection("localhost", port) + if err != nil { t.Error(err) return @@ -2501,4 +2502,138 @@ func Test_Generic(t *testing.T) { }) } }) + + t.Run("Test_HandleFlush", func(t *testing.T) { + t.Parallel() + + port, err := internal.GetFreePort() + if err != nil { + t.Error(err) + return + } + mockServer, err := echovault.NewEchoVault( + echovault.WithConfig(config.Config{ + BindAddr: "localhost", + Port: uint16(port), + DataDir: "", + EvictionPolicy: constants.NoEviction, + }), + ) + if err != nil { + t.Error(err) + return + } + go func() { + mockServer.Start() + }() + t.Cleanup(func() { + mockServer.ShutDown() + }) + + noOfDBs := 4 + + // Set values for 3 different databases. + for i := 0; i < noOfDBs; i++ { + _ = mockServer.SelectDB(i) + for k := 1; k <= 3; k++ { + _, _, _ = mockServer.Set( + fmt.Sprintf("key%d", k), + fmt.Sprintf("value%d", k), + echovault.SetOptions{}, + ) + } + } + + // Connect to the server + conn, err := internal.GetConnection("localhost", port) + if err != nil { + t.Error(err) + return + } + client := resp.NewConn(conn) + + // Send FLUSHDB command. + // This should flush database 0 as it's the default database. + if err = client.WriteArray([]resp.Value{resp.StringValue("FLUSHDB")}); err != nil { + t.Error(err) + return + } + res, _, err := client.ReadValue() + if err != nil { + t.Error(err) + return + } + + if !strings.EqualFold(res.String(), "ok") { + t.Errorf("expected OK response, got \"%s\"", res.String()) + return + } + + // Check that database 0 is cleared. + _ = mockServer.SelectDB(0) + for i := 1; i <= 3; i++ { + key := fmt.Sprintf("key%d", i) + val, err := mockServer.Get(key) + if err != nil { + t.Error(err) + return + } + if val != "" { + t.Errorf("expected key %s to be empty, got \"%s\"", key, val) + return + } + } + + // Check that all the other databases still have their values. + for i := 1; i < noOfDBs; i++ { + _ = mockServer.SelectDB(i) + for k := 1; k < 3; k++ { + key := fmt.Sprintf("key%d", k) + value := fmt.Sprintf("value%d", k) + val, err := mockServer.Get(key) + if err != nil { + t.Error(err) + return + } + if val != value { + t.Errorf("expected value for key %s to be \"%s\", got \"%s\"", key, value, val) + return + } + } + } + + // Sent FLUSHALL command. + // This should flush all the databases. + if err = client.WriteArray([]resp.Value{resp.StringValue("FLUSHALL")}); err != nil { + t.Error(err) + return + } + res, _, err = client.ReadValue() + if err != nil { + t.Error(err) + return + } + + if !strings.EqualFold(res.String(), "ok") { + t.Errorf("expected OK response, got \"%s\"", res.String()) + return + } + + // Check that all the databases are cleared. + for i := 0; i < noOfDBs; i++ { + _ = mockServer.SelectDB(i) + for k := 1; k < 3; k++ { + key := fmt.Sprintf("key%d", k) + val, err := mockServer.Get(key) + if err != nil { + t.Error(err) + return + } + if val != "" { + t.Errorf("expected empty string at key %s, got \"%s\"", key, val) + return + } + } + } + }) } diff --git a/internal/modules/hash/commands.go b/internal/modules/hash/commands.go index bb93f7e9..e9773f7f 100644 --- a/internal/modules/hash/commands.go +++ b/internal/modules/hash/commands.go @@ -32,7 +32,7 @@ func handleHSET(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] entries := make(map[string]interface{}) if len(params.Command[2:])%2 != 0 { @@ -84,7 +84,7 @@ func handleHGET(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] fields := params.Command[2:] if !keyExists { @@ -131,7 +131,7 @@ func handleHSTRLEN(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] fields := params.Command[2:] if !keyExists { @@ -178,7 +178,7 @@ func handleHVALS(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte("*0\r\n"), nil @@ -215,7 +215,7 @@ func handleHRANDFIELD(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] count := 1 if len(params.Command) >= 3 { @@ -327,7 +327,7 @@ func handleHLEN(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte(":0\r\n"), nil @@ -348,7 +348,7 @@ func handleHKEYS(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte("*0\r\n"), nil @@ -374,7 +374,7 @@ func handleHINCRBY(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] field := params.Command[2] var intIncrement int @@ -458,7 +458,7 @@ func handleHGETALL(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte("*0\r\n"), nil @@ -494,7 +494,7 @@ func handleHEXISTS(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] field := params.Command[2] if !keyExists { @@ -520,7 +520,7 @@ func handleHDEL(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] fields := params.Command[2:] if !keyExists { diff --git a/internal/modules/list/commands.go b/internal/modules/list/commands.go index 74b353ef..0ff26b00 100644 --- a/internal/modules/list/commands.go +++ b/internal/modules/list/commands.go @@ -31,7 +31,7 @@ func handleLLen(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { // If key does not exist, return 0 @@ -52,7 +52,7 @@ func handleLIndex(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] index, ok := internal.AdaptType(params.Command[2]).(int) if !ok { @@ -82,7 +82,7 @@ func handleLRange(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] start, startOk := internal.AdaptType(params.Command[2]).(int) end, endOk := internal.AdaptType(params.Command[3]).(int) @@ -157,7 +157,7 @@ func handleLSet(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] index, ok := internal.AdaptType(params.Command[2]).(int) if !ok { @@ -192,7 +192,7 @@ func handleLTrim(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] start, startOk := internal.AdaptType(params.Command[2]).(int) end, endOk := internal.AdaptType(params.Command[3]).(int) @@ -237,7 +237,7 @@ func handleLRem(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] value := params.Command[3] count, ok := internal.AdaptType(params.Command[2]).(int) @@ -300,7 +300,7 @@ func handleLMove(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } - keysExist := params.KeysExist(keys.WriteKeys) + keysExist := params.KeysExist(params.Context, keys.WriteKeys) source, destination := keys.WriteKeys[0], keys.WriteKeys[1] whereFrom := strings.ToLower(params.Command[3]) whereTo := strings.ToLower(params.Command[4]) @@ -366,7 +366,7 @@ func handleLPush(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] if !keyExists { switch strings.ToLower(params.Command[0]) { @@ -399,7 +399,7 @@ func handleRPush(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] var newElems []interface{} @@ -437,7 +437,7 @@ func handlePop(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] if !keyExists { return nil, fmt.Errorf("%s command on non-list item", strings.ToUpper(params.Command[0])) diff --git a/internal/modules/set/commands.go b/internal/modules/set/commands.go index 225022d6..6b5b949f 100644 --- a/internal/modules/set/commands.go +++ b/internal/modules/set/commands.go @@ -30,7 +30,7 @@ func handleSADD(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] var set *Set @@ -59,7 +59,7 @@ func handleSCARD(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte(fmt.Sprintf(":0\r\n")), nil @@ -81,7 +81,7 @@ func handleSDIFF(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } - keyExists := params.KeysExist(keys.ReadKeys) + keyExists := params.KeysExist(params.Context, keys.ReadKeys) // Extract base set first if !keyExists[keys.ReadKeys[0]] { @@ -123,7 +123,7 @@ func handleSDIFFSTORE(params internal.HandlerFuncParams) ([]byte, error) { } destination := keys.WriteKeys[0] - keyExists := params.KeysExist(append(keys.WriteKeys, keys.ReadKeys...)) + keyExists := params.KeysExist(params.Context, append(keys.WriteKeys, keys.ReadKeys...)) // Extract base set first if !keyExists[keys.ReadKeys[0]] { @@ -162,7 +162,7 @@ func handleSINTER(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } - keyExists := params.KeysExist(keys.ReadKeys) + keyExists := params.KeysExist(params.Context, keys.ReadKeys) var sets []*Set @@ -202,7 +202,7 @@ func handleSINTERCARD(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } - keyExists := params.KeysExist(keys.ReadKeys) + keyExists := params.KeysExist(params.Context, keys.ReadKeys) // Extract the limit from the command var limit int @@ -254,7 +254,7 @@ func handleSINTERSTORE(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } - keyExists := params.KeysExist(keys.ReadKeys) + keyExists := params.KeysExist(params.Context, keys.ReadKeys) var sets []*Set @@ -287,7 +287,7 @@ func handleSISMEMBER(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte(":0\r\n"), nil @@ -312,7 +312,7 @@ func handleSMEMBERS(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte("*0\r\n"), nil @@ -343,7 +343,7 @@ func handleSMISMEMBER(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] members := params.Command[2:] if !keyExists { @@ -382,7 +382,7 @@ func handleSMOVE(params internal.HandlerFuncParams) ([]byte, error) { } source, destination := keys.WriteKeys[0], keys.WriteKeys[1] - keyExists := params.KeysExist(keys.WriteKeys) + keyExists := params.KeysExist(params.Context, keys.WriteKeys) member := params.Command[3] if !keyExists[source] { @@ -413,7 +413,7 @@ func handleSPOP(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] count := 1 if len(params.Command) == 3 { @@ -453,7 +453,7 @@ func handleSRANDMEMBER(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] count := 1 if len(params.Command) == 3 { @@ -493,7 +493,7 @@ func handleSREM(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] members := params.Command[2:] if !keyExists { diff --git a/internal/modules/sorted_set/commands.go b/internal/modules/sorted_set/commands.go index 0c6d60e2..aa275552 100644 --- a/internal/modules/sorted_set/commands.go +++ b/internal/modules/sorted_set/commands.go @@ -33,7 +33,7 @@ func handleZADD(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] var updatePolicy interface{} = nil var comparison interface{} = nil @@ -175,7 +175,7 @@ func handleZCARD(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte(":0\r\n"), nil @@ -196,7 +196,7 @@ func handleZCOUNT(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] minimum := Score(math.Inf(-1)) switch internal.AdaptType(params.Command[2]).(type) { @@ -260,7 +260,7 @@ func handleZLEXCOUNT(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] minimum := params.Command[2] maximum := params.Command[3] @@ -300,7 +300,7 @@ func handleZDIFF(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } - keyExists := params.KeysExist(keys.ReadKeys) + keyExists := params.KeysExist(params.Context, keys.ReadKeys) withscoresIndex := slices.IndexFunc(params.Command, func(s string) bool { return strings.EqualFold(s, "withscores") @@ -359,7 +359,7 @@ func handleZDIFFSTORE(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } - keyExists := params.KeysExist(keys.ReadKeys) + keyExists := params.KeysExist(params.Context, keys.ReadKeys) destination := keys.WriteKeys[0] // Extract base set @@ -400,7 +400,7 @@ func handleZINCRBY(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] member := Value(params.Command[3]) var increment Score @@ -465,7 +465,7 @@ func handleZINTER(params internal.HandlerFuncParams) ([]byte, error) { if err != nil { return nil, err } - keyExists := params.KeysExist(keys) + keyExists := params.KeysExist(params.Context, keys) var setParams []SortedSetParam @@ -510,7 +510,7 @@ func handleZINTERSTORE(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } - keyExists := params.KeysExist(k.ReadKeys) + keyExists := params.KeysExist(params.Context, k.ReadKeys) destination := k.WriteKeys[0] // Remove the destination keys from the command before parsing it @@ -556,7 +556,7 @@ func handleZMPOP(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } - keyExists := params.KeysExist(keys.WriteKeys) + keyExists := params.KeysExist(params.Context, keys.WriteKeys) count := 1 policy := "min" @@ -631,7 +631,7 @@ func handleZPOP(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] count := 1 policy := "min" @@ -681,7 +681,7 @@ func handleZMSCORE(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte("*0\r\n"), nil @@ -719,7 +719,7 @@ func handleZRANDMEMBER(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] count := 1 if len(params.Command) >= 3 { @@ -773,7 +773,7 @@ func handleZRANK(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] member := params.Command[2] withscores := false @@ -819,7 +819,7 @@ func handleZREM(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] if !keyExists { return []byte(":0\r\n"), nil @@ -847,7 +847,7 @@ func handleZSCORE(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte("$-1\r\n"), nil @@ -874,7 +874,7 @@ func handleZREMRANGEBYSCORE(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] deletedCount := 0 @@ -914,7 +914,7 @@ func handleZREMRANGEBYRANK(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] start, err := strconv.Atoi(params.Command[2]) if err != nil { @@ -975,7 +975,7 @@ func handleZREMRANGEBYLEX(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] minimum := params.Command[2] maximum := params.Command[3] @@ -1018,7 +1018,7 @@ func handleZRANGE(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] policy := "byscore" scoreStart := math.Inf(-1) // Lower bound if policy is "byscore" @@ -1156,7 +1156,7 @@ func handleZRANGESTORE(params internal.HandlerFuncParams) ([]byte, error) { destination := keys.WriteKeys[0] source := keys.ReadKeys[0] - sourceExists := params.KeysExist(keys.ReadKeys)[source] + sourceExists := params.KeysExist(params.Context, keys.ReadKeys)[source] policy := "byscore" scoreStart := math.Inf(-1) // Lower bound if policy is "byscore" scoreStop := math.Inf(1) // Upper bound if policy is "byfloat" @@ -1286,7 +1286,7 @@ func handleZUNION(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } - keyExists := params.KeysExist(keys) + keyExists := params.KeysExist(params.Context, keys) var setParams []SortedSetParam @@ -1338,7 +1338,7 @@ func handleZUNIONSTORE(params internal.HandlerFuncParams) ([]byte, error) { return nil, err } - keyExists := params.KeysExist(keys) + keyExists := params.KeysExist(params.Context, keys) var setParams []SortedSetParam diff --git a/internal/modules/string/commands.go b/internal/modules/string/commands.go index e933b61e..5537c609 100644 --- a/internal/modules/string/commands.go +++ b/internal/modules/string/commands.go @@ -28,7 +28,7 @@ func handleSetRange(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.WriteKeys[0] - keyExists := params.KeysExist(keys.WriteKeys)[key] + keyExists := params.KeysExist(params.Context, keys.WriteKeys)[key] offset, ok := internal.AdaptType(params.Command[2]).(int) if !ok { @@ -92,7 +92,7 @@ func handleStrLen(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] if !keyExists { return []byte(":0\r\n"), nil @@ -114,7 +114,7 @@ func handleSubStr(params internal.HandlerFuncParams) ([]byte, error) { } key := keys.ReadKeys[0] - keyExists := params.KeysExist(keys.ReadKeys)[key] + keyExists := params.KeysExist(params.Context, keys.ReadKeys)[key] start, startOk := internal.AdaptType(params.Command[2]).(int) end, endOk := internal.AdaptType(params.Command[3]).(int) diff --git a/internal/raft/fsm.go b/internal/raft/fsm.go index 8e9a0cc4..71cf1016 100644 --- a/internal/raft/fsm.go +++ b/internal/raft/fsm.go @@ -30,11 +30,11 @@ import ( type FSMOpts struct { Config config.Config - GetState func() map[string]internal.KeyData + GetState func() map[int]map[string]internal.KeyData GetCommand func(command string) (internal.Command, error) SetValues func(ctx context.Context, entries map[string]interface{}) error SetExpiry func(ctx context.Context, key string, expire time.Time, touch bool) - DeleteKey func(key string) error + DeleteKey func(ctx context.Context, key string) error StartSnapshot func() FinishSnapshot func() SetLatestSnapshotTime func(msec int64) @@ -68,6 +68,8 @@ func (fsm *FSM) Apply(log *raft.Log) interface{} { ctx := context.WithValue(context.Background(), internal.ContextServerID("ServerID"), request.ServerID) ctx = context.WithValue(ctx, internal.ContextConnID("ConnectionID"), request.ConnectionID) + ctx = context.WithValue(ctx, "Protocol", request.Protocol) + ctx = context.WithValue(ctx, "Database", request.Database) switch strings.ToLower(request.Type) { default: @@ -77,7 +79,7 @@ func (fsm *FSM) Apply(log *raft.Log) interface{} { } case "delete-key": - if err := fsm.options.DeleteKey(request.Key); err != nil { + if err := fsm.options.DeleteKey(ctx, request.Key); err != nil { return internal.ApplyResponse{ Error: err, Response: nil, @@ -150,7 +152,7 @@ func (fsm *FSM) Restore(snapshot io.ReadCloser) error { } data := internal.SnapshotObject{ - State: make(map[string]internal.KeyData), + State: make(map[int]map[string]internal.KeyData), LatestSnapshotMilliseconds: 0, } @@ -160,14 +162,17 @@ func (fsm *FSM) Restore(snapshot io.ReadCloser) error { } // Set state - ctx := context.Background() - for k, v := range internal.FilterExpiredKeys(time.Now(), data.State) { - if err = fsm.options.SetValues(ctx, map[string]interface{}{k: v.Value}); err != nil { - log.Fatal(err) + for database, data := range internal.FilterExpiredKeys(time.Now(), data.State) { + ctx := context.WithValue(context.Background(), "Database", database) + for key, keyData := range data { + if err = fsm.options.SetValues(ctx, map[string]interface{}{key: keyData.Value}); err != nil { + log.Fatal(err) + } + fsm.options.SetExpiry(ctx, key, keyData.ExpireAt, false) } - fsm.options.SetExpiry(ctx, k, v.ExpireAt, false) } - // Set latest snapshot milliseconds + + // Set latest snapshot milliseconds. fsm.options.SetLatestSnapshotTime(data.LatestSnapshotMilliseconds) return nil diff --git a/internal/raft/fsm_snapshot.go b/internal/raft/fsm_snapshot.go index d74e42c2..3ecef45e 100644 --- a/internal/raft/fsm_snapshot.go +++ b/internal/raft/fsm_snapshot.go @@ -26,7 +26,7 @@ import ( type SnapshotOpts struct { config config.Config - data map[string]internal.KeyData + data map[int]map[string]internal.KeyData startSnapshot func() finishSnapshot func() setLatestSnapshotTime func(msec int64) diff --git a/internal/raft/raft.go b/internal/raft/raft.go index dd8d81de..8ef573df 100644 --- a/internal/raft/raft.go +++ b/internal/raft/raft.go @@ -35,9 +35,9 @@ type Opts struct { Config config.Config SetValues func(ctx context.Context, entries map[string]interface{}) error SetExpiry func(ctx context.Context, key string, expire time.Time, touch bool) - GetState func() map[string]internal.KeyData + GetState func() map[int]map[string]internal.KeyData GetCommand func(command string) (internal.Command, error) - DeleteKey func(key string) error + DeleteKey func(ctx context.Context, key string) error StartSnapshot func() FinishSnapshot func() SetLatestSnapshotTime func(msec int64) diff --git a/internal/snapshot/snapshot.go b/internal/snapshot/snapshot.go index a87dda53..017e3e76 100644 --- a/internal/snapshot/snapshot.go +++ b/internal/snapshot/snapshot.go @@ -46,10 +46,10 @@ type Engine struct { snapshotThreshold uint64 startSnapshotFunc func() finishSnapshotFunc func() - getStateFunc func() map[string]internal.KeyData + getStateFunc func() map[int]map[string]internal.KeyData setLatestSnapshotTimeFunc func(msec int64) getLatestSnapshotTimeFunc func() int64 - setKeyDataFunc func(key string, data internal.KeyData) + setKeyDataFunc func(database int, key string, data internal.KeyData) } func WithClock(clock clock.Clock) func(engine *Engine) { @@ -88,7 +88,7 @@ func WithFinishSnapshotFunc(f func()) func(engine *Engine) { } } -func WithGetStateFunc(f func() map[string]internal.KeyData) func(engine *Engine) { +func WithGetStateFunc(f func() map[int]map[string]internal.KeyData) func(engine *Engine) { return func(engine *Engine) { engine.getStateFunc = f } @@ -106,7 +106,7 @@ func WithGetLatestSnapshotTimeFunc(f func() int64) func(engine *Engine) { } } -func WithSetKeyDataFunc(f func(key string, data internal.KeyData)) func(engine *Engine) { +func WithSetKeyDataFunc(f func(database int, key string, data internal.KeyData)) func(engine *Engine) { return func(engine *Engine) { engine.setKeyDataFunc = f } @@ -121,10 +121,10 @@ func NewSnapshotEngine(options ...func(engine *Engine)) *Engine { snapshotThreshold: 1000, startSnapshotFunc: func() {}, finishSnapshotFunc: func() {}, - getStateFunc: func() map[string]internal.KeyData { - return map[string]internal.KeyData{} + getStateFunc: func() map[int]map[string]internal.KeyData { + return make(map[int]map[string]internal.KeyData) }, - setKeyDataFunc: func(key string, data internal.KeyData) {}, + setKeyDataFunc: func(database int, key string, data internal.KeyData) {}, setLatestSnapshotTimeFunc: func(msec int64) {}, getLatestSnapshotTimeFunc: func() int64 { return 0 @@ -313,6 +313,11 @@ func (engine *Engine) Restore() error { if err != nil { return err } + defer func() { + if err := mf.Close(); err != nil { + log.Println(err) + } + }() manifest := new(Manifest) @@ -340,6 +345,11 @@ func (engine *Engine) Restore() error { if err != nil { return err } + defer func() { + if err := sf.Close(); err != nil { + log.Println(err) + } + }() sd, err := io.ReadAll(sf) if err != nil { @@ -347,15 +357,16 @@ func (engine *Engine) Restore() error { } snapshotObject := new(internal.SnapshotObject) - if err = json.Unmarshal(sd, snapshotObject); err != nil { return err } engine.setLatestSnapshotTimeFunc(snapshotObject.LatestSnapshotMilliseconds) - for key, data := range internal.FilterExpiredKeys(engine.clock.Now(), snapshotObject.State) { - engine.setKeyDataFunc(key, data) + for database, data := range internal.FilterExpiredKeys(engine.clock.Now(), snapshotObject.State) { + for key, keyData := range data { + engine.setKeyDataFunc(database, key, keyData) + } } log.Println("successfully restored latest snapshot") diff --git a/internal/snapshot/snapshot_test.go b/internal/snapshot/snapshot_test.go index 3686dacb..c0c5ca66 100644 --- a/internal/snapshot/snapshot_test.go +++ b/internal/snapshot/snapshot_test.go @@ -44,20 +44,33 @@ func Test_SnapshotEngine(t *testing.T) { snapshotInProgress.Store(false) } - state := map[string]internal.KeyData{ - "key1": {Value: "value1", ExpireAt: clock.NewClock().Now().Add(13 * time.Second)}, - "key2": {Value: "value2", ExpireAt: clock.NewClock().Now().Add(43 * time.Minute)}, - "key3": {Value: "value3", ExpireAt: clock.NewClock().Now().Add(112 * time.Millisecond)}, - "key4": {Value: "value4", ExpireAt: clock.NewClock().Now().Add(23 * time.Second)}, - "key5": {Value: "value5", ExpireAt: clock.NewClock().Now().Add(121 * time.Millisecond)}, + state := map[int]map[string]internal.KeyData{ + 0: { + "key1": {Value: "value-01", ExpireAt: clock.NewClock().Now().Add(13 * time.Second)}, + "key2": {Value: "value-02", ExpireAt: clock.NewClock().Now().Add(43 * time.Minute)}, + "key3": {Value: "value-03", ExpireAt: clock.NewClock().Now().Add(112 * time.Millisecond)}, + "key4": {Value: "value-04", ExpireAt: clock.NewClock().Now().Add(23 * time.Second)}, + "key5": {Value: "value-45", ExpireAt: clock.NewClock().Now().Add(121 * time.Millisecond)}, + }, + 1: { + "key1": {Value: "value1", ExpireAt: clock.NewClock().Now().Add(13 * time.Second)}, + "key2": {Value: "value2", ExpireAt: clock.NewClock().Now().Add(43 * time.Minute)}, + "key3": {Value: "value3", ExpireAt: clock.NewClock().Now().Add(112 * time.Millisecond)}, + "key4": {Value: "value4", ExpireAt: clock.NewClock().Now().Add(23 * time.Second)}, + "key5": {Value: "value5", ExpireAt: clock.NewClock().Now().Add(121 * time.Millisecond)}, + }, } - getStateFunc := func() map[string]internal.KeyData { + + getStateFunc := func() map[int]map[string]internal.KeyData { return state } - restoredState := map[string]internal.KeyData{} - setKeyDataFunc := func(key string, data internal.KeyData) { - restoredState[key] = data + restoredState := make(map[int]map[string]internal.KeyData) + setKeyDataFunc := func(database int, key string, data internal.KeyData) { + if restoredState[database] == nil { + restoredState[database] = make(map[string]internal.KeyData) + } + restoredState[database][key] = data } var latestSnapshotTime int64 @@ -85,11 +98,13 @@ func Test_SnapshotEngine(t *testing.T) { t.Error(err) } - // Add more records to the state - for i := 0; i < 5; i++ { - state[fmt.Sprintf("key%d", i)] = internal.KeyData{ - Value: fmt.Sprintf("value%d", i), - ExpireAt: clock.NewClock().Now().Add(time.Duration(i) * time.Second), + // Add more records to each database in the state + for database, _ := range state { + for i := 0; i < 5; i++ { + state[database][fmt.Sprintf("key%d", i)] = internal.KeyData{ + Value: fmt.Sprintf("value%d", i), + ExpireAt: clock.NewClock().Now().Add(time.Duration(i) * time.Second), + } } } @@ -106,12 +121,14 @@ func Test_SnapshotEngine(t *testing.T) { t.Errorf("expected restored state to be length %d, got %d", len(state), len(restoredState)) } - for key, data := range restoredState { - if state[key].Value != data.Value { - t.Errorf("expected value %v for key %s, got %v", state[key].Value, key, data.Value) - } - if !state[key].ExpireAt.Equal(data.ExpireAt) { - t.Errorf("expected expiry time %v for key %s, got %v", state[key].ExpireAt, key, data.ExpireAt) + for database, data := range restoredState { + for key, keyData := range data { + if state[database][key].Value != keyData.Value { + t.Errorf("expected value %v for key %s, got %v", state[database][key].Value, key, keyData.Value) + } + if !state[database][key].ExpireAt.Equal(keyData.ExpireAt) { + t.Errorf("expected expiry time %v for key %s, got %v", state[database][key].ExpireAt, key, keyData.ExpireAt) + } } } diff --git a/internal/types.go b/internal/types.go index 08c09874..a34bcc80 100644 --- a/internal/types.go +++ b/internal/types.go @@ -33,8 +33,10 @@ type ApplyRequest struct { Type string `json:"Type"` // command | delete-key ServerID string `json:"ServerID"` ConnectionID string `json:"ConnectionID"` + Protocol int `json:"Protocol"` + Database int `json:"Database"` CMD []string `json:"CMD"` - Key string `json:"Key"` + Key string `json:"Key"` // Optional: Used with delete-key type to specify which key to delete. } type ApplyResponse struct { @@ -43,10 +45,28 @@ type ApplyResponse struct { } type SnapshotObject struct { - State map[string]KeyData + State map[int]map[string]KeyData LatestSnapshotMilliseconds int64 } +// ServerInfo holds information about the server/node. +type ServerInfo struct { + Server string + Version string + Id string + Mode string + Role string + Modules []string +} + +// ConnectionInfo holds information about the connection +type ConnectionInfo struct { + Id uint64 // Connection id. + Name string // Alias name for this connection. + Protocol int // The RESP protocol used by the client. Can be either 2 or 3. + Database int // Database index currently being used by the connection. +} + // KeyExtractionFuncResult is the return type of the KeyExtractionFunc for the command/subcommand. type KeyExtractionFuncResult struct { Channels []string // The pubsub channels the command accesses. For non pubsub commands, this should be an empty slice. @@ -72,11 +92,11 @@ type HandlerFuncParams struct { // Do not write the response directly to the connection, return it from the function. Connection *net.Conn // KeysExist returns a map that specifies which keys exist in the keyspace. - KeysExist func(keys []string) map[string]bool + KeysExist func(ctx context.Context, keys []string) map[string]bool // GetExpiry returns the expiry time of a key. - GetExpiry func(key string) time.Time + GetExpiry func(ctx context.Context, key string) time.Time // DeleteKey deletes the specified key. Returns an error if the deletion was unsuccessful. - DeleteKey func(key string) error + DeleteKey func(ctx context.Context, key string) error // GetValues retrieves the values from the specified keys. // Non-existent keys will be nil. GetValues func(ctx context.Context, keys []string) map[string]interface{} @@ -102,7 +122,7 @@ type HandlerFuncParams struct { TakeSnapshot func() error // RewriteAOF triggers a compaction of the commands logs by the EchoVault instance. RewriteAOF func() error - // GetLatestSnapshotTime returns the latest snapshot timestamp + // GetLatestSnapshotTime returns the latest snapshot timestamp. GetLatestSnapshotTime func() int64 // LoadModule loads the provided module with the given args passed to the module's // key extraction and handler functions. @@ -112,6 +132,19 @@ type HandlerFuncParams struct { UnloadModule func(module string) // ListModules returns the list of modules loaded in the EchoVault instance. ListModules func() []string + // SetConnectionInfo sets the connection's protocol and clientname. + SetConnectionInfo func(conn *net.Conn, clientname string, protocol int, database int) + // GetConnectionInfo returns information about the current connection. + GetConnectionInfo func(conn *net.Conn) ConnectionInfo + // GetServerInfo returns information about the server when requested by commands such as HELLO. + GetServerInfo func() ServerInfo + // SwapDBs swaps two databases, + // so that immediately all the clients connected to a given database will see the data of the other database, + // and the other way around. + SwapDBs func(database1, database2 int) + // FlushDB flushes the specified database keys. It accepts the integer index of the database to be flushed. + // If -1 is passed as the index, then all databases will be flushed. + Flush func(database int) } // HandlerFunc is a functions described by a command where the bulk of the command handling is done. diff --git a/internal/utils.go b/internal/utils.go index 9603f5db..7de884a6 100644 --- a/internal/utils.go +++ b/internal/utils.go @@ -211,21 +211,23 @@ func IsMaxMemoryExceeded(maxMemory uint64) bool { } // FilterExpiredKeys filters out keys that are already expired, so they are not persisted. -func FilterExpiredKeys(now time.Time, state map[string]KeyData) map[string]KeyData { - var keysToDelete []string - for k, v := range state { - // Skip keys with no expiry time. - if v.ExpireAt == (time.Time{}) { - continue +func FilterExpiredKeys(now time.Time, state map[int]map[string]KeyData) map[int]map[string]KeyData { + for database, data := range state { + var keysToDelete []string + for k, v := range data { + // Skip keys with no expiry time. + if v.ExpireAt == (time.Time{}) { + continue + } + // If the key is already expired, mark it for deletion. + if v.ExpireAt.Before(now) { + keysToDelete = append(keysToDelete, k) + } } - // If the key is already expired, mark it for deletion. - if v.ExpireAt.Before(now) { - keysToDelete = append(keysToDelete, k) + for _, key := range keysToDelete { + delete(state[database], key) } } - for _, key := range keysToDelete { - delete(state, key) - } return state } diff --git a/volumes/modules/module_get/module_get.go b/volumes/modules/module_get/module_get.go index 7c0d4b60..5969d42c 100644 --- a/volumes/modules/module_get/module_get.go +++ b/volumes/modules/module_get/module_get.go @@ -40,7 +40,7 @@ func KeyExtractionFunc(cmd []string, args ...string) ([]string, []string, error) func HandlerFunc( ctx context.Context, command []string, - keysExist func(keys []string) map[string]bool, + keysExist func(ctx context.Context, keys []string) map[string]bool, getValues func(ctx context.Context, keys []string) map[string]interface{}, setValues func(ctx context.Context, entries map[string]interface{}) error, args ...string) ([]byte, error) { @@ -50,7 +50,7 @@ func HandlerFunc( return nil, err } key := readKeys[0] - exists := keysExist(readKeys)[key] + exists := keysExist(ctx, readKeys)[key] if !exists { return []byte(":0\r\n"), nil diff --git a/volumes/modules/module_get/module_get.so b/volumes/modules/module_get/module_get.so deleted file mode 100644 index 368288d3..00000000 Binary files a/volumes/modules/module_get/module_get.so and /dev/null differ diff --git a/volumes/modules/module_set/module_set.go b/volumes/modules/module_set/module_set.go index 1fd2333a..5531c5bc 100644 --- a/volumes/modules/module_set/module_set.go +++ b/volumes/modules/module_set/module_set.go @@ -40,7 +40,7 @@ func KeyExtractionFunc(cmd []string, args ...string) ([]string, []string, error) func HandlerFunc( ctx context.Context, command []string, - keysExist func(keys []string) map[string]bool, + keysExist func(ctx context.Context, keys []string) map[string]bool, getValues func(ctx context.Context, keys []string) map[string]interface{}, setValues func(ctx context.Context, entries map[string]interface{}) error, args ...string) ([]byte, error) { diff --git a/volumes/modules/module_set/module_set.so b/volumes/modules/module_set/module_set.so deleted file mode 100644 index ccba91bd..00000000 Binary files a/volumes/modules/module_set/module_set.so and /dev/null differ