==> Building on centiskorch ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list ./ .SRCINFO 1,836 100% 0.00kB/s 0:00:00 1,836 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=6/8) .nvchecker.toml 183 100% 178.71kB/s 0:00:00 183 100% 178.71kB/s 0:00:00 (xfr#2, to-chk=5/8) PKGBUILD 2,100 38% 2.00MB/s 0:00:00 5,466 100% 5.21MB/s 0:00:00 (xfr#3, to-chk=4/8) curl-8.15.0-1.log 457 100% 446.29kB/s 0:00:00 457 100% 446.29kB/s 0:00:00 (xfr#4, to-chk=3/8) keys/ keys/pgp/ keys/pgp/27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2.asc 700 41% 683.59kB/s 0:00:00 1,680 100% 1.60MB/s 0:00:00 (xfr#5, to-chk=0/8) sent 2,218 bytes received 216 bytes 4,868.00 bytes/sec total size is 9,363 speedup is 3.85 ==> Ensuring required PGP keys are present...  -> Checking for 27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2... ==> Patching arch to riscv64... ==> Running pkgctl build --arch riscv64 --repo extra on remote host... ==> WARNING: unsupported architecture: riscv64 ==> Building curl  -> repo: extra  -> arch: riscv64  -> worker: felix-0 ==> Building curl for [extra] (riscv64) ]2;🔵 Container arch-nspawn-397924 on centiskorch.felixc.at\[?25l:: Synchronizing package databases... core downloading... extra downloading... :: Starting full system upgrade... there is nothing to do [?25h==> Building in chroot for [extra] (riscv64)... ==> Locking clean chroot [/var/lib/archbuild/extra-riscv64/root]...done ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [felix-0]...done ==> Making package: curl 8.15.0-1 (Fri Jul 18 05:23:15 2025) ==> Retrieving sources...  -> Updating curl git repo... From https://github.com/curl/curl - [deleted] (none) -> bagder/cookies-capped-expire - [deleted] (none) -> bagder/dump-header-stderr - [deleted] (none) -> bagder/exit-on-non-DISABLED - [deleted] (none) -> bagder/ftp-tests-quit - [deleted] (none) -> bagder/help-option - [deleted] (none) -> bagder/helpscan-longer-lines - [deleted] (none) -> bagder/maxline - [deleted] (none) -> dfandrich/parallelci - [deleted] (none) -> refs/pull/12220/merge - [deleted] (none) -> refs/pull/12406/merge - [deleted] (none) -> refs/pull/12980/merge - [deleted] (none) -> refs/pull/13098/merge - [deleted] (none) -> refs/pull/13522/merge - [deleted] (none) -> refs/pull/13543/merge - [deleted] (none) -> refs/pull/13589/merge - [deleted] (none) -> refs/pull/13977/merge - [deleted] (none) -> refs/pull/14135/merge - [deleted] (none) -> refs/pull/14189/merge - [deleted] (none) -> refs/pull/14202/merge - [deleted] (none) -> refs/pull/14214/merge - [deleted] (none) -> refs/pull/14294/merge - [deleted] (none) -> refs/pull/14311/merge - [deleted] (none) -> refs/pull/14313/merge - [deleted] (none) -> refs/pull/14319/merge - [deleted] (none) -> refs/pull/14332/merge - [deleted] (none) -> refs/pull/14383/merge - [deleted] (none) -> refs/pull/14388/merge - [deleted] (none) -> refs/pull/14397/merge - [deleted] (none) -> refs/pull/14400/merge - [deleted] (none) -> refs/pull/14404/merge - [deleted] (none) -> refs/pull/14406/merge - [deleted] (none) -> refs/pull/14407/merge - [deleted] (none) -> refs/pull/14408/merge - [deleted] (none) -> refs/pull/14411/merge - [deleted] (none) -> refs/pull/14413/merge - [deleted] (none) -> refs/pull/14416/merge - [deleted] (none) -> refs/pull/14417/merge - [deleted] (none) -> refs/pull/14419/merge - [deleted] (none) -> refs/pull/14420/merge - [deleted] (none) -> refs/pull/14421/merge - [deleted] (none) -> refs/pull/14422/merge - [deleted] (none) -> refs/pull/14423/merge - [deleted] (none) -> Curl_easy_1-1-7 - [deleted] (none) -> Curl_easy_1-1-8 remote: Enumerating objects: 84243, done. remote: Counting objects: 0% (1/30847) remote: Counting objects: 1% (309/30847) remote: Counting objects: 2% (617/30847) remote: Counting objects: 3% (926/30847) remote: Counting objects: 4% (1234/30847) remote: Counting objects: 5% (1543/30847) remote: Counting objects: 6% (1851/30847) remote: Counting objects: 7% (2160/30847) remote: Counting objects: 8% (2468/30847) remote: Counting objects: 9% (2777/30847) remote: Counting objects: 10% (3085/30847) remote: Counting objects: 11% (3394/30847) remote: Counting objects: 12% (3702/30847) remote: Counting objects: 13% (4011/30847) remote: Counting objects: 14% (4319/30847) remote: Counting objects: 15% (4628/30847) remote: Counting objects: 16% (4936/30847) remote: Counting objects: 17% (5244/30847) remote: Counting objects: 18% (5553/30847) remote: Counting objects: 19% (5861/30847) remote: Counting objects: 20% (6170/30847) remote: Counting objects: 21% (6478/30847) remote: Counting objects: 22% (6787/30847) remote: Counting objects: 23% (7095/30847) remote: Counting objects: 24% (7404/30847) remote: Counting objects: 25% (7712/30847) remote: Counting objects: 26% (8021/30847) remote: Counting objects: 27% (8329/30847) remote: Counting objects: 28% (8638/30847) remote: Counting objects: 29% (8946/30847) remote: Counting objects: 30% (9255/30847) remote: Counting objects: 31% (9563/30847) remote: Counting objects: 32% (9872/30847) remote: Counting objects: 33% (10180/30847) remote: Counting objects: 34% (10488/30847) remote: Counting objects: 35% (10797/30847) remote: Counting objects: 36% (11105/30847) remote: Counting objects: 37% (11414/30847) remote: Counting objects: 38% (11722/30847) remote: Counting objects: 39% (12031/30847) remote: Counting objects: 40% (12339/30847) remote: Counting objects: 41% (12648/30847) remote: Counting objects: 42% (12956/30847) remote: Counting objects: 43% (13265/30847) remote: Counting objects: 44% (13573/30847) remote: Counting objects: 45% (13882/30847) remote: Counting objects: 46% (14190/30847) remote: Counting objects: 47% (14499/30847) remote: Counting objects: 48% (14807/30847) remote: Counting objects: 49% (15116/30847) remote: Counting objects: 50% (15424/30847) remote: Counting objects: 51% (15732/30847) remote: Counting objects: 52% (16041/30847) remote: Counting objects: 53% (16349/30847) remote: Counting objects: 54% (16658/30847) remote: Counting objects: 55% (16966/30847) remote: Counting objects: 56% (17275/30847) remote: Counting objects: 57% (17583/30847) remote: Counting objects: 58% (17892/30847) remote: Counting objects: 59% (18200/30847) remote: Counting objects: 60% (18509/30847) remote: Counting objects: 61% (18817/30847) remote: Counting objects: 62% (19126/30847) remote: Counting objects: 63% (19434/30847) remote: Counting objects: 64% (19743/30847) remote: Counting objects: 65% (20051/30847) remote: Counting objects: 66% (20360/30847) remote: Counting objects: 67% (20668/30847) remote: Counting objects: 68% (20976/30847) remote: Counting objects: 69% (21285/30847) remote: Counting objects: 70% (21593/30847) remote: Counting objects: 71% (21902/30847) remote: Counting objects: 72% (22210/30847) remote: Counting objects: 73% (22519/30847) remote: Counting objects: 74% (22827/30847) remote: Counting objects: 75% (23136/30847) remote: Counting objects: 76% (23444/30847) remote: Counting objects: 77% (23753/30847) remote: Counting objects: 78% (24061/30847) remote: Counting objects: 79% (24370/30847) remote: Counting objects: 80% (24678/30847) remote: Counting objects: 81% (24987/30847) remote: Counting objects: 82% (25295/30847) remote: Counting objects: 83% (25604/30847) remote: Counting objects: 84% (25912/30847) remote: Counting objects: 85% (26220/30847) remote: Counting objects: 86% (26529/30847) remote: Counting objects: 87% (26837/30847) remote: Counting objects: 88% (27146/30847) remote: Counting objects: 89% (27454/30847) remote: Counting objects: 90% (27763/30847) remote: Counting objects: 91% (28071/30847) remote: Counting objects: 92% (28380/30847) remote: Counting objects: 93% (28688/30847) remote: Counting objects: 94% (28997/30847) remote: Counting objects: 95% (29305/30847) remote: Counting objects: 96% (29614/30847) remote: Counting objects: 97% (29922/30847) remote: Counting objects: 98% (30231/30847) remote: Counting objects: 99% (30539/30847) remote: Counting objects: 100% (30847/30847) remote: Counting objects: 100% (30847/30847), done. remote: Compressing objects: 0% (1/582) remote: Compressing objects: 1% (6/582) remote: Compressing objects: 2% (12/582) remote: Compressing objects: 3% (18/582) remote: Compressing objects: 4% (24/582) remote: Compressing objects: 5% (30/582) remote: Compressing objects: 6% (35/582) remote: Compressing objects: 7% (41/582) remote: Compressing objects: 8% (47/582) remote: Compressing objects: 9% (53/582) remote: Compressing objects: 10% (59/582) remote: Compressing objects: 11% (65/582) remote: Compressing objects: 12% (70/582) remote: Compressing objects: 13% (76/582) remote: Compressing objects: 14% (82/582) remote: Compressing objects: 15% (88/582) remote: Compressing objects: 16% (94/582) remote: Compressing objects: 17% (99/582) remote: Compressing objects: 18% (105/582) remote: Compressing objects: 19% (111/582) remote: Compressing objects: 20% (117/582) remote: Compressing objects: 21% (123/582) remote: Compressing objects: 22% (129/582) remote: Compressing objects: 23% (134/582) remote: Compressing objects: 24% (140/582) remote: Compressing objects: 25% (146/582) remote: Compressing objects: 26% (152/582) remote: Compressing objects: 27% (158/582) remote: Compressing objects: 28% (163/582) remote: Compressing objects: 29% (169/582) remote: Compressing objects: 30% (175/582) remote: Compressing objects: 31% (181/582) remote: Compressing objects: 32% (187/582) remote: Compressing objects: 33% (193/582) remote: Compressing objects: 34% (198/582) remote: Compressing objects: 35% (204/582) remote: Compressing objects: 36% (210/582) remote: Compressing objects: 37% (216/582) remote: Compressing objects: 38% (222/582) remote: Compressing objects: 39% (227/582) remote: Compressing objects: 40% (233/582) remote: Compressing objects: 41% (239/582) remote: Compressing objects: 42% (245/582) remote: Compressing objects: 43% (251/582) remote: Compressing objects: 44% (257/582) remote: Compressing objects: 45% (262/582) remote: Compressing objects: 46% (268/582) remote: Compressing objects: 47% (274/582) remote: Compressing objects: 48% (280/582) remote: Compressing objects: 49% (286/582) remote: Compressing objects: 50% (291/582) remote: Compressing objects: 51% (297/582) remote: Compressing objects: 52% (303/582) remote: Compressing objects: 53% (309/582) remote: Compressing objects: 54% (315/582) remote: Compressing objects: 55% (321/582) remote: Compressing objects: 56% (326/582) remote: Compressing objects: 57% (332/582) remote: Compressing objects: 58% (338/582) remote: Compressing objects: 59% (344/582) remote: Compressing objects: 60% (350/582) remote: Compressing objects: 61% (356/582) remote: Compressing objects: 62% (361/582) remote: Compressing objects: 63% (367/582) remote: Compressing objects: 64% (373/582) remote: Compressing objects: 65% (379/582) remote: Compressing objects: 66% (385/582) remote: Compressing objects: 67% (390/582) remote: Compressing objects: 68% (396/582) remote: Compressing objects: 69% (402/582) remote: Compressing objects: 70% (408/582) remote: Compressing objects: 71% (414/582) remote: Compressing objects: 72% (420/582) remote: Compressing objects: 73% (425/582) remote: Compressing objects: 74% (431/582) remote: Compressing objects: 75% (437/582) remote: Compressing objects: 76% (443/582) remote: Compressing objects: 77% (449/582) remote: Compressing objects: 78% (454/582) remote: Compressing objects: 79% (460/582) remote: Compressing objects: 80% (466/582) remote: Compressing objects: 81% (472/582) remote: Compressing objects: 82% (478/582) remote: Compressing objects: 83% (484/582) remote: Compressing objects: 84% (489/582) remote: Compressing objects: 85% (495/582) remote: Compressing objects: 86% (501/582) remote: Compressing objects: 87% (507/582) remote: Compressing objects: 88% (513/582) remote: Compressing objects: 89% (518/582) remote: Compressing objects: 90% (524/582) remote: Compressing objects: 91% (530/582) remote: Compressing objects: 92% (536/582) remote: Compressing objects: 93% (542/582) remote: Compressing objects: 94% (548/582) remote: Compressing objects: 95% (553/582) remote: Compressing objects: 96% (559/582) remote: Compressing objects: 97% (565/582) remote: Compressing objects: 98% (571/582) remote: Compressing objects: 99% (577/582) remote: Compressing objects: 100% (582/582) remote: Compressing objects: 100% (582/582), done. Receiving objects: 0% (1/84243) Receiving objects: 1% (843/84243), 268.00 KiB | 496.00 KiB/s Receiving objects: 1% (914/84243), 588.00 KiB | 547.00 KiB/s Receiving objects: 2% (1685/84243), 588.00 KiB | 547.00 KiB/s Receiving objects: 3% (2528/84243), 1.07 MiB | 688.00 KiB/s Receiving objects: 3% (2532/84243), 1.07 MiB | 688.00 KiB/s Receiving objects: 4% (3370/84243), 2.39 MiB | 931.00 KiB/s Receiving objects: 4% (3555/84243), 2.39 MiB | 931.00 KiB/s Receiving objects: 5% (4213/84243), 3.20 MiB | 1.02 MiB/s Receiving objects: 6% (5055/84243), 3.20 MiB | 1.02 MiB/s Receiving objects: 7% (5898/84243), 3.20 MiB | 1.02 MiB/s Receiving objects: 8% (6740/84243), 4.22 MiB | 1.15 MiB/s Receiving objects: 8% (7373/84243), 4.22 MiB | 1.15 MiB/s Receiving objects: 9% (7582/84243), 4.22 MiB | 1.15 MiB/s Receiving objects: 10% (8425/84243), 4.22 MiB | 1.15 MiB/s Receiving objects: 11% (9267/84243), 5.34 MiB | 1.28 MiB/s Receiving objects: 12% (10110/84243), 5.34 MiB | 1.28 MiB/s Receiving objects: 13% (10952/84243), 5.34 MiB | 1.28 MiB/s Receiving objects: 14% (11795/84243), 5.34 MiB | 1.28 MiB/s Receiving objects: 15% (12637/84243), 5.34 MiB | 1.28 MiB/s Receiving objects: 16% (13479/84243), 5.34 MiB | 1.28 MiB/s Receiving objects: 17% (14322/84243), 6.26 MiB | 1.33 MiB/s Receiving objects: 18% (15164/84243), 6.26 MiB | 1.33 MiB/s Receiving objects: 18% (15794/84243), 6.26 MiB | 1.33 MiB/s Receiving objects: 19% (16007/84243), 6.26 MiB | 1.33 MiB/s Receiving objects: 20% (16849/84243), 6.26 MiB | 1.33 MiB/s Receiving objects: 21% (17692/84243), 7.72 MiB | 1.59 MiB/s Receiving objects: 22% (18534/84243), 7.72 MiB | 1.59 MiB/s Receiving objects: 23% (19376/84243), 7.72 MiB | 1.59 MiB/s Receiving objects: 24% (20219/84243), 7.72 MiB | 1.59 MiB/s Receiving objects: 25% (21061/84243), 7.72 MiB | 1.59 MiB/s Receiving objects: 26% (21904/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 27% (22746/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 28% (23589/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 29% (24431/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 29% (24892/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 30% (25273/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 31% (26116/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 32% (26958/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 33% (27801/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 34% (28643/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 35% (29486/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 36% (30328/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 37% (31170/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 38% (32013/84243), 9.49 MiB | 1.92 MiB/s Receiving objects: 39% (32855/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 40% (33698/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 41% (34540/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 42% (35383/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 43% (36225/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 44% (37067/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 45% (37910/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 46% (38752/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 47% (39595/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 48% (40437/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 49% (41280/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 50% (42122/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 51% (42964/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 52% (43807/84243), 11.43 MiB | 2.24 MiB/s Receiving objects: 53% (44649/84243), 13.65 MiB | 2.58 MiB/s Receiving objects: 54% (45492/84243), 13.65 MiB | 2.58 MiB/s Receiving objects: 55% (46334/84243), 13.65 MiB | 2.58 MiB/s Receiving objects: 56% (47177/84243), 13.65 MiB | 2.58 MiB/s Receiving objects: 57% (48019/84243), 13.65 MiB | 2.58 MiB/s Receiving objects: 58% (48861/84243), 13.65 MiB | 2.58 MiB/s Receiving objects: 59% (49704/84243), 13.65 MiB | 2.58 MiB/s Receiving objects: 59% (50074/84243), 16.59 MiB | 3.08 MiB/s Receiving objects: 59% (50082/84243), 19.68 MiB | 3.58 MiB/s Receiving objects: 60% (50546/84243), 22.43 MiB | 3.98 MiB/s Receiving objects: 61% (51389/84243), 22.43 MiB | 3.98 MiB/s Receiving objects: 62% (52231/84243), 22.43 MiB | 3.98 MiB/s Receiving objects: 63% (53074/84243), 22.43 MiB | 3.98 MiB/s Receiving objects: 64% (53916/84243), 22.43 MiB | 3.98 MiB/s Receiving objects: 65% (54758/84243), 22.43 MiB | 3.98 MiB/s Receiving objects: 66% (55601/84243), 22.43 MiB | 3.98 MiB/s Receiving objects: 67% (56443/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 68% (57286/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 69% (58128/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 70% (58971/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 71% (59813/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 72% (60655/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 73% (61498/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 74% (62340/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 75% (63183/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 76% (64025/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 76% (64565/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 77% (64868/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 78% (65710/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 79% (66552/84243), 26.50 MiB | 4.63 MiB/s Receiving objects: 80% (67395/84243), 30.94 MiB | 5.43 MiB/s Receiving objects: 81% (68237/84243), 30.94 MiB | 5.43 MiB/s Receiving objects: 82% (69080/84243), 30.94 MiB | 5.43 MiB/s Receiving objects: 83% (69922/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 84% (70765/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 85% (71607/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 86% (72449/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 86% (73224/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 87% (73292/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 88% (74134/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 89% (74977/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 90% (75819/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 91% (76662/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 92% (77504/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 93% (78346/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 94% (79189/84243), 35.85 MiB | 6.20 MiB/s Receiving objects: 95% (80031/84243), 40.59 MiB | 6.87 MiB/s Receiving objects: 96% (80874/84243), 40.59 MiB | 6.87 MiB/s Receiving objects: 97% (81716/84243), 40.59 MiB | 6.87 MiB/s Receiving objects: 98% (82559/84243), 40.59 MiB | 6.87 MiB/s Receiving objects: 99% (83401/84243), 40.59 MiB | 6.87 MiB/s remote: Total 84243 (delta 30663), reused 30266 (delta 30265), pack-reused 53396 (from 4) Receiving objects: 100% (84243/84243), 40.59 MiB | 6.87 MiB/s Receiving objects: 100% (84243/84243), 42.78 MiB | 4.08 MiB/s, done. Resolving deltas: 0% (0/68293) Resolving deltas: 1% (683/68293) Resolving deltas: 2% (1367/68293) Resolving deltas: 3% (2050/68293) Resolving deltas: 4% (2733/68293) Resolving deltas: 5% (3415/68293) Resolving deltas: 6% (4100/68293) Resolving deltas: 7% (4783/68293) Resolving deltas: 8% (5469/68293) Resolving deltas: 9% (6150/68293) Resolving deltas: 10% (6830/68293) Resolving deltas: 11% (7513/68293) Resolving deltas: 12% (8196/68293) Resolving deltas: 13% (8879/68293) Resolving deltas: 14% (9564/68293) Resolving deltas: 15% (10246/68293) Resolving deltas: 16% (10929/68293) Resolving deltas: 17% (11610/68293) Resolving deltas: 18% (12297/68293) Resolving deltas: 19% (12977/68293) Resolving deltas: 20% (13659/68293) Resolving deltas: 21% (14342/68293) Resolving deltas: 22% (15026/68293) Resolving deltas: 23% (15709/68293) Resolving deltas: 24% (16391/68293) Resolving deltas: 25% (17074/68293) Resolving deltas: 26% (17757/68293) Resolving deltas: 27% (18441/68293) Resolving deltas: 28% (19124/68293) Resolving deltas: 29% (19805/68293) Resolving deltas: 30% (20489/68293) Resolving deltas: 31% (21173/68293) Resolving deltas: 32% (21856/68293) Resolving deltas: 33% (22537/68293) Resolving deltas: 34% (23222/68293) Resolving deltas: 35% (23903/68293) Resolving deltas: 36% (24586/68293) Resolving deltas: 37% (25269/68293) Resolving deltas: 38% (25952/68293) Resolving deltas: 39% (26640/68293) Resolving deltas: 40% (27319/68293) Resolving deltas: 41% (28001/68293) Resolving deltas: 42% (28684/68293) Resolving deltas: 43% (29366/68293) Resolving deltas: 44% (30049/68293) Resolving deltas: 45% (30732/68293) Resolving deltas: 46% (31415/68293) Resolving deltas: 47% (32098/68293) Resolving deltas: 48% (32782/68293) Resolving deltas: 49% (33464/68293) Resolving deltas: 50% (34148/68293) Resolving deltas: 51% (34830/68293) Resolving deltas: 52% (35514/68293) Resolving deltas: 53% (36196/68293) Resolving deltas: 53% (36828/68293) Resolving deltas: 54% (36879/68293) Resolving deltas: 55% (37562/68293) Resolving deltas: 56% (38246/68293) Resolving deltas: 57% (38928/68293) Resolving deltas: 58% (39610/68293) Resolving deltas: 59% (40293/68293) Resolving deltas: 60% (40976/68293) Resolving deltas: 61% (41659/68293) Resolving deltas: 62% (42342/68293) Resolving deltas: 63% (43025/68293) Resolving deltas: 64% (43708/68293) Resolving deltas: 65% (44391/68293) Resolving deltas: 66% (45074/68293) Resolving deltas: 67% (45757/68293) Resolving deltas: 68% (46440/68293) Resolving deltas: 68% (46838/68293) Resolving deltas: 69% (47123/68293) Resolving deltas: 70% (47806/68293) Resolving deltas: 71% (48489/68293) Resolving deltas: 72% (49171/68293) Resolving deltas: 73% (49854/68293) Resolving deltas: 73% (50306/68293) Resolving deltas: 74% (50537/68293) Resolving deltas: 75% (51220/68293) Resolving deltas: 75% (51834/68293) Resolving deltas: 76% (51903/68293) Resolving deltas: 77% (52586/68293) Resolving deltas: 77% (53070/68293) Resolving deltas: 78% (53269/68293) Resolving deltas: 79% (53952/68293) Resolving deltas: 80% (54635/68293) Resolving deltas: 81% (55318/68293) Resolving deltas: 82% (56001/68293) Resolving deltas: 83% (56684/68293) Resolving deltas: 84% (57367/68293) Resolving deltas: 84% (57622/68293) Resolving deltas: 85% (58050/68293) Resolving deltas: 86% (58732/68293) Resolving deltas: 87% (59415/68293) Resolving deltas: 88% (60098/68293) Resolving deltas: 88% (60189/68293) Resolving deltas: 89% (60781/68293) Resolving deltas: 90% (61464/68293) Resolving deltas: 90% (61745/68293) Resolving deltas: 91% (62147/68293) Resolving deltas: 92% (62830/68293) Resolving deltas: 93% (63513/68293) Resolving deltas: 93% (63857/68293) Resolving deltas: 94% (64196/68293) Resolving deltas: 95% (64879/68293) Resolving deltas: 96% (65562/68293) Resolving deltas: 96% (66043/68293) Resolving deltas: 97% (66245/68293) Resolving deltas: 98% (66928/68293) Resolving deltas: 99% (67611/68293) Resolving deltas: 100% (68293/68293) Resolving deltas: 100% (68293/68293), completed with 3166 local objects. * [new branch] bagder/NETRC -> bagder/NETRC * [new branch] bagder/curl-options-equals -> bagder/curl-options-equals * [new branch] bagder/meta-assert -> bagder/meta-assert * [new branch] bagder/nmake-strip -> bagder/nmake-strip * [new branch] bagder/protocol-done-needs-do -> bagder/protocol-done-needs-do * [new branch] bagder/reject-bad-socks5-auth -> bagder/reject-bad-socks5-auth * [new branch] bagder/request-mode -> bagder/request-mode * [new branch] bagder/rm-msh3 -> bagder/rm-msh3 * [new branch] bagder/rm-non-tls13 -> bagder/rm-non-tls13 * [new branch] bagder/runtests-no-verify -> bagder/runtests-no-verify * [new branch] bagder/setopt-bool -> bagder/setopt-bool * [new branch] bagder/spell-check-symbols -> bagder/spell-check-symbols * [new branch] bagder/src-curlx -> bagder/src-curlx * [new branch] bagder/strtoofft-checks -> bagder/strtoofft-checks * [new branch] bagder/test650-deprecate -> bagder/test650-deprecate * [new branch] bagder/tests-require-ipfs-for-ipfs -> bagder/tests-require-ipfs-for-ipfs * [new branch] bagder/tls-1.2-default -> bagder/tls-1.2-default * [new branch] bagder/transfer-enc -> bagder/transfer-enc * [new branch] bagder/typecheck -> bagder/typecheck * [new branch] bagder/url-path-lf -> bagder/url-path-lf * [new branch] bagder/vuln-7 -> bagder/vuln-7 * [new branch] cm2/withldap -> cm2/withldap + 4366360071...6268caee83 dfandrich/ci -> dfandrich/ci (forced update) dcc5209520..e9a4f5cad0 master -> master * [new branch] minor-pytest-tweaks -> minor-pytest-tweaks + 052f94330f...1986415492 refs/pull/12220/head -> refs/pull/12220/head (forced update) e8d0cd0e95..54ce9ee4eb refs/pull/12980/head -> refs/pull/12980/head + 3c771e4447...be3512c3c4 refs/pull/13098/head -> refs/pull/13098/head (forced update) + 9f664e1462...e360095a9a refs/pull/13465/merge -> refs/pull/13465/merge (forced update) + 66d5128ca1...18650ea011 refs/pull/13522/head -> refs/pull/13522/head (forced update) + 74636351ca...58f4070a82 refs/pull/13947/head -> refs/pull/13947/head (forced update) + 0e7b5ae169...6f97fc9347 refs/pull/14135/head -> refs/pull/14135/head (forced update) + 73eb2ce96c...9c8830dacc refs/pull/14189/head -> refs/pull/14189/head (forced update) + 1b41364cf7...f8e04d11d5 refs/pull/14202/head -> refs/pull/14202/head (forced update) + 57788777b1...04eef2c836 refs/pull/14311/head -> refs/pull/14311/head (forced update) + 1b0ee4451d...c6f8cf1c0e refs/pull/14313/head -> refs/pull/14313/head (forced update) 37eece5455..ea78a78fc3 refs/pull/14319/head -> refs/pull/14319/head + a0ae92a0ac...632b39bca7 refs/pull/14383/head -> refs/pull/14383/head (forced update) + 2f21a23102...1d4ca743cc refs/pull/14388/head -> refs/pull/14388/head (forced update) + 065202fafd...925c0f46b1 refs/pull/14407/head -> refs/pull/14407/head (forced update) + 05d7c67afa...8ebfcea464 refs/pull/14408/head -> refs/pull/14408/head (forced update) 71406c9997..205eb9b287 refs/pull/14419/head -> refs/pull/14419/head + c8e31ca3a4...249cbcd71f refs/pull/14423/head -> refs/pull/14423/head (forced update) * [new ref] refs/pull/14424/head -> refs/pull/14424/head * [new ref] refs/pull/14425/head -> refs/pull/14425/head * [new ref] refs/pull/14426/head -> refs/pull/14426/head * [new ref] refs/pull/14427/head -> refs/pull/14427/head * [new ref] refs/pull/14428/head -> refs/pull/14428/head * [new ref] refs/pull/14429/head -> refs/pull/14429/head * [new ref] refs/pull/14430/head -> refs/pull/14430/head * [new ref] refs/pull/14431/head -> refs/pull/14431/head * [new ref] refs/pull/14433/head -> refs/pull/14433/head * [new ref] refs/pull/14434/head -> refs/pull/14434/head * [new ref] refs/pull/14435/head -> refs/pull/14435/head * [new ref] refs/pull/14436/head -> refs/pull/14436/head * [new ref] refs/pull/14437/head -> refs/pull/14437/head * [new ref] refs/pull/14438/head -> refs/pull/14438/head * [new ref] refs/pull/14439/head -> refs/pull/14439/head * [new ref] refs/pull/14441/head -> refs/pull/14441/head * [new ref] refs/pull/14442/head -> refs/pull/14442/head * [new ref] refs/pull/14443/head -> refs/pull/14443/head * [new ref] refs/pull/14444/head -> refs/pull/14444/head * [new ref] refs/pull/14445/head -> refs/pull/14445/head * [new ref] refs/pull/14447/head -> refs/pull/14447/head * [new ref] refs/pull/14449/head -> refs/pull/14449/head * [new ref] refs/pull/14450/head -> refs/pull/14450/head * [new ref] refs/pull/14451/head -> refs/pull/14451/head * [new ref] refs/pull/14452/head -> refs/pull/14452/head * [new ref] refs/pull/14453/head -> refs/pull/14453/head * [new ref] refs/pull/14454/head -> refs/pull/14454/head * [new ref] refs/pull/14455/head -> refs/pull/14455/head * [new ref] refs/pull/14456/head -> refs/pull/14456/head * [new ref] refs/pull/14457/head -> refs/pull/14457/head * [new ref] refs/pull/14458/head -> refs/pull/14458/head * [new ref] refs/pull/14459/head -> refs/pull/14459/head * [new ref] refs/pull/14460/head -> refs/pull/14460/head * [new ref] refs/pull/14461/head -> refs/pull/14461/head * [new ref] refs/pull/14462/head -> refs/pull/14462/head * [new ref] refs/pull/14463/head -> refs/pull/14463/head * [new ref] refs/pull/14464/head -> refs/pull/14464/head * [new ref] refs/pull/14465/head -> refs/pull/14465/head * [new ref] refs/pull/14466/head -> refs/pull/14466/head * [new ref] refs/pull/14467/head -> refs/pull/14467/head * [new ref] refs/pull/14468/head -> refs/pull/14468/head * [new ref] refs/pull/14469/head -> refs/pull/14469/head * [new ref] refs/pull/14471/head -> refs/pull/14471/head * [new ref] refs/pull/14472/head -> refs/pull/14472/head * [new ref] refs/pull/14473/head -> refs/pull/14473/head * [new ref] refs/pull/14474/head -> refs/pull/14474/head * [new ref] refs/pull/14476/head -> refs/pull/14476/head * [new ref] refs/pull/14477/head -> refs/pull/14477/head * [new ref] refs/pull/14478/head -> refs/pull/14478/head * [new ref] refs/pull/14479/head -> refs/pull/14479/head * [new ref] refs/pull/14480/head -> refs/pull/14480/head * [new ref] refs/pull/14483/head -> refs/pull/14483/head * [new ref] refs/pull/14484/head -> refs/pull/14484/head * [new ref] refs/pull/14485/head -> refs/pull/14485/head * [new ref] refs/pull/14486/head -> refs/pull/14486/head * [new ref] refs/pull/14488/head -> refs/pull/14488/head * [new ref] refs/pull/14490/head -> refs/pull/14490/head * [new ref] refs/pull/14491/head -> refs/pull/14491/head * [new ref] refs/pull/14492/head -> refs/pull/14492/head * [new ref] refs/pull/14494/head -> refs/pull/14494/head * [new ref] refs/pull/14495/head -> refs/pull/14495/head * [new ref] refs/pull/14496/head -> refs/pull/14496/head * [new ref] refs/pull/14497/head -> refs/pull/14497/head * [new ref] refs/pull/14499/head -> refs/pull/14499/head * [new ref] refs/pull/14500/head -> refs/pull/14500/head * [new ref] refs/pull/14501/head -> refs/pull/14501/head * [new ref] refs/pull/14502/head -> refs/pull/14502/head * [new ref] refs/pull/14503/head -> refs/pull/14503/head * [new ref] refs/pull/14504/head -> refs/pull/14504/head * [new ref] refs/pull/14505/head -> refs/pull/14505/head * [new ref] refs/pull/14506/head -> refs/pull/14506/head * [new ref] refs/pull/14507/head -> refs/pull/14507/head * [new ref] refs/pull/14508/head -> refs/pull/14508/head * [new ref] refs/pull/14509/head -> refs/pull/14509/head * [new ref] refs/pull/14510/head -> refs/pull/14510/head * [new ref] refs/pull/14511/head -> refs/pull/14511/head * [new ref] refs/pull/14512/head -> refs/pull/14512/head * [new ref] refs/pull/14513/head -> refs/pull/14513/head * [new ref] refs/pull/14514/head -> refs/pull/14514/head * [new ref] refs/pull/14515/head -> refs/pull/14515/head * [new ref] refs/pull/14516/head -> refs/pull/14516/head * [new ref] refs/pull/14518/head -> refs/pull/14518/head * [new ref] refs/pull/14519/head -> refs/pull/14519/head * [new ref] refs/pull/14523/head -> refs/pull/14523/head * [new ref] refs/pull/14524/head -> refs/pull/14524/head * [new ref] refs/pull/14525/head -> refs/pull/14525/head * [new ref] refs/pull/14526/head -> refs/pull/14526/head * [new ref] refs/pull/14528/head -> refs/pull/14528/head * [new ref] refs/pull/14529/head -> refs/pull/14529/head * [new ref] refs/pull/14530/head -> refs/pull/14530/head * [new ref] refs/pull/14531/head -> refs/pull/14531/head * [new ref] refs/pull/14532/head -> refs/pull/14532/head * [new ref] refs/pull/14533/head -> refs/pull/14533/head * [new ref] refs/pull/14534/head -> refs/pull/14534/head * [new ref] refs/pull/14535/head -> refs/pull/14535/head * [new ref] refs/pull/14537/head -> refs/pull/14537/head * [new ref] refs/pull/14538/head -> refs/pull/14538/head * [new ref] refs/pull/14539/head -> refs/pull/14539/head * [new ref] refs/pull/14540/head -> refs/pull/14540/head * [new ref] refs/pull/14541/head -> refs/pull/14541/head * [new ref] refs/pull/14542/head -> refs/pull/14542/head * [new ref] refs/pull/14543/head -> refs/pull/14543/head * [new ref] refs/pull/14544/head -> refs/pull/14544/head * [new ref] refs/pull/14545/head -> refs/pull/14545/head * [new ref] refs/pull/14546/head -> refs/pull/14546/head * [new ref] refs/pull/14548/head -> refs/pull/14548/head * [new ref] refs/pull/14549/head -> refs/pull/14549/head * [new ref] refs/pull/14551/head -> refs/pull/14551/head * [new ref] refs/pull/14552/head -> refs/pull/14552/head * [new ref] refs/pull/14553/head -> refs/pull/14553/head * [new ref] refs/pull/14554/head -> refs/pull/14554/head * [new ref] refs/pull/14555/head -> refs/pull/14555/head * [new ref] refs/pull/14556/head -> refs/pull/14556/head * [new ref] refs/pull/14557/head -> refs/pull/14557/head * [new ref] refs/pull/14558/head -> refs/pull/14558/head * [new ref] refs/pull/14559/head -> refs/pull/14559/head * [new ref] refs/pull/14560/head -> refs/pull/14560/head * [new ref] refs/pull/14561/head -> refs/pull/14561/head * [new ref] refs/pull/14562/head -> refs/pull/14562/head * [new ref] refs/pull/14563/head -> refs/pull/14563/head * [new ref] refs/pull/14564/head -> refs/pull/14564/head * [new ref] refs/pull/14566/head -> refs/pull/14566/head * [new ref] refs/pull/14567/head -> refs/pull/14567/head * [new ref] refs/pull/14568/head -> refs/pull/14568/head * [new ref] refs/pull/14569/head -> refs/pull/14569/head * [new ref] refs/pull/14570/head -> refs/pull/14570/head * [new ref] refs/pull/14571/head -> refs/pull/14571/head * [new ref] refs/pull/14572/head -> refs/pull/14572/head * [new ref] refs/pull/14573/head -> refs/pull/14573/head * [new ref] refs/pull/14574/head -> refs/pull/14574/head * [new ref] refs/pull/14575/head -> refs/pull/14575/head * [new ref] refs/pull/14576/head -> refs/pull/14576/head * [new ref] refs/pull/14579/head -> refs/pull/14579/head * [new ref] refs/pull/14581/head -> refs/pull/14581/head * [new ref] refs/pull/14582/head -> refs/pull/14582/head * [new ref] refs/pull/14583/head -> refs/pull/14583/head * [new ref] refs/pull/14584/head -> refs/pull/14584/head * [new ref] refs/pull/14585/head -> refs/pull/14585/head * [new ref] refs/pull/14586/head -> refs/pull/14586/head * [new ref] refs/pull/14587/head -> refs/pull/14587/head * [new ref] refs/pull/14588/head -> refs/pull/14588/head * [new ref] refs/pull/14589/head -> refs/pull/14589/head * [new ref] refs/pull/14590/head -> refs/pull/14590/head * [new ref] refs/pull/14591/head -> refs/pull/14591/head * [new ref] refs/pull/14593/head -> refs/pull/14593/head * [new ref] refs/pull/14594/head -> refs/pull/14594/head * [new ref] refs/pull/14595/head -> refs/pull/14595/head * [new ref] refs/pull/14596/head -> refs/pull/14596/head * [new ref] refs/pull/14597/head -> refs/pull/14597/head * [new ref] refs/pull/14598/head -> refs/pull/14598/head * [new ref] refs/pull/14599/head -> refs/pull/14599/head * [new ref] refs/pull/14600/head -> refs/pull/14600/head * [new ref] refs/pull/14601/head -> refs/pull/14601/head * [new ref] refs/pull/14602/head -> refs/pull/14602/head * [new ref] refs/pull/14603/head -> refs/pull/14603/head * [new ref] refs/pull/14604/head -> refs/pull/14604/head * [new ref] refs/pull/14605/head -> refs/pull/14605/head * [new ref] refs/pull/14606/head -> refs/pull/14606/head * [new ref] refs/pull/14607/head -> refs/pull/14607/head * [new ref] refs/pull/14608/head -> refs/pull/14608/head * [new ref] refs/pull/14609/head -> refs/pull/14609/head * [new ref] refs/pull/14610/head -> refs/pull/14610/head * [new ref] refs/pull/14611/head -> refs/pull/14611/head * [new ref] refs/pull/14612/head -> refs/pull/14612/head * [new ref] refs/pull/14613/head -> refs/pull/14613/head * [new ref] refs/pull/14614/head -> refs/pull/14614/head * [new ref] refs/pull/14615/head -> refs/pull/14615/head * [new ref] refs/pull/14616/head -> refs/pull/14616/head * [new ref] refs/pull/14617/head -> refs/pull/14617/head * [new ref] refs/pull/14618/head -> refs/pull/14618/head * [new ref] refs/pull/14619/head -> refs/pull/14619/head * [new ref] refs/pull/14621/head -> refs/pull/14621/head * [new ref] refs/pull/14622/head -> refs/pull/14622/head * [new ref] refs/pull/14623/head -> refs/pull/14623/head * [new ref] refs/pull/14624/head -> refs/pull/14624/head * [new ref] refs/pull/14625/head -> refs/pull/14625/head * [new ref] refs/pull/14626/head -> refs/pull/14626/head * [new ref] refs/pull/14628/head -> refs/pull/14628/head * [new ref] refs/pull/14629/head -> refs/pull/14629/head * [new ref] refs/pull/14630/head -> refs/pull/14630/head * [new ref] refs/pull/14631/head -> refs/pull/14631/head * [new ref] refs/pull/14632/head -> refs/pull/14632/head * [new ref] refs/pull/14633/head -> refs/pull/14633/head * [new ref] refs/pull/14634/head -> refs/pull/14634/head * [new ref] refs/pull/14635/head -> refs/pull/14635/head * [new ref] refs/pull/14636/head -> refs/pull/14636/head * [new ref] refs/pull/14637/head -> refs/pull/14637/head * [new ref] refs/pull/14638/head -> refs/pull/14638/head * [new ref] refs/pull/14639/head -> refs/pull/14639/head * [new ref] refs/pull/14640/head -> refs/pull/14640/head * [new ref] refs/pull/14642/head -> refs/pull/14642/head * [new ref] refs/pull/14643/head -> refs/pull/14643/head * [new ref] refs/pull/14644/head -> refs/pull/14644/head * [new ref] refs/pull/14645/head -> refs/pull/14645/head * [new ref] refs/pull/14646/head -> refs/pull/14646/head * [new ref] refs/pull/14647/head -> refs/pull/14647/head * [new ref] refs/pull/14648/head -> refs/pull/14648/head * [new ref] refs/pull/14649/head -> refs/pull/14649/head * [new ref] refs/pull/14650/head -> refs/pull/14650/head * [new ref] refs/pull/14651/head -> refs/pull/14651/head * [new ref] refs/pull/14652/head -> refs/pull/14652/head * [new ref] refs/pull/14654/head -> refs/pull/14654/head * [new ref] refs/pull/14655/head -> refs/pull/14655/head * [new ref] refs/pull/14657/head -> refs/pull/14657/head * [new ref] refs/pull/14658/head -> refs/pull/14658/head * [new ref] refs/pull/14660/head -> refs/pull/14660/head * [new ref] refs/pull/14661/head -> refs/pull/14661/head * [new ref] refs/pull/14662/head -> refs/pull/14662/head * [new ref] refs/pull/14663/head -> refs/pull/14663/head * [new ref] refs/pull/14664/head -> refs/pull/14664/head * [new ref] refs/pull/14665/head -> refs/pull/14665/head * [new ref] refs/pull/14666/head -> refs/pull/14666/head * [new ref] refs/pull/14667/head -> refs/pull/14667/head * [new ref] refs/pull/14668/head -> refs/pull/14668/head * [new ref] refs/pull/14669/head -> refs/pull/14669/head * [new ref] refs/pull/14671/head -> refs/pull/14671/head * [new ref] refs/pull/14672/head -> refs/pull/14672/head * [new ref] refs/pull/14673/head -> refs/pull/14673/head * [new ref] refs/pull/14674/head -> refs/pull/14674/head * [new ref] refs/pull/14675/head -> refs/pull/14675/head * [new ref] refs/pull/14676/head -> refs/pull/14676/head * [new ref] refs/pull/14678/head -> refs/pull/14678/head * [new ref] refs/pull/14680/head -> refs/pull/14680/head * [new ref] refs/pull/14681/head -> refs/pull/14681/head * [new ref] refs/pull/14682/head -> refs/pull/14682/head * [new ref] refs/pull/14684/head -> refs/pull/14684/head * [new ref] refs/pull/14685/head -> refs/pull/14685/head * [new ref] refs/pull/14686/head -> refs/pull/14686/head * [new ref] refs/pull/14688/head -> refs/pull/14688/head * [new ref] refs/pull/14689/head -> refs/pull/14689/head * [new ref] refs/pull/14690/head -> refs/pull/14690/head * [new ref] refs/pull/14691/head -> refs/pull/14691/head * [new ref] refs/pull/14692/head -> refs/pull/14692/head * [new ref] refs/pull/14693/head -> refs/pull/14693/head * [new ref] refs/pull/14694/head -> refs/pull/14694/head * [new ref] refs/pull/14695/head -> refs/pull/14695/head * [new ref] refs/pull/14696/head -> refs/pull/14696/head * [new ref] refs/pull/14697/head -> refs/pull/14697/head * [new ref] refs/pull/14698/head -> refs/pull/14698/head * [new ref] refs/pull/14699/head -> refs/pull/14699/head * [new ref] refs/pull/14700/head -> refs/pull/14700/head * [new ref] refs/pull/14701/head -> refs/pull/14701/head * [new ref] refs/pull/14702/head -> refs/pull/14702/head * [new ref] refs/pull/14703/head -> refs/pull/14703/head * [new ref] refs/pull/14705/head -> refs/pull/14705/head * [new ref] refs/pull/14706/head -> refs/pull/14706/head * [new ref] refs/pull/14707/head -> refs/pull/14707/head * [new ref] refs/pull/14708/head -> refs/pull/14708/head * [new ref] refs/pull/14709/head -> refs/pull/14709/head * [new ref] refs/pull/14710/head -> refs/pull/14710/head * [new ref] refs/pull/14711/head -> refs/pull/14711/head * [new ref] refs/pull/14712/head -> refs/pull/14712/head * [new ref] refs/pull/14715/head -> refs/pull/14715/head * [new ref] refs/pull/14717/head -> refs/pull/14717/head * [new ref] refs/pull/14718/head -> refs/pull/14718/head * [new ref] refs/pull/14719/head -> refs/pull/14719/head * [new ref] refs/pull/14721/head -> refs/pull/14721/head * [new ref] refs/pull/14722/head -> refs/pull/14722/head * [new ref] refs/pull/14724/head -> refs/pull/14724/head * [new ref] refs/pull/14725/head -> refs/pull/14725/head * [new ref] refs/pull/14727/head -> refs/pull/14727/head * [new ref] refs/pull/14728/head -> refs/pull/14728/head * [new ref] refs/pull/14730/head -> refs/pull/14730/head * [new ref] refs/pull/14731/head -> refs/pull/14731/head * [new ref] refs/pull/14732/head -> refs/pull/14732/head * [new ref] refs/pull/14733/head -> refs/pull/14733/head * [new ref] refs/pull/14734/head -> refs/pull/14734/head * [new ref] refs/pull/14735/head -> refs/pull/14735/head * [new ref] refs/pull/14736/head -> refs/pull/14736/head * [new ref] refs/pull/14737/head -> refs/pull/14737/head * [new ref] refs/pull/14738/head -> refs/pull/14738/head * [new ref] refs/pull/14739/head -> refs/pull/14739/head * [new ref] refs/pull/14741/head -> refs/pull/14741/head * [new ref] refs/pull/14743/head -> refs/pull/14743/head * [new ref] refs/pull/14744/head -> refs/pull/14744/head * [new ref] refs/pull/14745/head -> refs/pull/14745/head * [new ref] refs/pull/14746/head -> refs/pull/14746/head * [new ref] refs/pull/14748/head -> refs/pull/14748/head * [new ref] refs/pull/14749/head -> refs/pull/14749/head * [new ref] refs/pull/14750/head -> refs/pull/14750/head * [new ref] refs/pull/14751/head -> refs/pull/14751/head * [new ref] refs/pull/14752/head -> refs/pull/14752/head * [new ref] refs/pull/14753/head -> refs/pull/14753/head * [new ref] refs/pull/14754/head -> refs/pull/14754/head * [new ref] refs/pull/14756/head -> refs/pull/14756/head * [new ref] refs/pull/14758/head -> refs/pull/14758/head * [new ref] refs/pull/14759/head -> refs/pull/14759/head * [new ref] refs/pull/14760/head -> refs/pull/14760/head * [new ref] refs/pull/14762/head -> refs/pull/14762/head * [new ref] refs/pull/14763/head -> refs/pull/14763/head * [new ref] refs/pull/14764/head -> refs/pull/14764/head * [new ref] refs/pull/14765/head -> refs/pull/14765/head * [new ref] refs/pull/14766/head -> refs/pull/14766/head * [new ref] refs/pull/14768/head -> refs/pull/14768/head * [new ref] refs/pull/14769/head -> refs/pull/14769/head * [new ref] refs/pull/14770/head -> refs/pull/14770/head * [new ref] refs/pull/14772/head -> refs/pull/14772/head * [new ref] refs/pull/14773/head -> refs/pull/14773/head * [new ref] refs/pull/14775/head -> refs/pull/14775/head * [new ref] refs/pull/14776/head -> refs/pull/14776/head * [new ref] refs/pull/14777/head -> refs/pull/14777/head * [new ref] refs/pull/14778/head -> refs/pull/14778/head * [new ref] refs/pull/14780/head -> refs/pull/14780/head * [new ref] refs/pull/14783/head -> refs/pull/14783/head * [new ref] refs/pull/14784/head -> refs/pull/14784/head * [new ref] refs/pull/14785/head -> refs/pull/14785/head * [new ref] refs/pull/14786/head -> refs/pull/14786/head * [new ref] refs/pull/14788/head -> refs/pull/14788/head * [new ref] refs/pull/14789/head -> refs/pull/14789/head * [new ref] refs/pull/14790/head -> refs/pull/14790/head * [new ref] refs/pull/14791/head -> refs/pull/14791/head * [new ref] refs/pull/14793/head -> refs/pull/14793/head * [new ref] refs/pull/14794/head -> refs/pull/14794/head * [new ref] refs/pull/14795/head -> refs/pull/14795/head * [new ref] refs/pull/14796/head -> refs/pull/14796/head * [new ref] refs/pull/14797/head -> refs/pull/14797/head * [new ref] refs/pull/14798/head -> refs/pull/14798/head * [new ref] refs/pull/14799/head -> refs/pull/14799/head * [new ref] refs/pull/14802/head -> refs/pull/14802/head * [new ref] refs/pull/14803/head -> refs/pull/14803/head * [new ref] refs/pull/14804/head -> refs/pull/14804/head * [new ref] refs/pull/14806/head -> refs/pull/14806/head * [new ref] refs/pull/14808/head -> refs/pull/14808/head * [new ref] refs/pull/14809/head -> refs/pull/14809/head * [new ref] refs/pull/14810/head -> refs/pull/14810/head * [new ref] refs/pull/14811/head -> refs/pull/14811/head * [new ref] refs/pull/14812/head -> refs/pull/14812/head * [new ref] refs/pull/14813/head -> refs/pull/14813/head * [new ref] refs/pull/14814/head -> refs/pull/14814/head * [new ref] refs/pull/14815/head -> refs/pull/14815/head * [new ref] refs/pull/14816/head -> refs/pull/14816/head * [new ref] refs/pull/14817/head -> refs/pull/14817/head * [new ref] refs/pull/14818/head -> refs/pull/14818/head * [new ref] refs/pull/14819/head -> refs/pull/14819/head * [new ref] refs/pull/14820/head -> refs/pull/14820/head * [new ref] refs/pull/14821/head -> refs/pull/14821/head * [new ref] refs/pull/14822/head -> refs/pull/14822/head * [new ref] refs/pull/14823/head -> refs/pull/14823/head * [new ref] refs/pull/14826/head -> refs/pull/14826/head * [new ref] refs/pull/14827/head -> refs/pull/14827/head * [new ref] refs/pull/14828/head -> refs/pull/14828/head * [new ref] refs/pull/14829/head -> refs/pull/14829/head * [new ref] refs/pull/14830/head -> refs/pull/14830/head * [new ref] refs/pull/14831/head -> refs/pull/14831/head * [new ref] refs/pull/14832/head -> refs/pull/14832/head * [new ref] refs/pull/14833/head -> refs/pull/14833/head * [new ref] refs/pull/14834/head -> refs/pull/14834/head * [new ref] refs/pull/14835/head -> refs/pull/14835/head * [new ref] refs/pull/14836/head -> refs/pull/14836/head * [new ref] refs/pull/14837/head -> refs/pull/14837/head * [new ref] refs/pull/14839/head -> refs/pull/14839/head * [new ref] refs/pull/14840/head -> refs/pull/14840/head * [new ref] refs/pull/14841/head -> refs/pull/14841/head * [new ref] refs/pull/14844/head -> refs/pull/14844/head * [new ref] refs/pull/14846/head -> refs/pull/14846/head * [new ref] refs/pull/14847/head -> refs/pull/14847/head * [new ref] refs/pull/14848/head -> refs/pull/14848/head * [new ref] refs/pull/14850/head -> refs/pull/14850/head * [new ref] refs/pull/14851/head -> refs/pull/14851/head * [new ref] refs/pull/14852/head -> refs/pull/14852/head * [new ref] refs/pull/14853/head -> refs/pull/14853/head * [new ref] refs/pull/14855/head -> refs/pull/14855/head * [new ref] refs/pull/14857/head -> refs/pull/14857/head * [new ref] refs/pull/14858/head -> refs/pull/14858/head * [new ref] refs/pull/14859/head -> refs/pull/14859/head * [new ref] refs/pull/14861/head -> refs/pull/14861/head * [new ref] refs/pull/14862/head -> refs/pull/14862/head * [new ref] refs/pull/14863/head -> refs/pull/14863/head * [new ref] refs/pull/14864/head -> refs/pull/14864/head * [new ref] refs/pull/14867/head -> refs/pull/14867/head * [new ref] refs/pull/14868/head -> refs/pull/14868/head * [new ref] refs/pull/14872/head -> refs/pull/14872/head * [new ref] refs/pull/14875/head -> refs/pull/14875/head * [new ref] refs/pull/14876/head -> refs/pull/14876/head * [new ref] refs/pull/14877/head -> refs/pull/14877/head * [new ref] refs/pull/14880/head -> refs/pull/14880/head * [new ref] refs/pull/14881/head -> refs/pull/14881/head * [new ref] refs/pull/14882/head -> refs/pull/14882/head * [new ref] refs/pull/14883/head -> refs/pull/14883/head * [new ref] refs/pull/14884/head -> refs/pull/14884/head * [new ref] refs/pull/14886/head -> refs/pull/14886/head * [new ref] refs/pull/14887/head -> refs/pull/14887/head * [new ref] refs/pull/14888/head -> refs/pull/14888/head * [new ref] refs/pull/14889/head -> refs/pull/14889/head * [new ref] refs/pull/14895/head -> refs/pull/14895/head * [new ref] refs/pull/14897/head -> refs/pull/14897/head * [new ref] refs/pull/14900/head -> refs/pull/14900/head * [new ref] refs/pull/14901/head -> refs/pull/14901/head * [new ref] refs/pull/14904/head -> refs/pull/14904/head * [new ref] refs/pull/14905/head -> refs/pull/14905/head * [new ref] refs/pull/14906/head -> refs/pull/14906/head * [new ref] refs/pull/14907/head -> refs/pull/14907/head * [new ref] refs/pull/14909/head -> refs/pull/14909/head * [new ref] refs/pull/14910/head -> refs/pull/14910/head * [new ref] refs/pull/14911/head -> refs/pull/14911/head * [new ref] refs/pull/14912/head -> refs/pull/14912/head * [new ref] refs/pull/14913/head -> refs/pull/14913/head * [new ref] refs/pull/14914/head -> refs/pull/14914/head * [new ref] refs/pull/14917/head -> refs/pull/14917/head * [new ref] refs/pull/14918/head -> refs/pull/14918/head * [new ref] refs/pull/14919/head -> refs/pull/14919/head * [new ref] refs/pull/14920/head -> refs/pull/14920/head * [new ref] refs/pull/14921/head -> refs/pull/14921/head * [new ref] refs/pull/14922/head -> refs/pull/14922/head * [new ref] refs/pull/14924/head -> refs/pull/14924/head * [new ref] refs/pull/14927/head -> refs/pull/14927/head * [new ref] refs/pull/14928/head -> refs/pull/14928/head * [new ref] refs/pull/14929/head -> refs/pull/14929/head * [new ref] refs/pull/14930/head -> refs/pull/14930/head * [new ref] refs/pull/14932/head -> refs/pull/14932/head * [new ref] refs/pull/14933/head -> refs/pull/14933/head * [new ref] refs/pull/14934/head -> refs/pull/14934/head * [new ref] refs/pull/14935/head -> refs/pull/14935/head * [new ref] refs/pull/14936/head -> refs/pull/14936/head * [new ref] refs/pull/14937/head -> refs/pull/14937/head * [new ref] refs/pull/14940/head -> refs/pull/14940/head * [new ref] refs/pull/14943/head -> refs/pull/14943/head * [new ref] refs/pull/14944/head -> refs/pull/14944/head * [new ref] refs/pull/14945/head -> refs/pull/14945/head * [new ref] refs/pull/14946/head -> refs/pull/14946/head * [new ref] refs/pull/14947/head -> refs/pull/14947/head * [new ref] refs/pull/14949/head -> refs/pull/14949/head * [new ref] refs/pull/14950/head -> refs/pull/14950/head * [new ref] refs/pull/14953/head -> refs/pull/14953/head * [new ref] refs/pull/14954/head -> refs/pull/14954/head * [new ref] refs/pull/14955/head -> refs/pull/14955/head * [new ref] refs/pull/14957/head -> refs/pull/14957/head * [new ref] refs/pull/14958/head -> refs/pull/14958/head * [new ref] refs/pull/14959/head -> refs/pull/14959/head * [new ref] refs/pull/14960/head -> refs/pull/14960/head * [new ref] refs/pull/14962/head -> refs/pull/14962/head * [new ref] refs/pull/14963/head -> refs/pull/14963/head * [new ref] refs/pull/14964/head -> refs/pull/14964/head * [new ref] refs/pull/14965/head -> refs/pull/14965/head * [new ref] refs/pull/14966/head -> refs/pull/14966/head * [new ref] refs/pull/14967/head -> refs/pull/14967/head * [new ref] refs/pull/14968/head -> refs/pull/14968/head * [new ref] refs/pull/14969/head -> refs/pull/14969/head * [new ref] refs/pull/14970/head -> refs/pull/14970/head * [new ref] refs/pull/14971/head -> refs/pull/14971/head * [new ref] refs/pull/14972/head -> refs/pull/14972/head * [new ref] refs/pull/14974/head -> refs/pull/14974/head * [new ref] refs/pull/14975/head -> refs/pull/14975/head * [new ref] refs/pull/14977/head -> refs/pull/14977/head * [new ref] refs/pull/14978/head -> refs/pull/14978/head * [new ref] refs/pull/14979/head -> refs/pull/14979/head * [new ref] refs/pull/14980/head -> refs/pull/14980/head * [new ref] refs/pull/14981/head -> refs/pull/14981/head * [new ref] refs/pull/14982/head -> refs/pull/14982/head * [new ref] refs/pull/14983/head -> refs/pull/14983/head * [new ref] refs/pull/14984/head -> refs/pull/14984/head * [new ref] refs/pull/14985/head -> refs/pull/14985/head * [new ref] refs/pull/14986/head -> refs/pull/14986/head * [new ref] refs/pull/14987/head -> refs/pull/14987/head * [new ref] refs/pull/14988/head -> refs/pull/14988/head * [new ref] refs/pull/14990/head -> refs/pull/14990/head * [new ref] refs/pull/14991/head -> refs/pull/14991/head * [new ref] refs/pull/14992/head -> refs/pull/14992/head * [new ref] refs/pull/14995/head -> refs/pull/14995/head * [new ref] refs/pull/14996/head -> refs/pull/14996/head * [new ref] refs/pull/14997/head -> refs/pull/14997/head * [new ref] refs/pull/14998/head -> refs/pull/14998/head * [new ref] refs/pull/14999/head -> refs/pull/14999/head * [new ref] refs/pull/15000/head -> refs/pull/15000/head * [new ref] refs/pull/15001/head -> refs/pull/15001/head * [new ref] refs/pull/15002/head -> refs/pull/15002/head * [new ref] refs/pull/15003/head -> refs/pull/15003/head * [new ref] refs/pull/15004/head -> refs/pull/15004/head * [new ref] refs/pull/15005/head -> refs/pull/15005/head * [new ref] refs/pull/15006/head -> refs/pull/15006/head * [new ref] refs/pull/15007/head -> refs/pull/15007/head * [new ref] refs/pull/15009/head -> refs/pull/15009/head * [new ref] refs/pull/15010/head -> refs/pull/15010/head * [new ref] refs/pull/15011/head -> refs/pull/15011/head * [new ref] refs/pull/15012/head -> refs/pull/15012/head * [new ref] refs/pull/15016/head -> refs/pull/15016/head * [new ref] refs/pull/15017/head -> refs/pull/15017/head * [new ref] refs/pull/15018/head -> refs/pull/15018/head * [new ref] refs/pull/15019/head -> refs/pull/15019/head * [new ref] refs/pull/15020/head -> refs/pull/15020/head * [new ref] refs/pull/15021/head -> refs/pull/15021/head * [new ref] refs/pull/15022/head -> refs/pull/15022/head * [new ref] refs/pull/15023/head -> refs/pull/15023/head * [new ref] refs/pull/15026/head -> refs/pull/15026/head * [new ref] refs/pull/15027/head -> refs/pull/15027/head * [new ref] refs/pull/15028/head -> refs/pull/15028/head * [new ref] refs/pull/15029/head -> refs/pull/15029/head * [new ref] refs/pull/15030/head -> refs/pull/15030/head * [new ref] refs/pull/15031/head -> refs/pull/15031/head * [new ref] refs/pull/15032/head -> refs/pull/15032/head * [new ref] refs/pull/15033/head -> refs/pull/15033/head * [new ref] refs/pull/15034/head -> refs/pull/15034/head * [new ref] refs/pull/15035/head -> refs/pull/15035/head * [new ref] refs/pull/15037/head -> refs/pull/15037/head * [new ref] refs/pull/15039/head -> refs/pull/15039/head * [new ref] refs/pull/15040/head -> refs/pull/15040/head * [new ref] refs/pull/15042/head -> refs/pull/15042/head * [new ref] refs/pull/15044/head -> refs/pull/15044/head * [new ref] refs/pull/15045/head -> refs/pull/15045/head * [new ref] refs/pull/15046/head -> refs/pull/15046/head * [new ref] refs/pull/15047/head -> refs/pull/15047/head * [new ref] refs/pull/15049/head -> refs/pull/15049/head * [new ref] refs/pull/15050/head -> refs/pull/15050/head * [new ref] refs/pull/15051/head -> refs/pull/15051/head * [new ref] refs/pull/15052/head -> refs/pull/15052/head * [new ref] refs/pull/15053/head -> refs/pull/15053/head * [new ref] refs/pull/15054/head -> refs/pull/15054/head * [new ref] refs/pull/15055/head -> refs/pull/15055/head * [new ref] refs/pull/15056/head -> refs/pull/15056/head * [new ref] refs/pull/15057/head -> refs/pull/15057/head * [new ref] refs/pull/15058/head -> refs/pull/15058/head * [new ref] refs/pull/15059/head -> refs/pull/15059/head * [new ref] refs/pull/15060/head -> refs/pull/15060/head * [new ref] refs/pull/15061/head -> refs/pull/15061/head * [new ref] refs/pull/15062/head -> refs/pull/15062/head * [new ref] refs/pull/15063/head -> refs/pull/15063/head * [new ref] refs/pull/15064/head -> refs/pull/15064/head * [new ref] refs/pull/15065/head -> refs/pull/15065/head * [new ref] refs/pull/15066/head -> refs/pull/15066/head * [new ref] refs/pull/15067/head -> refs/pull/15067/head * [new ref] refs/pull/15068/head -> refs/pull/15068/head * [new ref] refs/pull/15069/head -> refs/pull/15069/head * [new ref] refs/pull/15070/head -> refs/pull/15070/head * [new ref] refs/pull/15071/head -> refs/pull/15071/head * [new ref] refs/pull/15072/head -> refs/pull/15072/head * [new ref] refs/pull/15074/head -> refs/pull/15074/head * [new ref] refs/pull/15075/head -> refs/pull/15075/head * [new ref] refs/pull/15076/head -> refs/pull/15076/head * [new ref] refs/pull/15078/head -> refs/pull/15078/head * [new ref] refs/pull/15081/head -> refs/pull/15081/head * [new ref] refs/pull/15082/head -> refs/pull/15082/head * [new ref] refs/pull/15083/head -> refs/pull/15083/head * [new ref] refs/pull/15085/head -> refs/pull/15085/head * [new ref] refs/pull/15086/head -> refs/pull/15086/head * [new ref] refs/pull/15087/head -> refs/pull/15087/head * [new ref] refs/pull/15088/head -> refs/pull/15088/head * [new ref] refs/pull/15089/head -> refs/pull/15089/head * [new ref] refs/pull/15090/head -> refs/pull/15090/head * [new ref] refs/pull/15091/head -> refs/pull/15091/head * [new ref] refs/pull/15092/head -> refs/pull/15092/head * [new ref] refs/pull/15094/head -> refs/pull/15094/head * [new ref] refs/pull/15095/head -> refs/pull/15095/head * [new ref] refs/pull/15096/head -> refs/pull/15096/head * [new ref] refs/pull/15097/head -> refs/pull/15097/head * [new ref] refs/pull/15098/head -> refs/pull/15098/head * [new ref] refs/pull/15102/head -> refs/pull/15102/head * [new ref] refs/pull/15103/head -> refs/pull/15103/head * [new ref] refs/pull/15104/head -> refs/pull/15104/head * [new ref] refs/pull/15105/head -> refs/pull/15105/head * [new ref] refs/pull/15106/head -> refs/pull/15106/head * [new ref] refs/pull/15107/head -> refs/pull/15107/head * [new ref] refs/pull/15108/head -> refs/pull/15108/head * [new ref] refs/pull/15109/head -> refs/pull/15109/head * [new ref] refs/pull/15110/head -> refs/pull/15110/head * [new ref] refs/pull/15111/head -> refs/pull/15111/head * [new ref] refs/pull/15112/head -> refs/pull/15112/head * [new ref] refs/pull/15113/head -> refs/pull/15113/head * [new ref] refs/pull/15114/head -> refs/pull/15114/head * [new ref] refs/pull/15115/head -> refs/pull/15115/head * [new ref] refs/pull/15116/head -> refs/pull/15116/head * [new ref] refs/pull/15117/head -> refs/pull/15117/head * [new ref] refs/pull/15119/head -> refs/pull/15119/head * [new ref] refs/pull/15120/head -> refs/pull/15120/head * [new ref] refs/pull/15121/head -> refs/pull/15121/head * [new ref] refs/pull/15122/head -> refs/pull/15122/head * [new ref] refs/pull/15123/head -> refs/pull/15123/head * [new ref] refs/pull/15124/head -> refs/pull/15124/head * [new ref] refs/pull/15125/head -> refs/pull/15125/head * [new ref] refs/pull/15126/head -> refs/pull/15126/head * [new ref] refs/pull/15128/head -> refs/pull/15128/head * [new ref] refs/pull/15129/head -> refs/pull/15129/head * [new ref] refs/pull/15130/head -> refs/pull/15130/head * [new ref] refs/pull/15131/head -> refs/pull/15131/head * [new ref] refs/pull/15133/head -> refs/pull/15133/head * [new ref] refs/pull/15134/head -> refs/pull/15134/head * [new ref] refs/pull/15135/head -> refs/pull/15135/head * [new ref] refs/pull/15136/head -> refs/pull/15136/head * [new ref] refs/pull/15137/head -> refs/pull/15137/head * [new ref] refs/pull/15138/head -> refs/pull/15138/head * [new ref] refs/pull/15140/head -> refs/pull/15140/head * [new ref] refs/pull/15141/head -> refs/pull/15141/head * [new ref] refs/pull/15142/head -> refs/pull/15142/head * [new ref] refs/pull/15143/head -> refs/pull/15143/head * [new ref] refs/pull/15144/head -> refs/pull/15144/head * [new ref] refs/pull/15145/head -> refs/pull/15145/head * [new ref] refs/pull/15147/head -> refs/pull/15147/head * [new ref] refs/pull/15148/head -> refs/pull/15148/head * [new ref] refs/pull/15150/head -> refs/pull/15150/head * [new ref] refs/pull/15152/head -> refs/pull/15152/head * [new ref] refs/pull/15153/head -> refs/pull/15153/head * [new ref] refs/pull/15155/head -> refs/pull/15155/head * [new ref] refs/pull/15157/head -> refs/pull/15157/head * [new ref] refs/pull/15160/head -> refs/pull/15160/head * [new ref] refs/pull/15161/head -> refs/pull/15161/head * [new ref] refs/pull/15162/head -> refs/pull/15162/head * [new ref] refs/pull/15163/head -> refs/pull/15163/head * [new ref] refs/pull/15164/head -> refs/pull/15164/head * [new ref] refs/pull/15165/head -> refs/pull/15165/head * [new ref] refs/pull/15166/head -> refs/pull/15166/head * [new ref] refs/pull/15167/head -> refs/pull/15167/head * [new ref] refs/pull/15168/head -> refs/pull/15168/head * [new ref] refs/pull/15169/head -> refs/pull/15169/head * [new ref] refs/pull/15170/head -> refs/pull/15170/head * [new ref] refs/pull/15171/head -> refs/pull/15171/head * [new ref] refs/pull/15172/head -> refs/pull/15172/head * [new ref] refs/pull/15173/head -> refs/pull/15173/head * [new ref] refs/pull/15174/head -> refs/pull/15174/head * [new ref] refs/pull/15175/head -> refs/pull/15175/head * [new ref] refs/pull/15176/head -> refs/pull/15176/head * [new ref] refs/pull/15177/head -> refs/pull/15177/head * [new ref] refs/pull/15178/head -> refs/pull/15178/head * [new ref] refs/pull/15179/head -> refs/pull/15179/head * [new ref] refs/pull/15180/head -> refs/pull/15180/head * [new ref] refs/pull/15181/head -> refs/pull/15181/head * [new ref] refs/pull/15182/head -> refs/pull/15182/head * [new ref] refs/pull/15183/head -> refs/pull/15183/head * [new ref] refs/pull/15184/head -> refs/pull/15184/head * [new ref] refs/pull/15186/head -> refs/pull/15186/head * [new ref] refs/pull/15187/head -> refs/pull/15187/head * [new ref] refs/pull/15188/head -> refs/pull/15188/head * [new ref] refs/pull/15190/head -> refs/pull/15190/head * [new ref] refs/pull/15191/head -> refs/pull/15191/head * [new ref] refs/pull/15192/head -> refs/pull/15192/head * [new ref] refs/pull/15193/head -> refs/pull/15193/head * [new ref] refs/pull/15194/head -> refs/pull/15194/head * [new ref] refs/pull/15195/head -> refs/pull/15195/head * [new ref] refs/pull/15196/head -> refs/pull/15196/head * [new ref] refs/pull/15197/head -> refs/pull/15197/head * [new ref] refs/pull/15198/head -> refs/pull/15198/head * [new ref] refs/pull/15199/head -> refs/pull/15199/head * [new ref] refs/pull/15200/head -> refs/pull/15200/head * [new ref] refs/pull/15203/head -> refs/pull/15203/head * [new ref] refs/pull/15204/head -> refs/pull/15204/head * [new ref] refs/pull/15205/head -> refs/pull/15205/head * [new ref] refs/pull/15206/head -> refs/pull/15206/head * [new ref] refs/pull/15207/head -> refs/pull/15207/head * [new ref] refs/pull/15208/head -> refs/pull/15208/head * [new ref] refs/pull/15209/head -> refs/pull/15209/head * [new ref] refs/pull/15210/head -> refs/pull/15210/head * [new ref] refs/pull/15211/head -> refs/pull/15211/head * [new ref] refs/pull/15212/head -> refs/pull/15212/head * [new ref] refs/pull/15213/head -> refs/pull/15213/head * [new ref] refs/pull/15214/head -> refs/pull/15214/head * [new ref] refs/pull/15215/head -> refs/pull/15215/head * [new ref] refs/pull/15217/head -> refs/pull/15217/head * [new ref] refs/pull/15218/head -> refs/pull/15218/head * [new ref] refs/pull/15219/head -> refs/pull/15219/head * [new ref] refs/pull/15220/head -> refs/pull/15220/head * [new ref] refs/pull/15221/head -> refs/pull/15221/head * [new ref] refs/pull/15222/head -> refs/pull/15222/head * [new ref] refs/pull/15223/head -> refs/pull/15223/head * [new ref] refs/pull/15224/head -> refs/pull/15224/head * [new ref] refs/pull/15225/head -> refs/pull/15225/head * [new ref] refs/pull/15226/head -> refs/pull/15226/head * [new ref] refs/pull/15227/head -> refs/pull/15227/head * [new ref] refs/pull/15228/head -> refs/pull/15228/head * [new ref] refs/pull/15229/head -> refs/pull/15229/head * [new ref] refs/pull/15230/head -> refs/pull/15230/head * [new ref] refs/pull/15231/head -> refs/pull/15231/head * [new ref] refs/pull/15232/head -> refs/pull/15232/head * [new ref] refs/pull/15233/head -> refs/pull/15233/head * [new ref] refs/pull/15234/head -> refs/pull/15234/head * [new ref] refs/pull/15235/head -> refs/pull/15235/head * [new ref] refs/pull/15236/head -> refs/pull/15236/head * [new ref] refs/pull/15237/head -> refs/pull/15237/head * [new ref] refs/pull/15238/head -> refs/pull/15238/head * [new ref] refs/pull/15240/head -> refs/pull/15240/head * [new ref] refs/pull/15241/head -> refs/pull/15241/head * [new ref] refs/pull/15242/head -> refs/pull/15242/head * [new ref] refs/pull/15243/head -> refs/pull/15243/head * [new ref] refs/pull/15244/head -> refs/pull/15244/head * [new ref] refs/pull/15245/head -> refs/pull/15245/head * [new ref] refs/pull/15246/head -> refs/pull/15246/head * [new ref] refs/pull/15247/head -> refs/pull/15247/head * [new ref] refs/pull/15249/head -> refs/pull/15249/head * [new ref] refs/pull/15250/head -> refs/pull/15250/head * [new ref] refs/pull/15251/head -> refs/pull/15251/head * [new ref] refs/pull/15252/head -> refs/pull/15252/head * [new ref] refs/pull/15253/head -> refs/pull/15253/head * [new ref] refs/pull/15255/head -> refs/pull/15255/head * [new ref] refs/pull/15256/head -> refs/pull/15256/head * [new ref] refs/pull/15257/head -> refs/pull/15257/head * [new ref] refs/pull/15259/head -> refs/pull/15259/head * [new ref] refs/pull/15260/head -> refs/pull/15260/head * [new ref] refs/pull/15263/head -> refs/pull/15263/head * [new ref] refs/pull/15264/head -> refs/pull/15264/head * [new ref] refs/pull/15265/head -> refs/pull/15265/head * [new ref] refs/pull/15266/head -> refs/pull/15266/head * [new ref] refs/pull/15268/head -> refs/pull/15268/head * [new ref] refs/pull/15271/head -> refs/pull/15271/head * [new ref] refs/pull/15273/head -> refs/pull/15273/head * [new ref] refs/pull/15274/head -> refs/pull/15274/head * [new ref] refs/pull/15275/head -> refs/pull/15275/head * [new ref] refs/pull/15278/head -> refs/pull/15278/head * [new ref] refs/pull/15279/head -> refs/pull/15279/head * [new ref] refs/pull/15280/head -> refs/pull/15280/head * [new ref] refs/pull/15281/head -> refs/pull/15281/head * [new ref] refs/pull/15282/head -> refs/pull/15282/head * [new ref] refs/pull/15283/head -> refs/pull/15283/head * [new ref] refs/pull/15284/head -> refs/pull/15284/head * [new ref] refs/pull/15285/head -> refs/pull/15285/head * [new ref] refs/pull/15286/head -> refs/pull/15286/head * [new ref] refs/pull/15287/head -> refs/pull/15287/head * [new ref] refs/pull/15289/head -> refs/pull/15289/head * [new ref] refs/pull/15290/head -> refs/pull/15290/head * [new ref] refs/pull/15291/head -> refs/pull/15291/head * [new ref] refs/pull/15292/head -> refs/pull/15292/head * [new ref] refs/pull/15293/head -> refs/pull/15293/head * [new ref] refs/pull/15296/head -> refs/pull/15296/head * [new ref] refs/pull/15297/head -> refs/pull/15297/head * [new ref] refs/pull/15299/head -> refs/pull/15299/head * [new ref] refs/pull/15301/head -> refs/pull/15301/head * [new ref] refs/pull/15303/head -> refs/pull/15303/head * [new ref] refs/pull/15306/head -> refs/pull/15306/head * [new ref] refs/pull/15307/head -> refs/pull/15307/head * [new ref] refs/pull/15308/head -> refs/pull/15308/head * [new ref] refs/pull/15309/head -> refs/pull/15309/head * [new ref] refs/pull/15310/head -> refs/pull/15310/head * [new ref] refs/pull/15312/head -> refs/pull/15312/head * [new ref] refs/pull/15313/head -> refs/pull/15313/head * [new ref] refs/pull/15314/head -> refs/pull/15314/head * [new ref] refs/pull/15315/head -> refs/pull/15315/head * [new ref] refs/pull/15317/head -> refs/pull/15317/head * [new ref] refs/pull/15318/head -> refs/pull/15318/head * [new ref] refs/pull/15319/head -> refs/pull/15319/head * [new ref] refs/pull/15320/head -> refs/pull/15320/head * [new ref] refs/pull/15321/head -> refs/pull/15321/head * [new ref] refs/pull/15322/head -> refs/pull/15322/head * [new ref] refs/pull/15323/head -> refs/pull/15323/head * [new ref] refs/pull/15324/head -> refs/pull/15324/head * [new ref] refs/pull/15325/head -> refs/pull/15325/head * [new ref] refs/pull/15326/head -> refs/pull/15326/head * [new ref] refs/pull/15327/head -> refs/pull/15327/head * [new ref] refs/pull/15329/head -> refs/pull/15329/head * [new ref] refs/pull/15330/head -> refs/pull/15330/head * [new ref] refs/pull/15331/head -> refs/pull/15331/head * [new ref] refs/pull/15333/head -> refs/pull/15333/head * [new ref] refs/pull/15334/head -> refs/pull/15334/head * [new ref] refs/pull/15335/head -> refs/pull/15335/head * [new ref] refs/pull/15337/head -> refs/pull/15337/head * [new ref] refs/pull/15338/head -> refs/pull/15338/head * [new ref] refs/pull/15341/head -> refs/pull/15341/head * [new ref] refs/pull/15342/head -> refs/pull/15342/head * [new ref] refs/pull/15343/head -> refs/pull/15343/head * [new ref] refs/pull/15344/head -> refs/pull/15344/head * [new ref] refs/pull/15346/head -> refs/pull/15346/head * [new ref] refs/pull/15347/head -> refs/pull/15347/head * [new ref] refs/pull/15348/head -> refs/pull/15348/head * [new ref] refs/pull/15349/head -> refs/pull/15349/head * [new ref] refs/pull/15352/head -> refs/pull/15352/head * [new ref] refs/pull/15353/head -> refs/pull/15353/head * [new ref] refs/pull/15354/head -> refs/pull/15354/head * [new ref] refs/pull/15355/head -> refs/pull/15355/head * [new ref] refs/pull/15356/head -> refs/pull/15356/head * [new ref] refs/pull/15358/head -> refs/pull/15358/head * [new ref] refs/pull/15359/head -> refs/pull/15359/head * [new ref] refs/pull/15360/head -> refs/pull/15360/head * [new ref] refs/pull/15361/head -> refs/pull/15361/head * [new ref] refs/pull/15362/head -> refs/pull/15362/head * [new ref] refs/pull/15363/head -> refs/pull/15363/head * [new ref] refs/pull/15364/head -> refs/pull/15364/head * [new ref] refs/pull/15365/head -> refs/pull/15365/head * [new ref] refs/pull/15366/head -> refs/pull/15366/head * [new ref] refs/pull/15367/head -> refs/pull/15367/head * [new ref] refs/pull/15368/head -> refs/pull/15368/head * [new ref] refs/pull/15369/head -> refs/pull/15369/head * [new ref] refs/pull/15370/head -> refs/pull/15370/head * [new ref] refs/pull/15371/head -> refs/pull/15371/head * [new ref] refs/pull/15372/head -> refs/pull/15372/head * [new ref] refs/pull/15373/head -> refs/pull/15373/head * [new ref] refs/pull/15374/head -> refs/pull/15374/head * [new ref] refs/pull/15376/head -> refs/pull/15376/head * [new ref] refs/pull/15377/head -> refs/pull/15377/head * [new ref] refs/pull/15379/head -> refs/pull/15379/head * [new ref] refs/pull/15380/head -> refs/pull/15380/head * [new ref] refs/pull/15381/head -> refs/pull/15381/head * [new ref] refs/pull/15382/head -> refs/pull/15382/head * [new ref] refs/pull/15383/head -> refs/pull/15383/head * [new ref] refs/pull/15384/head -> refs/pull/15384/head * [new ref] refs/pull/15385/head -> refs/pull/15385/head * [new ref] refs/pull/15387/head -> refs/pull/15387/head * [new ref] refs/pull/15388/head -> refs/pull/15388/head * [new ref] refs/pull/15391/head -> refs/pull/15391/head * [new ref] refs/pull/15392/head -> refs/pull/15392/head * [new ref] refs/pull/15393/head -> refs/pull/15393/head * [new ref] refs/pull/15394/head -> refs/pull/15394/head * [new ref] refs/pull/15395/head -> refs/pull/15395/head * [new ref] refs/pull/15396/head -> refs/pull/15396/head * [new ref] refs/pull/15397/head -> refs/pull/15397/head * [new ref] refs/pull/15398/head -> refs/pull/15398/head * [new ref] refs/pull/15399/head -> refs/pull/15399/head * [new ref] refs/pull/15400/head -> refs/pull/15400/head * [new ref] refs/pull/15402/head -> refs/pull/15402/head * [new ref] refs/pull/15403/head -> refs/pull/15403/head * [new ref] refs/pull/15404/head -> refs/pull/15404/head * [new ref] refs/pull/15405/head -> refs/pull/15405/head * [new ref] refs/pull/15407/head -> refs/pull/15407/head * [new ref] refs/pull/15408/head -> refs/pull/15408/head * [new ref] refs/pull/15409/head -> refs/pull/15409/head * [new ref] refs/pull/15410/head -> refs/pull/15410/head * [new ref] refs/pull/15411/head -> refs/pull/15411/head * [new ref] refs/pull/15412/head -> refs/pull/15412/head * [new ref] refs/pull/15413/head -> refs/pull/15413/head * [new ref] refs/pull/15414/head -> refs/pull/15414/head * [new ref] refs/pull/15415/head -> refs/pull/15415/head * [new ref] refs/pull/15416/head -> refs/pull/15416/head * [new ref] refs/pull/15417/head -> refs/pull/15417/head * [new ref] refs/pull/15418/head -> refs/pull/15418/head * [new ref] refs/pull/15419/head -> refs/pull/15419/head * [new ref] refs/pull/15420/head -> refs/pull/15420/head * [new ref] refs/pull/15421/head -> refs/pull/15421/head * [new ref] refs/pull/15422/head -> refs/pull/15422/head * [new ref] refs/pull/15423/head -> refs/pull/15423/head * [new ref] refs/pull/15424/head -> refs/pull/15424/head * [new ref] refs/pull/15427/head -> refs/pull/15427/head * [new ref] refs/pull/15429/head -> refs/pull/15429/head * [new ref] refs/pull/15430/head -> refs/pull/15430/head * [new ref] refs/pull/15431/head -> refs/pull/15431/head * [new ref] refs/pull/15433/head -> refs/pull/15433/head * [new ref] refs/pull/15434/head -> refs/pull/15434/head * [new ref] refs/pull/15435/head -> refs/pull/15435/head * [new ref] refs/pull/15436/head -> refs/pull/15436/head * [new ref] refs/pull/15437/head -> refs/pull/15437/head * [new ref] refs/pull/15438/head -> refs/pull/15438/head * [new ref] refs/pull/15439/head -> refs/pull/15439/head * [new ref] refs/pull/15440/head -> refs/pull/15440/head * [new ref] refs/pull/15441/head -> refs/pull/15441/head * [new ref] refs/pull/15442/head -> refs/pull/15442/head * [new ref] refs/pull/15443/head -> refs/pull/15443/head * [new ref] refs/pull/15444/head -> refs/pull/15444/head * [new ref] refs/pull/15446/head -> refs/pull/15446/head * [new ref] refs/pull/15449/head -> refs/pull/15449/head * [new ref] refs/pull/15450/head -> refs/pull/15450/head * [new ref] refs/pull/15451/head -> refs/pull/15451/head * [new ref] refs/pull/15452/head -> refs/pull/15452/head * [new ref] refs/pull/15453/head -> refs/pull/15453/head * [new ref] refs/pull/15454/head -> refs/pull/15454/head * [new ref] refs/pull/15456/head -> refs/pull/15456/head * [new ref] refs/pull/15457/head -> refs/pull/15457/head * [new ref] refs/pull/15461/head -> refs/pull/15461/head * [new ref] refs/pull/15462/head -> refs/pull/15462/head * [new ref] refs/pull/15463/head -> refs/pull/15463/head * [new ref] refs/pull/15464/head -> refs/pull/15464/head * [new ref] refs/pull/15465/head -> refs/pull/15465/head * [new ref] refs/pull/15466/head -> refs/pull/15466/head * [new ref] refs/pull/15468/head -> refs/pull/15468/head * [new ref] refs/pull/15470/head -> refs/pull/15470/head * [new ref] refs/pull/15471/head -> refs/pull/15471/head * [new ref] refs/pull/15474/head -> refs/pull/15474/head * [new ref] refs/pull/15475/head -> refs/pull/15475/head * [new ref] refs/pull/15476/head -> refs/pull/15476/head * [new ref] refs/pull/15478/head -> refs/pull/15478/head * [new ref] refs/pull/15479/head -> refs/pull/15479/head * [new ref] refs/pull/15480/head -> refs/pull/15480/head * [new ref] refs/pull/15481/head -> refs/pull/15481/head * [new ref] refs/pull/15486/head -> refs/pull/15486/head * [new ref] refs/pull/15487/head -> refs/pull/15487/head * [new ref] refs/pull/15488/head -> refs/pull/15488/head * [new ref] refs/pull/15490/head -> refs/pull/15490/head * [new ref] refs/pull/15491/head -> refs/pull/15491/head * [new ref] refs/pull/15493/head -> refs/pull/15493/head * [new ref] refs/pull/15494/head -> refs/pull/15494/head * [new ref] refs/pull/15495/head -> refs/pull/15495/head * [new ref] refs/pull/15497/head -> refs/pull/15497/head * [new ref] refs/pull/15498/head -> refs/pull/15498/head * [new ref] refs/pull/15499/head -> refs/pull/15499/head * [new ref] refs/pull/15501/head -> refs/pull/15501/head * [new ref] refs/pull/15503/head -> refs/pull/15503/head * [new ref] refs/pull/15504/head -> refs/pull/15504/head * [new ref] refs/pull/15505/head -> refs/pull/15505/head * [new ref] refs/pull/15508/head -> refs/pull/15508/head * [new ref] refs/pull/15510/head -> refs/pull/15510/head * [new ref] refs/pull/15512/head -> refs/pull/15512/head * [new ref] refs/pull/15514/head -> refs/pull/15514/head * [new ref] refs/pull/15515/head -> refs/pull/15515/head * [new ref] refs/pull/15516/head -> refs/pull/15516/head * [new ref] refs/pull/15517/head -> refs/pull/15517/head * [new ref] refs/pull/15518/head -> refs/pull/15518/head * [new ref] refs/pull/15519/head -> refs/pull/15519/head * [new ref] refs/pull/15521/head -> refs/pull/15521/head * [new ref] refs/pull/15523/head -> refs/pull/15523/head * [new ref] refs/pull/15524/head -> refs/pull/15524/head * [new ref] refs/pull/15526/head -> refs/pull/15526/head * [new ref] refs/pull/15527/head -> refs/pull/15527/head * [new ref] refs/pull/15528/head -> refs/pull/15528/head * [new ref] refs/pull/15529/head -> refs/pull/15529/head * [new ref] refs/pull/15530/head -> refs/pull/15530/head * [new ref] refs/pull/15531/head -> refs/pull/15531/head * [new ref] refs/pull/15533/head -> refs/pull/15533/head * [new ref] refs/pull/15534/head -> refs/pull/15534/head * [new ref] refs/pull/15534/merge -> refs/pull/15534/merge * [new ref] refs/pull/15535/head -> refs/pull/15535/head * [new ref] refs/pull/15536/head -> refs/pull/15536/head * [new ref] refs/pull/15538/head -> refs/pull/15538/head * [new ref] refs/pull/15540/head -> refs/pull/15540/head * [new ref] refs/pull/15542/head -> refs/pull/15542/head * [new ref] refs/pull/15543/head -> refs/pull/15543/head * [new ref] refs/pull/15545/head -> refs/pull/15545/head * [new ref] refs/pull/15546/head -> refs/pull/15546/head * [new ref] refs/pull/15549/head -> refs/pull/15549/head * [new ref] refs/pull/15550/head -> refs/pull/15550/head * [new ref] refs/pull/15552/head -> refs/pull/15552/head * [new ref] refs/pull/15555/head -> refs/pull/15555/head * [new ref] refs/pull/15556/head -> refs/pull/15556/head * [new ref] refs/pull/15558/head -> refs/pull/15558/head * [new ref] refs/pull/15559/head -> refs/pull/15559/head * [new ref] refs/pull/15560/head -> refs/pull/15560/head * [new ref] refs/pull/15561/head -> refs/pull/15561/head * [new ref] refs/pull/15562/head -> refs/pull/15562/head * [new ref] refs/pull/15563/head -> refs/pull/15563/head * [new ref] refs/pull/15564/head -> refs/pull/15564/head * [new ref] refs/pull/15565/head -> refs/pull/15565/head * [new ref] refs/pull/15572/head -> refs/pull/15572/head * [new ref] refs/pull/15573/head -> refs/pull/15573/head * [new ref] refs/pull/15574/head -> refs/pull/15574/head * [new ref] refs/pull/15575/head -> refs/pull/15575/head * [new ref] refs/pull/15576/head -> refs/pull/15576/head * [new ref] refs/pull/15577/head -> refs/pull/15577/head * [new ref] refs/pull/15578/head -> refs/pull/15578/head * [new ref] refs/pull/15579/head -> refs/pull/15579/head * [new ref] refs/pull/15581/head -> refs/pull/15581/head * [new ref] refs/pull/15583/head -> refs/pull/15583/head * [new ref] refs/pull/15584/head -> refs/pull/15584/head * [new ref] refs/pull/15585/head -> refs/pull/15585/head * [new ref] refs/pull/15586/head -> refs/pull/15586/head * [new ref] refs/pull/15587/head -> refs/pull/15587/head * [new ref] refs/pull/15594/head -> refs/pull/15594/head * [new ref] refs/pull/15596/head -> refs/pull/15596/head * [new ref] refs/pull/15597/head -> refs/pull/15597/head * [new ref] refs/pull/15598/head -> refs/pull/15598/head * [new ref] refs/pull/15600/head -> refs/pull/15600/head * [new ref] refs/pull/15601/head -> refs/pull/15601/head * [new ref] refs/pull/15602/head -> refs/pull/15602/head * [new ref] refs/pull/15603/head -> refs/pull/15603/head * [new ref] refs/pull/15606/head -> refs/pull/15606/head * [new ref] refs/pull/15607/head -> refs/pull/15607/head * [new ref] refs/pull/15608/head -> refs/pull/15608/head * [new ref] refs/pull/15609/head -> refs/pull/15609/head * [new ref] refs/pull/15613/head -> refs/pull/15613/head * [new ref] refs/pull/15615/head -> refs/pull/15615/head * [new ref] refs/pull/15616/head -> refs/pull/15616/head * [new ref] refs/pull/15617/head -> refs/pull/15617/head * [new ref] refs/pull/15618/head -> refs/pull/15618/head * [new ref] refs/pull/15618/merge -> refs/pull/15618/merge * [new ref] refs/pull/15619/head -> refs/pull/15619/head * [new ref] refs/pull/15620/head -> refs/pull/15620/head * [new ref] refs/pull/15621/head -> refs/pull/15621/head * [new ref] refs/pull/15622/head -> refs/pull/15622/head * [new ref] refs/pull/15623/head -> refs/pull/15623/head * [new ref] refs/pull/15625/head -> refs/pull/15625/head * [new ref] refs/pull/15626/head -> refs/pull/15626/head * [new ref] refs/pull/15627/head -> refs/pull/15627/head * [new ref] refs/pull/15629/head -> refs/pull/15629/head * [new ref] refs/pull/15630/head -> refs/pull/15630/head * [new ref] refs/pull/15631/head -> refs/pull/15631/head * [new ref] refs/pull/15632/head -> refs/pull/15632/head * [new ref] refs/pull/15635/head -> refs/pull/15635/head * [new ref] refs/pull/15637/head -> refs/pull/15637/head * [new ref] refs/pull/15638/head -> refs/pull/15638/head * [new ref] refs/pull/15640/head -> refs/pull/15640/head * [new ref] refs/pull/15641/head -> refs/pull/15641/head * [new ref] refs/pull/15642/head -> refs/pull/15642/head * [new ref] refs/pull/15643/head -> refs/pull/15643/head * [new ref] refs/pull/15644/head -> refs/pull/15644/head * [new ref] refs/pull/15647/head -> refs/pull/15647/head * [new ref] refs/pull/15648/head -> refs/pull/15648/head * [new ref] refs/pull/15649/head -> refs/pull/15649/head * [new ref] refs/pull/15650/head -> refs/pull/15650/head * [new ref] refs/pull/15651/head -> refs/pull/15651/head * [new ref] refs/pull/15652/head -> refs/pull/15652/head * [new ref] refs/pull/15656/head -> refs/pull/15656/head * [new ref] refs/pull/15657/head -> refs/pull/15657/head * [new ref] refs/pull/15659/head -> refs/pull/15659/head * [new ref] refs/pull/15660/head -> refs/pull/15660/head * [new ref] refs/pull/15661/head -> refs/pull/15661/head * [new ref] refs/pull/15662/head -> refs/pull/15662/head * [new ref] refs/pull/15663/head -> refs/pull/15663/head * [new ref] refs/pull/15665/head -> refs/pull/15665/head * [new ref] refs/pull/15666/head -> refs/pull/15666/head * [new ref] refs/pull/15667/head -> refs/pull/15667/head * [new ref] refs/pull/15668/head -> refs/pull/15668/head * [new ref] refs/pull/15670/head -> refs/pull/15670/head * [new ref] refs/pull/15671/head -> refs/pull/15671/head * [new ref] refs/pull/15672/head -> refs/pull/15672/head * [new ref] refs/pull/15673/head -> refs/pull/15673/head * [new ref] refs/pull/15674/head -> refs/pull/15674/head * [new ref] refs/pull/15675/head -> refs/pull/15675/head * [new ref] refs/pull/15676/head -> refs/pull/15676/head * [new ref] refs/pull/15677/head -> refs/pull/15677/head * [new ref] refs/pull/15679/head -> refs/pull/15679/head * [new ref] refs/pull/15680/head -> refs/pull/15680/head * [new ref] refs/pull/15681/head -> refs/pull/15681/head * [new ref] refs/pull/15682/head -> refs/pull/15682/head * [new ref] refs/pull/15683/head -> refs/pull/15683/head * [new ref] refs/pull/15686/head -> refs/pull/15686/head * [new ref] refs/pull/15687/head -> refs/pull/15687/head * [new ref] refs/pull/15690/head -> refs/pull/15690/head * [new ref] refs/pull/15691/head -> refs/pull/15691/head * [new ref] refs/pull/15692/head -> refs/pull/15692/head * [new ref] refs/pull/15694/head -> refs/pull/15694/head * [new ref] refs/pull/15695/head -> refs/pull/15695/head * [new ref] refs/pull/15696/head -> refs/pull/15696/head * [new ref] refs/pull/15698/head -> refs/pull/15698/head * [new ref] refs/pull/15699/head -> refs/pull/15699/head * [new ref] refs/pull/15702/head -> refs/pull/15702/head * [new ref] refs/pull/15704/head -> refs/pull/15704/head * [new ref] refs/pull/15706/head -> refs/pull/15706/head * [new ref] refs/pull/15707/head -> refs/pull/15707/head * [new ref] refs/pull/15708/head -> refs/pull/15708/head * [new ref] refs/pull/15709/head -> refs/pull/15709/head * [new ref] refs/pull/15712/head -> refs/pull/15712/head * [new ref] refs/pull/15714/head -> refs/pull/15714/head * [new ref] refs/pull/15715/head -> refs/pull/15715/head * [new ref] refs/pull/15716/head -> refs/pull/15716/head * [new ref] refs/pull/15719/head -> refs/pull/15719/head * [new ref] refs/pull/15720/head -> refs/pull/15720/head * [new ref] refs/pull/15721/head -> refs/pull/15721/head * [new ref] refs/pull/15722/head -> refs/pull/15722/head * [new ref] refs/pull/15724/head -> refs/pull/15724/head * [new ref] refs/pull/15727/head -> refs/pull/15727/head * [new ref] refs/pull/15731/head -> refs/pull/15731/head * [new ref] refs/pull/15732/head -> refs/pull/15732/head * [new ref] refs/pull/15735/head -> refs/pull/15735/head * [new ref] refs/pull/15737/head -> refs/pull/15737/head * [new ref] refs/pull/15739/head -> refs/pull/15739/head * [new ref] refs/pull/15740/head -> refs/pull/15740/head * [new ref] refs/pull/15741/head -> refs/pull/15741/head * [new ref] refs/pull/15742/head -> refs/pull/15742/head * [new ref] refs/pull/15743/head -> refs/pull/15743/head * [new ref] refs/pull/15745/head -> refs/pull/15745/head * [new ref] refs/pull/15746/head -> refs/pull/15746/head * [new ref] refs/pull/15748/head -> refs/pull/15748/head * [new ref] refs/pull/15751/head -> refs/pull/15751/head * [new ref] refs/pull/15752/head -> refs/pull/15752/head * [new ref] refs/pull/15753/head -> refs/pull/15753/head * [new ref] refs/pull/15755/head -> refs/pull/15755/head * [new ref] refs/pull/15758/head -> refs/pull/15758/head * [new ref] refs/pull/15760/head -> refs/pull/15760/head * [new ref] refs/pull/15762/head -> refs/pull/15762/head * [new ref] refs/pull/15763/head -> refs/pull/15763/head * [new ref] refs/pull/15764/head -> refs/pull/15764/head * [new ref] refs/pull/15765/head -> refs/pull/15765/head * [new ref] refs/pull/15766/head -> refs/pull/15766/head * [new ref] refs/pull/15768/head -> refs/pull/15768/head * [new ref] refs/pull/15769/head -> refs/pull/15769/head * [new ref] refs/pull/15770/head -> refs/pull/15770/head * [new ref] refs/pull/15771/head -> refs/pull/15771/head * [new ref] refs/pull/15772/head -> refs/pull/15772/head * [new ref] refs/pull/15773/head -> refs/pull/15773/head * [new ref] refs/pull/15774/head -> refs/pull/15774/head * [new ref] refs/pull/15775/head -> refs/pull/15775/head * [new ref] refs/pull/15776/head -> refs/pull/15776/head * [new ref] refs/pull/15777/head -> refs/pull/15777/head * [new ref] refs/pull/15778/head -> refs/pull/15778/head * [new ref] refs/pull/15779/head -> refs/pull/15779/head * [new ref] refs/pull/15781/head -> refs/pull/15781/head * [new ref] refs/pull/15782/head -> refs/pull/15782/head * [new ref] refs/pull/15783/head -> refs/pull/15783/head * [new ref] refs/pull/15784/head -> refs/pull/15784/head * [new ref] refs/pull/15785/head -> refs/pull/15785/head * [new ref] refs/pull/15786/head -> refs/pull/15786/head * [new ref] refs/pull/15787/head -> refs/pull/15787/head * [new ref] refs/pull/15788/head -> refs/pull/15788/head * [new ref] refs/pull/15789/head -> refs/pull/15789/head * [new ref] refs/pull/15790/head -> refs/pull/15790/head * [new ref] refs/pull/15791/head -> refs/pull/15791/head * [new ref] refs/pull/15792/head -> refs/pull/15792/head * [new ref] refs/pull/15793/head -> refs/pull/15793/head * [new ref] refs/pull/15794/head -> refs/pull/15794/head * [new ref] refs/pull/15796/head -> refs/pull/15796/head * [new ref] refs/pull/15797/head -> refs/pull/15797/head * [new ref] refs/pull/15798/head -> refs/pull/15798/head * [new ref] refs/pull/15799/head -> refs/pull/15799/head * [new ref] refs/pull/15800/head -> refs/pull/15800/head * [new ref] refs/pull/15803/head -> refs/pull/15803/head * [new ref] refs/pull/15805/head -> refs/pull/15805/head * [new ref] refs/pull/15806/head -> refs/pull/15806/head * [new ref] refs/pull/15807/head -> refs/pull/15807/head * [new ref] refs/pull/15808/head -> refs/pull/15808/head * [new ref] refs/pull/15809/head -> refs/pull/15809/head * [new ref] refs/pull/15810/head -> refs/pull/15810/head * [new ref] refs/pull/15812/head -> refs/pull/15812/head * [new ref] refs/pull/15813/head -> refs/pull/15813/head * [new ref] refs/pull/15814/head -> refs/pull/15814/head * [new ref] refs/pull/15815/head -> refs/pull/15815/head * [new ref] refs/pull/15816/head -> refs/pull/15816/head * [new ref] refs/pull/15817/head -> refs/pull/15817/head * [new ref] refs/pull/15819/head -> refs/pull/15819/head * [new ref] refs/pull/15820/head -> refs/pull/15820/head * [new ref] refs/pull/15823/head -> refs/pull/15823/head * [new ref] refs/pull/15824/head -> refs/pull/15824/head * [new ref] refs/pull/15825/head -> refs/pull/15825/head * [new ref] refs/pull/15826/head -> refs/pull/15826/head * [new ref] refs/pull/15827/head -> refs/pull/15827/head * [new ref] refs/pull/15828/head -> refs/pull/15828/head * [new ref] refs/pull/15829/head -> refs/pull/15829/head * [new ref] refs/pull/15830/head -> refs/pull/15830/head * [new ref] refs/pull/15832/head -> refs/pull/15832/head * [new ref] refs/pull/15833/head -> refs/pull/15833/head * [new ref] refs/pull/15834/head -> refs/pull/15834/head * [new ref] refs/pull/15835/head -> refs/pull/15835/head * [new ref] refs/pull/15837/head -> refs/pull/15837/head * [new ref] refs/pull/15839/head -> refs/pull/15839/head * [new ref] refs/pull/15840/head -> refs/pull/15840/head * [new ref] refs/pull/15841/head -> refs/pull/15841/head * [new ref] refs/pull/15843/head -> refs/pull/15843/head * [new ref] refs/pull/15845/head -> refs/pull/15845/head * [new ref] refs/pull/15846/head -> refs/pull/15846/head * [new ref] refs/pull/15848/head -> refs/pull/15848/head * [new ref] refs/pull/15850/head -> refs/pull/15850/head * [new ref] refs/pull/15851/head -> refs/pull/15851/head * [new ref] refs/pull/15852/head -> refs/pull/15852/head * [new ref] refs/pull/15853/head -> refs/pull/15853/head * [new ref] refs/pull/15854/head -> refs/pull/15854/head * [new ref] refs/pull/15855/head -> refs/pull/15855/head * [new ref] refs/pull/15858/head -> refs/pull/15858/head * [new ref] refs/pull/15859/head -> refs/pull/15859/head * [new ref] refs/pull/15860/head -> refs/pull/15860/head * [new ref] refs/pull/15861/head -> refs/pull/15861/head * [new ref] refs/pull/15862/head -> refs/pull/15862/head * [new ref] refs/pull/15863/head -> refs/pull/15863/head * [new ref] refs/pull/15864/head -> refs/pull/15864/head * [new ref] refs/pull/15867/head -> refs/pull/15867/head * [new ref] refs/pull/15868/head -> refs/pull/15868/head * [new ref] refs/pull/15869/head -> refs/pull/15869/head * [new ref] refs/pull/15871/head -> refs/pull/15871/head * [new ref] refs/pull/15872/head -> refs/pull/15872/head * [new ref] refs/pull/15873/head -> refs/pull/15873/head * [new ref] refs/pull/15874/head -> refs/pull/15874/head * [new ref] refs/pull/15875/head -> refs/pull/15875/head * [new ref] refs/pull/15876/head -> refs/pull/15876/head * [new ref] refs/pull/15877/head -> refs/pull/15877/head * [new ref] refs/pull/15879/head -> refs/pull/15879/head * [new ref] refs/pull/15880/head -> refs/pull/15880/head * [new ref] refs/pull/15880/merge -> refs/pull/15880/merge * [new ref] refs/pull/15881/head -> refs/pull/15881/head * [new ref] refs/pull/15882/head -> refs/pull/15882/head * [new ref] refs/pull/15883/head -> refs/pull/15883/head * [new ref] refs/pull/15884/head -> refs/pull/15884/head * [new ref] refs/pull/15885/head -> refs/pull/15885/head * [new ref] refs/pull/15886/head -> refs/pull/15886/head * [new ref] refs/pull/15887/head -> refs/pull/15887/head * [new ref] refs/pull/15888/head -> refs/pull/15888/head * [new ref] refs/pull/15889/head -> refs/pull/15889/head * [new ref] refs/pull/15890/head -> refs/pull/15890/head * [new ref] refs/pull/15891/head -> refs/pull/15891/head * [new ref] refs/pull/15892/head -> refs/pull/15892/head * [new ref] refs/pull/15893/head -> refs/pull/15893/head * [new ref] refs/pull/15894/head -> refs/pull/15894/head * [new ref] refs/pull/15895/head -> refs/pull/15895/head * [new ref] refs/pull/15897/head -> refs/pull/15897/head * [new ref] refs/pull/15898/head -> refs/pull/15898/head * [new ref] refs/pull/15899/head -> refs/pull/15899/head * [new ref] refs/pull/15900/head -> refs/pull/15900/head * [new ref] refs/pull/15901/head -> refs/pull/15901/head * [new ref] refs/pull/15902/head -> refs/pull/15902/head * [new ref] refs/pull/15903/head -> refs/pull/15903/head * [new ref] refs/pull/15905/head -> refs/pull/15905/head * [new ref] refs/pull/15906/head -> refs/pull/15906/head * [new ref] refs/pull/15908/head -> refs/pull/15908/head * [new ref] refs/pull/15909/head -> refs/pull/15909/head * [new ref] refs/pull/15910/head -> refs/pull/15910/head * [new ref] refs/pull/15911/head -> refs/pull/15911/head * [new ref] refs/pull/15912/head -> refs/pull/15912/head * [new ref] refs/pull/15913/head -> refs/pull/15913/head * [new ref] refs/pull/15915/head -> refs/pull/15915/head * [new ref] refs/pull/15916/head -> refs/pull/15916/head * [new ref] refs/pull/15917/head -> refs/pull/15917/head * [new ref] refs/pull/15918/head -> refs/pull/15918/head * [new ref] refs/pull/15919/head -> refs/pull/15919/head * [new ref] refs/pull/15920/head -> refs/pull/15920/head * [new ref] refs/pull/15921/head -> refs/pull/15921/head * [new ref] refs/pull/15922/head -> refs/pull/15922/head * [new ref] refs/pull/15923/head -> refs/pull/15923/head * [new ref] refs/pull/15924/head -> refs/pull/15924/head * [new ref] refs/pull/15925/head -> refs/pull/15925/head * [new ref] refs/pull/15926/head -> refs/pull/15926/head * [new ref] refs/pull/15927/head -> refs/pull/15927/head * [new ref] refs/pull/15928/head -> refs/pull/15928/head * [new ref] refs/pull/15929/head -> refs/pull/15929/head * [new ref] refs/pull/15930/head -> refs/pull/15930/head * [new ref] refs/pull/15931/head -> refs/pull/15931/head * [new ref] refs/pull/15932/head -> refs/pull/15932/head * [new ref] refs/pull/15933/head -> refs/pull/15933/head * [new ref] refs/pull/15934/head -> refs/pull/15934/head * [new ref] refs/pull/15935/head -> refs/pull/15935/head * [new ref] refs/pull/15936/head -> refs/pull/15936/head * [new ref] refs/pull/15937/head -> refs/pull/15937/head * [new ref] refs/pull/15939/head -> refs/pull/15939/head * [new ref] refs/pull/15940/head -> refs/pull/15940/head * [new ref] refs/pull/15943/head -> refs/pull/15943/head * [new ref] refs/pull/15944/head -> refs/pull/15944/head * [new ref] refs/pull/15945/head -> refs/pull/15945/head * [new ref] refs/pull/15946/head -> refs/pull/15946/head * [new ref] refs/pull/15948/head -> refs/pull/15948/head * [new ref] refs/pull/15949/head -> refs/pull/15949/head * [new ref] refs/pull/15950/head -> refs/pull/15950/head * [new ref] refs/pull/15951/head -> refs/pull/15951/head * [new ref] refs/pull/15952/head -> refs/pull/15952/head * [new ref] refs/pull/15953/head -> refs/pull/15953/head * [new ref] refs/pull/15954/head -> refs/pull/15954/head * [new ref] refs/pull/15955/head -> refs/pull/15955/head * [new ref] refs/pull/15956/head -> refs/pull/15956/head * [new ref] refs/pull/15957/head -> refs/pull/15957/head * [new ref] refs/pull/15958/head -> refs/pull/15958/head * [new ref] refs/pull/15959/head -> refs/pull/15959/head * [new ref] refs/pull/15960/head -> refs/pull/15960/head * [new ref] refs/pull/15962/head -> refs/pull/15962/head * [new ref] refs/pull/15964/head -> refs/pull/15964/head * [new ref] refs/pull/15965/head -> refs/pull/15965/head * [new ref] refs/pull/15966/head -> refs/pull/15966/head * [new ref] refs/pull/15967/head -> refs/pull/15967/head * [new ref] refs/pull/15968/head -> refs/pull/15968/head * [new ref] refs/pull/15969/head -> refs/pull/15969/head * [new ref] refs/pull/15970/head -> refs/pull/15970/head * [new ref] refs/pull/15971/head -> refs/pull/15971/head * [new ref] refs/pull/15973/head -> refs/pull/15973/head * [new ref] refs/pull/15974/head -> refs/pull/15974/head * [new ref] refs/pull/15975/head -> refs/pull/15975/head * [new ref] refs/pull/15978/head -> refs/pull/15978/head * [new ref] refs/pull/15979/head -> refs/pull/15979/head * [new ref] refs/pull/15980/head -> refs/pull/15980/head * [new ref] refs/pull/15981/head -> refs/pull/15981/head * [new ref] refs/pull/15982/head -> refs/pull/15982/head * [new ref] refs/pull/15983/head -> refs/pull/15983/head * [new ref] refs/pull/15985/head -> refs/pull/15985/head * [new ref] refs/pull/15986/head -> refs/pull/15986/head * [new ref] refs/pull/15987/head -> refs/pull/15987/head * [new ref] refs/pull/15988/head -> refs/pull/15988/head * [new ref] refs/pull/15989/head -> refs/pull/15989/head * [new ref] refs/pull/15990/head -> refs/pull/15990/head * [new ref] refs/pull/15991/head -> refs/pull/15991/head * [new ref] refs/pull/15992/head -> refs/pull/15992/head * [new ref] refs/pull/15993/head -> refs/pull/15993/head * [new ref] refs/pull/15994/head -> refs/pull/15994/head * [new ref] refs/pull/15996/head -> refs/pull/15996/head * [new ref] refs/pull/15997/head -> refs/pull/15997/head * [new ref] refs/pull/15998/head -> refs/pull/15998/head * [new ref] refs/pull/15999/head -> refs/pull/15999/head * [new ref] refs/pull/16000/head -> refs/pull/16000/head * [new ref] refs/pull/16001/head -> refs/pull/16001/head * [new ref] refs/pull/16002/head -> refs/pull/16002/head * [new ref] refs/pull/16003/head -> refs/pull/16003/head * [new ref] refs/pull/16004/head -> refs/pull/16004/head * [new ref] refs/pull/16007/head -> refs/pull/16007/head * [new ref] refs/pull/16008/head -> refs/pull/16008/head * [new ref] refs/pull/16009/head -> refs/pull/16009/head * [new ref] refs/pull/16010/head -> refs/pull/16010/head * [new ref] refs/pull/16012/head -> refs/pull/16012/head * [new ref] refs/pull/16013/head -> refs/pull/16013/head * [new ref] refs/pull/16014/head -> refs/pull/16014/head * [new ref] refs/pull/16016/head -> refs/pull/16016/head * [new ref] refs/pull/16017/head -> refs/pull/16017/head * [new ref] refs/pull/16019/head -> refs/pull/16019/head * [new ref] refs/pull/16020/head -> refs/pull/16020/head * [new ref] refs/pull/16021/head -> refs/pull/16021/head * [new ref] refs/pull/16022/head -> refs/pull/16022/head * [new ref] refs/pull/16023/head -> refs/pull/16023/head * [new ref] refs/pull/16024/head -> refs/pull/16024/head * [new ref] refs/pull/16025/head -> refs/pull/16025/head * [new ref] refs/pull/16027/head -> refs/pull/16027/head * [new ref] refs/pull/16028/head -> refs/pull/16028/head * [new ref] refs/pull/16029/head -> refs/pull/16029/head * [new ref] refs/pull/16030/head -> refs/pull/16030/head * [new ref] refs/pull/16032/head -> refs/pull/16032/head * [new ref] refs/pull/16033/head -> refs/pull/16033/head * [new ref] refs/pull/16034/head -> refs/pull/16034/head * [new ref] refs/pull/16035/head -> refs/pull/16035/head * [new ref] refs/pull/16036/head -> refs/pull/16036/head * [new ref] refs/pull/16037/head -> refs/pull/16037/head * [new ref] refs/pull/16038/head -> refs/pull/16038/head * [new ref] refs/pull/16039/head -> refs/pull/16039/head * [new ref] refs/pull/16040/head -> refs/pull/16040/head * [new ref] refs/pull/16041/head -> refs/pull/16041/head * [new ref] refs/pull/16042/head -> refs/pull/16042/head * [new ref] refs/pull/16043/head -> refs/pull/16043/head * [new ref] refs/pull/16044/head -> refs/pull/16044/head * [new ref] refs/pull/16045/head -> refs/pull/16045/head * [new ref] refs/pull/16046/head -> refs/pull/16046/head * [new ref] refs/pull/16048/head -> refs/pull/16048/head * [new ref] refs/pull/16049/head -> refs/pull/16049/head * [new ref] refs/pull/16050/head -> refs/pull/16050/head * [new ref] refs/pull/16051/head -> refs/pull/16051/head * [new ref] refs/pull/16052/head -> refs/pull/16052/head * [new ref] refs/pull/16053/head -> refs/pull/16053/head * [new ref] refs/pull/16054/head -> refs/pull/16054/head * [new ref] refs/pull/16056/head -> refs/pull/16056/head * [new ref] refs/pull/16057/head -> refs/pull/16057/head * [new ref] refs/pull/16058/head -> refs/pull/16058/head * [new ref] refs/pull/16059/head -> refs/pull/16059/head * [new ref] refs/pull/16062/head -> refs/pull/16062/head * [new ref] refs/pull/16063/head -> refs/pull/16063/head * [new ref] refs/pull/16064/head -> refs/pull/16064/head * [new ref] refs/pull/16066/head -> refs/pull/16066/head * [new ref] refs/pull/16067/head -> refs/pull/16067/head * [new ref] refs/pull/16068/head -> refs/pull/16068/head * [new ref] refs/pull/16069/head -> refs/pull/16069/head * [new ref] refs/pull/16071/head -> refs/pull/16071/head * [new ref] refs/pull/16073/head -> refs/pull/16073/head * [new ref] refs/pull/16075/head -> refs/pull/16075/head * [new ref] refs/pull/16077/head -> refs/pull/16077/head * [new ref] refs/pull/16078/head -> refs/pull/16078/head * [new ref] refs/pull/16079/head -> refs/pull/16079/head * [new ref] refs/pull/16081/head -> refs/pull/16081/head * [new ref] refs/pull/16082/head -> refs/pull/16082/head * [new ref] refs/pull/16085/head -> refs/pull/16085/head * [new ref] refs/pull/16086/head -> refs/pull/16086/head * [new ref] refs/pull/16087/head -> refs/pull/16087/head * [new ref] refs/pull/16088/head -> refs/pull/16088/head * [new ref] refs/pull/16089/head -> refs/pull/16089/head * [new ref] refs/pull/16090/head -> refs/pull/16090/head * [new ref] refs/pull/16091/head -> refs/pull/16091/head * [new ref] refs/pull/16092/head -> refs/pull/16092/head * [new ref] refs/pull/16093/head -> refs/pull/16093/head * [new ref] refs/pull/16094/head -> refs/pull/16094/head * [new ref] refs/pull/16095/head -> refs/pull/16095/head * [new ref] refs/pull/16096/head -> refs/pull/16096/head * [new ref] refs/pull/16097/head -> refs/pull/16097/head * [new ref] refs/pull/16098/head -> refs/pull/16098/head * [new ref] refs/pull/16099/head -> refs/pull/16099/head * [new ref] refs/pull/16100/head -> refs/pull/16100/head * [new ref] refs/pull/16101/head -> refs/pull/16101/head * [new ref] refs/pull/16102/head -> refs/pull/16102/head * [new ref] refs/pull/16103/head -> refs/pull/16103/head * [new ref] refs/pull/16104/head -> refs/pull/16104/head * [new ref] refs/pull/16105/head -> refs/pull/16105/head * [new ref] refs/pull/16107/head -> refs/pull/16107/head * [new ref] refs/pull/16108/head -> refs/pull/16108/head * [new ref] refs/pull/16109/head -> refs/pull/16109/head * [new ref] refs/pull/16110/head -> refs/pull/16110/head * [new ref] refs/pull/16111/head -> refs/pull/16111/head * [new ref] refs/pull/16113/head -> refs/pull/16113/head * [new ref] refs/pull/16114/head -> refs/pull/16114/head * [new ref] refs/pull/16115/head -> refs/pull/16115/head * [new ref] refs/pull/16116/head -> refs/pull/16116/head * [new ref] refs/pull/16117/head -> refs/pull/16117/head * [new ref] refs/pull/16118/head -> refs/pull/16118/head * [new ref] refs/pull/16120/head -> refs/pull/16120/head * [new ref] refs/pull/16121/head -> refs/pull/16121/head * [new ref] refs/pull/16122/head -> refs/pull/16122/head * [new ref] refs/pull/16123/head -> refs/pull/16123/head * [new ref] refs/pull/16126/head -> refs/pull/16126/head * [new ref] refs/pull/16127/head -> refs/pull/16127/head * [new ref] refs/pull/16129/head -> refs/pull/16129/head * [new ref] refs/pull/16131/head -> refs/pull/16131/head * [new ref] refs/pull/16132/head -> refs/pull/16132/head * [new ref] refs/pull/16133/head -> refs/pull/16133/head * [new ref] refs/pull/16134/head -> refs/pull/16134/head * [new ref] refs/pull/16136/head -> refs/pull/16136/head * [new ref] refs/pull/16137/head -> refs/pull/16137/head * [new ref] refs/pull/16138/head -> refs/pull/16138/head * [new ref] refs/pull/16140/head -> refs/pull/16140/head * [new ref] refs/pull/16141/head -> refs/pull/16141/head * [new ref] refs/pull/16142/head -> refs/pull/16142/head * [new ref] refs/pull/16144/head -> refs/pull/16144/head * [new ref] refs/pull/16146/head -> refs/pull/16146/head * [new ref] refs/pull/16149/head -> refs/pull/16149/head * [new ref] refs/pull/16150/head -> refs/pull/16150/head * [new ref] refs/pull/16151/head -> refs/pull/16151/head * [new ref] refs/pull/16152/head -> refs/pull/16152/head * [new ref] refs/pull/16153/head -> refs/pull/16153/head * [new ref] refs/pull/16156/head -> refs/pull/16156/head * [new ref] refs/pull/16157/head -> refs/pull/16157/head * [new ref] refs/pull/16158/head -> refs/pull/16158/head * [new ref] refs/pull/16159/head -> refs/pull/16159/head * [new ref] refs/pull/16162/head -> refs/pull/16162/head * [new ref] refs/pull/16164/head -> refs/pull/16164/head * [new ref] refs/pull/16165/head -> refs/pull/16165/head * [new ref] refs/pull/16167/head -> refs/pull/16167/head * [new ref] refs/pull/16168/head -> refs/pull/16168/head * [new ref] refs/pull/16169/head -> refs/pull/16169/head * [new ref] refs/pull/16170/head -> refs/pull/16170/head * [new ref] refs/pull/16171/head -> refs/pull/16171/head * [new ref] refs/pull/16172/head -> refs/pull/16172/head * [new ref] refs/pull/16173/head -> refs/pull/16173/head * [new ref] refs/pull/16175/head -> refs/pull/16175/head * [new ref] refs/pull/16176/head -> refs/pull/16176/head * [new ref] refs/pull/16177/head -> refs/pull/16177/head * [new ref] refs/pull/16178/head -> refs/pull/16178/head * [new ref] refs/pull/16179/head -> refs/pull/16179/head * [new ref] refs/pull/16181/head -> refs/pull/16181/head * [new ref] refs/pull/16182/head -> refs/pull/16182/head * [new ref] refs/pull/16183/head -> refs/pull/16183/head * [new ref] refs/pull/16185/head -> refs/pull/16185/head * [new ref] refs/pull/16187/head -> refs/pull/16187/head * [new ref] refs/pull/16188/head -> refs/pull/16188/head * [new ref] refs/pull/16190/head -> refs/pull/16190/head * [new ref] refs/pull/16191/head -> refs/pull/16191/head * [new ref] refs/pull/16194/head -> refs/pull/16194/head * [new ref] refs/pull/16195/head -> refs/pull/16195/head * [new ref] refs/pull/16196/head -> refs/pull/16196/head * [new ref] refs/pull/16198/head -> refs/pull/16198/head * [new ref] refs/pull/16199/head -> refs/pull/16199/head * [new ref] refs/pull/16200/head -> refs/pull/16200/head * [new ref] refs/pull/16202/head -> refs/pull/16202/head * [new ref] refs/pull/16203/head -> refs/pull/16203/head * [new ref] refs/pull/16204/head -> refs/pull/16204/head * [new ref] refs/pull/16205/head -> refs/pull/16205/head * [new ref] refs/pull/16206/head -> refs/pull/16206/head * [new ref] refs/pull/16207/head -> refs/pull/16207/head * [new ref] refs/pull/16208/head -> refs/pull/16208/head * [new ref] refs/pull/16210/head -> refs/pull/16210/head * [new ref] refs/pull/16211/head -> refs/pull/16211/head * [new ref] refs/pull/16212/head -> refs/pull/16212/head * [new ref] refs/pull/16213/head -> refs/pull/16213/head * [new ref] refs/pull/16215/head -> refs/pull/16215/head * [new ref] refs/pull/16217/head -> refs/pull/16217/head * [new ref] refs/pull/16219/head -> refs/pull/16219/head * [new ref] refs/pull/16220/head -> refs/pull/16220/head * [new ref] refs/pull/16221/head -> refs/pull/16221/head * [new ref] refs/pull/16222/head -> refs/pull/16222/head * [new ref] refs/pull/16223/head -> refs/pull/16223/head * [new ref] refs/pull/16224/head -> refs/pull/16224/head * [new ref] refs/pull/16225/head -> refs/pull/16225/head * [new ref] refs/pull/16226/head -> refs/pull/16226/head * [new ref] refs/pull/16227/head -> refs/pull/16227/head * [new ref] refs/pull/16228/head -> refs/pull/16228/head * [new ref] refs/pull/16230/head -> refs/pull/16230/head * [new ref] refs/pull/16231/head -> refs/pull/16231/head * [new ref] refs/pull/16233/head -> refs/pull/16233/head * [new ref] refs/pull/16234/head -> refs/pull/16234/head * [new ref] refs/pull/16235/head -> refs/pull/16235/head * [new ref] refs/pull/16238/head -> refs/pull/16238/head * [new ref] refs/pull/16239/head -> refs/pull/16239/head * [new ref] refs/pull/16240/head -> refs/pull/16240/head * [new ref] refs/pull/16241/head -> refs/pull/16241/head * [new ref] refs/pull/16242/head -> refs/pull/16242/head * [new ref] refs/pull/16243/head -> refs/pull/16243/head * [new ref] refs/pull/16244/head -> refs/pull/16244/head * [new ref] refs/pull/16245/head -> refs/pull/16245/head * [new ref] refs/pull/16247/head -> refs/pull/16247/head * [new ref] refs/pull/16248/head -> refs/pull/16248/head * [new ref] refs/pull/16251/head -> refs/pull/16251/head * [new ref] refs/pull/16252/head -> refs/pull/16252/head * [new ref] refs/pull/16256/head -> refs/pull/16256/head * [new ref] refs/pull/16257/head -> refs/pull/16257/head * [new ref] refs/pull/16258/head -> refs/pull/16258/head * [new ref] refs/pull/16260/head -> refs/pull/16260/head * [new ref] refs/pull/16261/head -> refs/pull/16261/head * [new ref] refs/pull/16262/head -> refs/pull/16262/head * [new ref] refs/pull/16263/head -> refs/pull/16263/head * [new ref] refs/pull/16265/head -> refs/pull/16265/head * [new ref] refs/pull/16266/head -> refs/pull/16266/head * [new ref] refs/pull/16268/head -> refs/pull/16268/head * [new ref] refs/pull/16270/head -> refs/pull/16270/head * [new ref] refs/pull/16271/head -> refs/pull/16271/head * [new ref] refs/pull/16272/head -> refs/pull/16272/head * [new ref] refs/pull/16273/head -> refs/pull/16273/head * [new ref] refs/pull/16274/head -> refs/pull/16274/head * [new ref] refs/pull/16275/head -> refs/pull/16275/head * [new ref] refs/pull/16277/head -> refs/pull/16277/head * [new ref] refs/pull/16278/head -> refs/pull/16278/head * [new ref] refs/pull/16279/head -> refs/pull/16279/head * [new ref] refs/pull/16281/head -> refs/pull/16281/head * [new ref] refs/pull/16282/head -> refs/pull/16282/head * [new ref] refs/pull/16283/head -> refs/pull/16283/head * [new ref] refs/pull/16284/head -> refs/pull/16284/head * [new ref] refs/pull/16286/head -> refs/pull/16286/head * [new ref] refs/pull/16287/head -> refs/pull/16287/head * [new ref] refs/pull/16289/head -> refs/pull/16289/head * [new ref] refs/pull/16291/head -> refs/pull/16291/head * [new ref] refs/pull/16292/head -> refs/pull/16292/head * [new ref] refs/pull/16293/head -> refs/pull/16293/head * [new ref] refs/pull/16294/head -> refs/pull/16294/head * [new ref] refs/pull/16295/head -> refs/pull/16295/head * [new ref] refs/pull/16296/head -> refs/pull/16296/head * [new ref] refs/pull/16297/head -> refs/pull/16297/head * [new ref] refs/pull/16299/head -> refs/pull/16299/head * [new ref] refs/pull/16300/head -> refs/pull/16300/head * [new ref] refs/pull/16301/head -> refs/pull/16301/head * [new ref] refs/pull/16302/head -> refs/pull/16302/head * [new ref] refs/pull/16303/head -> refs/pull/16303/head * [new ref] refs/pull/16305/head -> refs/pull/16305/head * [new ref] refs/pull/16306/head -> refs/pull/16306/head * [new ref] refs/pull/16307/head -> refs/pull/16307/head * [new ref] refs/pull/16308/head -> refs/pull/16308/head * [new ref] refs/pull/16310/head -> refs/pull/16310/head * [new ref] refs/pull/16311/head -> refs/pull/16311/head * [new ref] refs/pull/16312/head -> refs/pull/16312/head * [new ref] refs/pull/16313/head -> refs/pull/16313/head * [new ref] refs/pull/16314/head -> refs/pull/16314/head * [new ref] refs/pull/16315/head -> refs/pull/16315/head * [new ref] refs/pull/16316/head -> refs/pull/16316/head * [new ref] refs/pull/16317/head -> refs/pull/16317/head * [new ref] refs/pull/16318/head -> refs/pull/16318/head * [new ref] refs/pull/16319/head -> refs/pull/16319/head * [new ref] refs/pull/16320/head -> refs/pull/16320/head * [new ref] refs/pull/16321/head -> refs/pull/16321/head * [new ref] refs/pull/16322/head -> refs/pull/16322/head * [new ref] refs/pull/16323/head -> refs/pull/16323/head * [new ref] refs/pull/16324/head -> refs/pull/16324/head * [new ref] refs/pull/16325/head -> refs/pull/16325/head * [new ref] refs/pull/16327/head -> refs/pull/16327/head * [new ref] refs/pull/16329/head -> refs/pull/16329/head * [new ref] refs/pull/16330/head -> refs/pull/16330/head * [new ref] refs/pull/16331/head -> refs/pull/16331/head * [new ref] refs/pull/16332/head -> refs/pull/16332/head * [new ref] refs/pull/16334/head -> refs/pull/16334/head * [new ref] refs/pull/16335/head -> refs/pull/16335/head * [new ref] refs/pull/16336/head -> refs/pull/16336/head * [new ref] refs/pull/16337/head -> refs/pull/16337/head * [new ref] refs/pull/16338/head -> refs/pull/16338/head * [new ref] refs/pull/16339/head -> refs/pull/16339/head * [new ref] refs/pull/16340/head -> refs/pull/16340/head * [new ref] refs/pull/16342/head -> refs/pull/16342/head * [new ref] refs/pull/16343/head -> refs/pull/16343/head * [new ref] refs/pull/16344/head -> refs/pull/16344/head * [new ref] refs/pull/16345/head -> refs/pull/16345/head * [new ref] refs/pull/16346/head -> refs/pull/16346/head * [new ref] refs/pull/16347/head -> refs/pull/16347/head * [new ref] refs/pull/16348/head -> refs/pull/16348/head * [new ref] refs/pull/16349/head -> refs/pull/16349/head * [new ref] refs/pull/16350/head -> refs/pull/16350/head * [new ref] refs/pull/16351/head -> refs/pull/16351/head * [new ref] refs/pull/16352/head -> refs/pull/16352/head * [new ref] refs/pull/16353/head -> refs/pull/16353/head * [new ref] refs/pull/16354/head -> refs/pull/16354/head * [new ref] refs/pull/16355/head -> refs/pull/16355/head * [new ref] refs/pull/16356/head -> refs/pull/16356/head * [new ref] refs/pull/16358/head -> refs/pull/16358/head * [new ref] refs/pull/16359/head -> refs/pull/16359/head * [new ref] refs/pull/16360/head -> refs/pull/16360/head * [new ref] refs/pull/16362/head -> refs/pull/16362/head * [new ref] refs/pull/16363/head -> refs/pull/16363/head * [new ref] refs/pull/16365/head -> refs/pull/16365/head * [new ref] refs/pull/16366/head -> refs/pull/16366/head * [new ref] refs/pull/16367/head -> refs/pull/16367/head * [new ref] refs/pull/16368/head -> refs/pull/16368/head * [new ref] refs/pull/16369/head -> refs/pull/16369/head * [new ref] refs/pull/16370/head -> refs/pull/16370/head * [new ref] refs/pull/16372/head -> refs/pull/16372/head * [new ref] refs/pull/16373/head -> refs/pull/16373/head * [new ref] refs/pull/16374/head -> refs/pull/16374/head * [new ref] refs/pull/16376/head -> refs/pull/16376/head * [new ref] refs/pull/16377/head -> refs/pull/16377/head * [new ref] refs/pull/16381/head -> refs/pull/16381/head * [new ref] refs/pull/16382/head -> refs/pull/16382/head * [new ref] refs/pull/16383/head -> refs/pull/16383/head * [new ref] refs/pull/16385/head -> refs/pull/16385/head * [new ref] refs/pull/16386/head -> refs/pull/16386/head * [new ref] refs/pull/16387/head -> refs/pull/16387/head * [new ref] refs/pull/16388/head -> refs/pull/16388/head * [new ref] refs/pull/16391/head -> refs/pull/16391/head * [new ref] refs/pull/16392/head -> refs/pull/16392/head * [new ref] refs/pull/16393/head -> refs/pull/16393/head * [new ref] refs/pull/16394/head -> refs/pull/16394/head * [new ref] refs/pull/16397/head -> refs/pull/16397/head * [new ref] refs/pull/16398/head -> refs/pull/16398/head * [new ref] refs/pull/16400/head -> refs/pull/16400/head * [new ref] refs/pull/16401/head -> refs/pull/16401/head * [new ref] refs/pull/16402/head -> refs/pull/16402/head * [new ref] refs/pull/16403/head -> refs/pull/16403/head * [new ref] refs/pull/16404/head -> refs/pull/16404/head * [new ref] refs/pull/16406/head -> refs/pull/16406/head * [new ref] refs/pull/16407/head -> refs/pull/16407/head * [new ref] refs/pull/16408/head -> refs/pull/16408/head * [new ref] refs/pull/16409/head -> refs/pull/16409/head * [new ref] refs/pull/16410/head -> refs/pull/16410/head * [new ref] refs/pull/16411/head -> refs/pull/16411/head * [new ref] refs/pull/16413/head -> refs/pull/16413/head * [new ref] refs/pull/16415/head -> refs/pull/16415/head * [new ref] refs/pull/16416/head -> refs/pull/16416/head * [new ref] refs/pull/16417/head -> refs/pull/16417/head * [new ref] refs/pull/16419/head -> refs/pull/16419/head * [new ref] refs/pull/16420/head -> refs/pull/16420/head * [new ref] refs/pull/16421/head -> refs/pull/16421/head * [new ref] refs/pull/16422/head -> refs/pull/16422/head * [new ref] refs/pull/16423/head -> refs/pull/16423/head * [new ref] refs/pull/16424/head -> refs/pull/16424/head * [new ref] refs/pull/16425/head -> refs/pull/16425/head * [new ref] refs/pull/16426/head -> refs/pull/16426/head * [new ref] refs/pull/16427/head -> refs/pull/16427/head * [new ref] refs/pull/16428/head -> refs/pull/16428/head * [new ref] refs/pull/16429/head -> refs/pull/16429/head * [new ref] refs/pull/16430/head -> refs/pull/16430/head * [new ref] refs/pull/16431/head -> refs/pull/16431/head * [new ref] refs/pull/16434/head -> refs/pull/16434/head * [new ref] refs/pull/16435/head -> refs/pull/16435/head * [new ref] refs/pull/16436/head -> refs/pull/16436/head * [new ref] refs/pull/16438/head -> refs/pull/16438/head * [new ref] refs/pull/16440/head -> refs/pull/16440/head * [new ref] refs/pull/16441/head -> refs/pull/16441/head * [new ref] refs/pull/16442/head -> refs/pull/16442/head * [new ref] refs/pull/16443/head -> refs/pull/16443/head * [new ref] refs/pull/16444/head -> refs/pull/16444/head * [new ref] refs/pull/16446/head -> refs/pull/16446/head * [new ref] refs/pull/16447/head -> refs/pull/16447/head * [new ref] refs/pull/16448/head -> refs/pull/16448/head * [new ref] refs/pull/16449/head -> refs/pull/16449/head * [new ref] refs/pull/16450/head -> refs/pull/16450/head * [new ref] refs/pull/16451/head -> refs/pull/16451/head * [new ref] refs/pull/16452/head -> refs/pull/16452/head * [new ref] refs/pull/16453/head -> refs/pull/16453/head * [new ref] refs/pull/16454/head -> refs/pull/16454/head * [new ref] refs/pull/16455/head -> refs/pull/16455/head * [new ref] refs/pull/16456/head -> refs/pull/16456/head * [new ref] refs/pull/16457/head -> refs/pull/16457/head * [new ref] refs/pull/16458/head -> refs/pull/16458/head * [new ref] refs/pull/16459/head -> refs/pull/16459/head * [new ref] refs/pull/16460/head -> refs/pull/16460/head * [new ref] refs/pull/16461/head -> refs/pull/16461/head * [new ref] refs/pull/16463/head -> refs/pull/16463/head * [new ref] refs/pull/16464/head -> refs/pull/16464/head * [new ref] refs/pull/16465/head -> refs/pull/16465/head * [new ref] refs/pull/16466/head -> refs/pull/16466/head * [new ref] refs/pull/16467/head -> refs/pull/16467/head * [new ref] refs/pull/16469/head -> refs/pull/16469/head * [new ref] refs/pull/16471/head -> refs/pull/16471/head * [new ref] refs/pull/16472/head -> refs/pull/16472/head * [new ref] refs/pull/16473/head -> refs/pull/16473/head * [new ref] refs/pull/16475/head -> refs/pull/16475/head * [new ref] refs/pull/16476/head -> refs/pull/16476/head * [new ref] refs/pull/16477/head -> refs/pull/16477/head * [new ref] refs/pull/16478/head -> refs/pull/16478/head * [new ref] refs/pull/16479/head -> refs/pull/16479/head * [new ref] refs/pull/16480/head -> refs/pull/16480/head * [new ref] refs/pull/16481/head -> refs/pull/16481/head * [new ref] refs/pull/16482/head -> refs/pull/16482/head * [new ref] refs/pull/16484/head -> refs/pull/16484/head * [new ref] refs/pull/16485/head -> refs/pull/16485/head * [new ref] refs/pull/16487/head -> refs/pull/16487/head * [new ref] refs/pull/16488/head -> refs/pull/16488/head * [new ref] refs/pull/16489/head -> refs/pull/16489/head * [new ref] refs/pull/16490/head -> refs/pull/16490/head * [new ref] refs/pull/16491/head -> refs/pull/16491/head * [new ref] refs/pull/16492/head -> refs/pull/16492/head * [new ref] refs/pull/16493/head -> refs/pull/16493/head * [new ref] refs/pull/16494/head -> refs/pull/16494/head * [new ref] refs/pull/16495/head -> refs/pull/16495/head * [new ref] refs/pull/16496/head -> refs/pull/16496/head * [new ref] refs/pull/16498/head -> refs/pull/16498/head * [new ref] refs/pull/16499/head -> refs/pull/16499/head * [new ref] refs/pull/16500/head -> refs/pull/16500/head * [new ref] refs/pull/16501/head -> refs/pull/16501/head * [new ref] refs/pull/16502/head -> refs/pull/16502/head * [new ref] refs/pull/16503/head -> refs/pull/16503/head * [new ref] refs/pull/16504/head -> refs/pull/16504/head * [new ref] refs/pull/16505/head -> refs/pull/16505/head * [new ref] refs/pull/16506/head -> refs/pull/16506/head * [new ref] refs/pull/16507/head -> refs/pull/16507/head * [new ref] refs/pull/16508/head -> refs/pull/16508/head * [new ref] refs/pull/16509/head -> refs/pull/16509/head * [new ref] refs/pull/16510/head -> refs/pull/16510/head * [new ref] refs/pull/16511/head -> refs/pull/16511/head * [new ref] refs/pull/16512/head -> refs/pull/16512/head * [new ref] refs/pull/16513/head -> refs/pull/16513/head * [new ref] refs/pull/16514/head -> refs/pull/16514/head * [new ref] refs/pull/16515/head -> refs/pull/16515/head * [new ref] refs/pull/16516/head -> refs/pull/16516/head * [new ref] refs/pull/16517/head -> refs/pull/16517/head * [new ref] refs/pull/16518/head -> refs/pull/16518/head * [new ref] refs/pull/16519/head -> refs/pull/16519/head * [new ref] refs/pull/16520/head -> refs/pull/16520/head * [new ref] refs/pull/16521/head -> refs/pull/16521/head * [new ref] refs/pull/16522/head -> refs/pull/16522/head * [new ref] refs/pull/16523/head -> refs/pull/16523/head * [new ref] refs/pull/16524/head -> refs/pull/16524/head * [new ref] refs/pull/16525/head -> refs/pull/16525/head * [new ref] refs/pull/16527/head -> refs/pull/16527/head * [new ref] refs/pull/16528/head -> refs/pull/16528/head * [new ref] refs/pull/16530/head -> refs/pull/16530/head * [new ref] refs/pull/16532/head -> refs/pull/16532/head * [new ref] refs/pull/16534/head -> refs/pull/16534/head * [new ref] refs/pull/16536/head -> refs/pull/16536/head * [new ref] refs/pull/16537/head -> refs/pull/16537/head * [new ref] refs/pull/16538/head -> refs/pull/16538/head * [new ref] refs/pull/16539/head -> refs/pull/16539/head * [new ref] refs/pull/16540/head -> refs/pull/16540/head * [new ref] refs/pull/16541/head -> refs/pull/16541/head * [new ref] refs/pull/16542/head -> refs/pull/16542/head * [new ref] refs/pull/16543/head -> refs/pull/16543/head * [new ref] refs/pull/16543/merge -> refs/pull/16543/merge * [new ref] refs/pull/16544/head -> refs/pull/16544/head * [new ref] refs/pull/16545/head -> refs/pull/16545/head * [new ref] refs/pull/16546/head -> refs/pull/16546/head * [new ref] refs/pull/16547/head -> refs/pull/16547/head * [new ref] refs/pull/16548/head -> refs/pull/16548/head * [new ref] refs/pull/16550/head -> refs/pull/16550/head * [new ref] refs/pull/16552/head -> refs/pull/16552/head * [new ref] refs/pull/16553/head -> refs/pull/16553/head * [new ref] refs/pull/16555/head -> refs/pull/16555/head * [new ref] refs/pull/16557/head -> refs/pull/16557/head * [new ref] refs/pull/16558/head -> refs/pull/16558/head * [new ref] refs/pull/16559/head -> refs/pull/16559/head * [new ref] refs/pull/16560/head -> refs/pull/16560/head * [new ref] refs/pull/16561/head -> refs/pull/16561/head * [new ref] refs/pull/16563/head -> refs/pull/16563/head * [new ref] refs/pull/16564/head -> refs/pull/16564/head * [new ref] refs/pull/16565/head -> refs/pull/16565/head * [new ref] refs/pull/16566/head -> refs/pull/16566/head * [new ref] refs/pull/16567/head -> refs/pull/16567/head * [new ref] refs/pull/16568/head -> refs/pull/16568/head * [new ref] refs/pull/16569/head -> refs/pull/16569/head * [new ref] refs/pull/16570/head -> refs/pull/16570/head * [new ref] refs/pull/16571/head -> refs/pull/16571/head * [new ref] refs/pull/16572/head -> refs/pull/16572/head * [new ref] refs/pull/16573/head -> refs/pull/16573/head * [new ref] refs/pull/16574/head -> refs/pull/16574/head * [new ref] refs/pull/16576/head -> refs/pull/16576/head * [new ref] refs/pull/16577/head -> refs/pull/16577/head * [new ref] refs/pull/16578/head -> refs/pull/16578/head * [new ref] refs/pull/16579/head -> refs/pull/16579/head * [new ref] refs/pull/16580/head -> refs/pull/16580/head * [new ref] refs/pull/16581/head -> refs/pull/16581/head * [new ref] refs/pull/16582/head -> refs/pull/16582/head * [new ref] refs/pull/16583/head -> refs/pull/16583/head * [new ref] refs/pull/16584/head -> refs/pull/16584/head * [new ref] refs/pull/16585/head -> refs/pull/16585/head * [new ref] refs/pull/16586/head -> refs/pull/16586/head * [new ref] refs/pull/16587/head -> refs/pull/16587/head * [new ref] refs/pull/16588/head -> refs/pull/16588/head * [new ref] refs/pull/16589/head -> refs/pull/16589/head * [new ref] refs/pull/16590/head -> refs/pull/16590/head * [new ref] refs/pull/16591/head -> refs/pull/16591/head * [new ref] refs/pull/16592/head -> refs/pull/16592/head * [new ref] refs/pull/16593/head -> refs/pull/16593/head * [new ref] refs/pull/16594/head -> refs/pull/16594/head * [new ref] refs/pull/16595/head -> refs/pull/16595/head * [new ref] refs/pull/16596/head -> refs/pull/16596/head * [new ref] refs/pull/16598/head -> refs/pull/16598/head * [new ref] refs/pull/16599/head -> refs/pull/16599/head * [new ref] refs/pull/16600/head -> refs/pull/16600/head * [new ref] refs/pull/16601/head -> refs/pull/16601/head * [new ref] refs/pull/16602/head -> refs/pull/16602/head * [new ref] refs/pull/16604/head -> refs/pull/16604/head * [new ref] refs/pull/16605/head -> refs/pull/16605/head * [new ref] refs/pull/16606/head -> refs/pull/16606/head * [new ref] refs/pull/16607/head -> refs/pull/16607/head * [new ref] refs/pull/16608/head -> refs/pull/16608/head * [new ref] refs/pull/16609/head -> refs/pull/16609/head * [new ref] refs/pull/16610/head -> refs/pull/16610/head * [new ref] refs/pull/16611/head -> refs/pull/16611/head * [new ref] refs/pull/16612/head -> refs/pull/16612/head * [new ref] refs/pull/16613/head -> refs/pull/16613/head * [new ref] refs/pull/16614/head -> refs/pull/16614/head * [new ref] refs/pull/16615/head -> refs/pull/16615/head * [new ref] refs/pull/16616/head -> refs/pull/16616/head * [new ref] refs/pull/16617/head -> refs/pull/16617/head * [new ref] refs/pull/16618/head -> refs/pull/16618/head * [new ref] refs/pull/16619/head -> refs/pull/16619/head * [new ref] refs/pull/16620/head -> refs/pull/16620/head * [new ref] refs/pull/16621/head -> refs/pull/16621/head * [new ref] refs/pull/16622/head -> refs/pull/16622/head * [new ref] refs/pull/16623/head -> refs/pull/16623/head * [new ref] refs/pull/16625/head -> refs/pull/16625/head * [new ref] refs/pull/16626/head -> refs/pull/16626/head * [new ref] refs/pull/16627/head -> refs/pull/16627/head * [new ref] refs/pull/16628/head -> refs/pull/16628/head * [new ref] refs/pull/16629/head -> refs/pull/16629/head * [new ref] refs/pull/16630/head -> refs/pull/16630/head * [new ref] refs/pull/16632/head -> refs/pull/16632/head * [new ref] refs/pull/16634/head -> refs/pull/16634/head * [new ref] refs/pull/16635/head -> refs/pull/16635/head * [new ref] refs/pull/16636/head -> refs/pull/16636/head * [new ref] refs/pull/16639/head -> refs/pull/16639/head * [new ref] refs/pull/16640/head -> refs/pull/16640/head * [new ref] refs/pull/16641/head -> refs/pull/16641/head * [new ref] refs/pull/16642/head -> refs/pull/16642/head * [new ref] refs/pull/16643/head -> refs/pull/16643/head * [new ref] refs/pull/16643/merge -> refs/pull/16643/merge * [new ref] refs/pull/16644/head -> refs/pull/16644/head * [new ref] refs/pull/16646/head -> refs/pull/16646/head * [new ref] refs/pull/16647/head -> refs/pull/16647/head * [new ref] refs/pull/16648/head -> refs/pull/16648/head * [new ref] refs/pull/16649/head -> refs/pull/16649/head * [new ref] refs/pull/16650/head -> refs/pull/16650/head * [new ref] refs/pull/16651/head -> refs/pull/16651/head * [new ref] refs/pull/16652/head -> refs/pull/16652/head * [new ref] refs/pull/16653/head -> refs/pull/16653/head * [new ref] refs/pull/16655/head -> refs/pull/16655/head * [new ref] refs/pull/16656/head -> refs/pull/16656/head * [new ref] refs/pull/16657/head -> refs/pull/16657/head * [new ref] refs/pull/16658/head -> refs/pull/16658/head * [new ref] refs/pull/16659/head -> refs/pull/16659/head * [new ref] refs/pull/16660/head -> refs/pull/16660/head * [new ref] refs/pull/16662/head -> refs/pull/16662/head * [new ref] refs/pull/16663/head -> refs/pull/16663/head * [new ref] refs/pull/16664/head -> refs/pull/16664/head * [new ref] refs/pull/16665/head -> refs/pull/16665/head * [new ref] refs/pull/16666/head -> refs/pull/16666/head * [new ref] refs/pull/16667/head -> refs/pull/16667/head * [new ref] refs/pull/16668/head -> refs/pull/16668/head * [new ref] refs/pull/16669/head -> refs/pull/16669/head * [new ref] refs/pull/16670/head -> refs/pull/16670/head * [new ref] refs/pull/16671/head -> refs/pull/16671/head * [new ref] refs/pull/16672/head -> refs/pull/16672/head * [new ref] refs/pull/16673/head -> refs/pull/16673/head * [new ref] refs/pull/16674/head -> refs/pull/16674/head * [new ref] refs/pull/16677/head -> refs/pull/16677/head * [new ref] refs/pull/16678/head -> refs/pull/16678/head * [new ref] refs/pull/16679/head -> refs/pull/16679/head * [new ref] refs/pull/16681/head -> refs/pull/16681/head * [new ref] refs/pull/16682/head -> refs/pull/16682/head * [new ref] refs/pull/16683/head -> refs/pull/16683/head * [new ref] refs/pull/16684/head -> refs/pull/16684/head * [new ref] refs/pull/16685/head -> refs/pull/16685/head * [new ref] refs/pull/16687/head -> refs/pull/16687/head * [new ref] refs/pull/16688/head -> refs/pull/16688/head * [new ref] refs/pull/16689/head -> refs/pull/16689/head * [new ref] refs/pull/16690/head -> refs/pull/16690/head * [new ref] refs/pull/16691/head -> refs/pull/16691/head * [new ref] refs/pull/16694/head -> refs/pull/16694/head * [new ref] refs/pull/16695/head -> refs/pull/16695/head * [new ref] refs/pull/16696/head -> refs/pull/16696/head * [new ref] refs/pull/16697/head -> refs/pull/16697/head * [new ref] refs/pull/16698/head -> refs/pull/16698/head * [new ref] refs/pull/16699/head -> refs/pull/16699/head * [new ref] refs/pull/16700/head -> refs/pull/16700/head * [new ref] refs/pull/16701/head -> refs/pull/16701/head * [new ref] refs/pull/16703/head -> refs/pull/16703/head * [new ref] refs/pull/16704/head -> refs/pull/16704/head * [new ref] refs/pull/16705/head -> refs/pull/16705/head * [new ref] refs/pull/16708/head -> refs/pull/16708/head * [new ref] refs/pull/16709/head -> refs/pull/16709/head * [new ref] refs/pull/16710/head -> refs/pull/16710/head * [new ref] refs/pull/16711/head -> refs/pull/16711/head * [new ref] refs/pull/16712/head -> refs/pull/16712/head * [new ref] refs/pull/16713/head -> refs/pull/16713/head * [new ref] refs/pull/16714/head -> refs/pull/16714/head * [new ref] refs/pull/16716/head -> refs/pull/16716/head * [new ref] refs/pull/16717/head -> refs/pull/16717/head * [new ref] refs/pull/16719/head -> refs/pull/16719/head * [new ref] refs/pull/16720/head -> refs/pull/16720/head * [new ref] refs/pull/16722/head -> refs/pull/16722/head * [new ref] refs/pull/16723/head -> refs/pull/16723/head * [new ref] refs/pull/16724/head -> refs/pull/16724/head * [new ref] refs/pull/16726/head -> refs/pull/16726/head * [new ref] refs/pull/16727/head -> refs/pull/16727/head * [new ref] refs/pull/16728/head -> refs/pull/16728/head * [new ref] refs/pull/16729/head -> refs/pull/16729/head * [new ref] refs/pull/16731/head -> refs/pull/16731/head * [new ref] refs/pull/16733/head -> refs/pull/16733/head * [new ref] refs/pull/16734/head -> refs/pull/16734/head * [new ref] refs/pull/16735/head -> refs/pull/16735/head * [new ref] refs/pull/16736/head -> refs/pull/16736/head * [new ref] refs/pull/16737/head -> refs/pull/16737/head * [new ref] refs/pull/16738/head -> refs/pull/16738/head * [new ref] refs/pull/16739/head -> refs/pull/16739/head * [new ref] refs/pull/16740/head -> refs/pull/16740/head * [new ref] refs/pull/16741/head -> refs/pull/16741/head * [new ref] refs/pull/16742/head -> refs/pull/16742/head * [new ref] refs/pull/16743/head -> refs/pull/16743/head * [new ref] refs/pull/16744/head -> refs/pull/16744/head * [new ref] refs/pull/16745/head -> refs/pull/16745/head * [new ref] refs/pull/16746/head -> refs/pull/16746/head * [new ref] refs/pull/16747/head -> refs/pull/16747/head * [new ref] refs/pull/16748/head -> refs/pull/16748/head * [new ref] refs/pull/16749/head -> refs/pull/16749/head * [new ref] refs/pull/16750/head -> refs/pull/16750/head * [new ref] refs/pull/16751/head -> refs/pull/16751/head * [new ref] refs/pull/16753/head -> refs/pull/16753/head * [new ref] refs/pull/16754/head -> refs/pull/16754/head * [new ref] refs/pull/16755/head -> refs/pull/16755/head * [new ref] refs/pull/16756/head -> refs/pull/16756/head * [new ref] refs/pull/16757/head -> refs/pull/16757/head * [new ref] refs/pull/16758/head -> refs/pull/16758/head * [new ref] refs/pull/16759/head -> refs/pull/16759/head * [new ref] refs/pull/16760/head -> refs/pull/16760/head * [new ref] refs/pull/16761/head -> refs/pull/16761/head * [new ref] refs/pull/16762/head -> refs/pull/16762/head * [new ref] refs/pull/16763/head -> refs/pull/16763/head * [new ref] refs/pull/16764/head -> refs/pull/16764/head * [new ref] refs/pull/16765/head -> refs/pull/16765/head * [new ref] refs/pull/16766/head -> refs/pull/16766/head * [new ref] refs/pull/16767/head -> refs/pull/16767/head * [new ref] refs/pull/16768/head -> refs/pull/16768/head * [new ref] refs/pull/16769/head -> refs/pull/16769/head * [new ref] refs/pull/16770/head -> refs/pull/16770/head * [new ref] refs/pull/16771/head -> refs/pull/16771/head * [new ref] refs/pull/16772/head -> refs/pull/16772/head * [new ref] refs/pull/16773/head -> refs/pull/16773/head * [new ref] refs/pull/16774/head -> refs/pull/16774/head * [new ref] refs/pull/16775/head -> refs/pull/16775/head * [new ref] refs/pull/16777/head -> refs/pull/16777/head * [new ref] refs/pull/16778/head -> refs/pull/16778/head * [new ref] refs/pull/16779/head -> refs/pull/16779/head * [new ref] refs/pull/16781/head -> refs/pull/16781/head * [new ref] refs/pull/16782/head -> refs/pull/16782/head * [new ref] refs/pull/16783/head -> refs/pull/16783/head * [new ref] refs/pull/16784/head -> refs/pull/16784/head * [new ref] refs/pull/16785/head -> refs/pull/16785/head * [new ref] refs/pull/16786/head -> refs/pull/16786/head * [new ref] refs/pull/16787/head -> refs/pull/16787/head * [new ref] refs/pull/16789/head -> refs/pull/16789/head * [new ref] refs/pull/16790/head -> refs/pull/16790/head * [new ref] refs/pull/16791/head -> refs/pull/16791/head * [new ref] refs/pull/16792/head -> refs/pull/16792/head * [new ref] refs/pull/16793/head -> refs/pull/16793/head * [new ref] refs/pull/16796/head -> refs/pull/16796/head * [new ref] refs/pull/16797/head -> refs/pull/16797/head * [new ref] refs/pull/16798/head -> refs/pull/16798/head * [new ref] refs/pull/16800/head -> refs/pull/16800/head * [new ref] refs/pull/16801/head -> refs/pull/16801/head * [new ref] refs/pull/16802/head -> refs/pull/16802/head * [new ref] refs/pull/16803/head -> refs/pull/16803/head * [new ref] refs/pull/16805/head -> refs/pull/16805/head * [new ref] refs/pull/16807/head -> refs/pull/16807/head * [new ref] refs/pull/16808/head -> refs/pull/16808/head * [new ref] refs/pull/16809/head -> refs/pull/16809/head * [new ref] refs/pull/16810/head -> refs/pull/16810/head * [new ref] refs/pull/16811/head -> refs/pull/16811/head * [new ref] refs/pull/16812/head -> refs/pull/16812/head * [new ref] refs/pull/16813/head -> refs/pull/16813/head * [new ref] refs/pull/16814/head -> refs/pull/16814/head * [new ref] refs/pull/16816/head -> refs/pull/16816/head * [new ref] refs/pull/16817/head -> refs/pull/16817/head * [new ref] refs/pull/16818/head -> refs/pull/16818/head * [new ref] refs/pull/16819/head -> refs/pull/16819/head * [new ref] refs/pull/16820/head -> refs/pull/16820/head * [new ref] refs/pull/16821/head -> refs/pull/16821/head * [new ref] refs/pull/16822/head -> refs/pull/16822/head * [new ref] refs/pull/16823/head -> refs/pull/16823/head * [new ref] refs/pull/16824/head -> refs/pull/16824/head * [new ref] refs/pull/16825/head -> refs/pull/16825/head * [new ref] refs/pull/16826/head -> refs/pull/16826/head * [new ref] refs/pull/16827/head -> refs/pull/16827/head * [new ref] refs/pull/16828/head -> refs/pull/16828/head * [new ref] refs/pull/16830/head -> refs/pull/16830/head * [new ref] refs/pull/16831/head -> refs/pull/16831/head * [new ref] refs/pull/16832/head -> refs/pull/16832/head * [new ref] refs/pull/16833/head -> refs/pull/16833/head * [new ref] refs/pull/16834/head -> refs/pull/16834/head * [new ref] refs/pull/16835/head -> refs/pull/16835/head * [new ref] refs/pull/16836/head -> refs/pull/16836/head * [new ref] refs/pull/16837/head -> refs/pull/16837/head * [new ref] refs/pull/16840/head -> refs/pull/16840/head * [new ref] refs/pull/16841/head -> refs/pull/16841/head * [new ref] refs/pull/16845/head -> refs/pull/16845/head * [new ref] refs/pull/16847/head -> refs/pull/16847/head * [new ref] refs/pull/16848/head -> refs/pull/16848/head * [new ref] refs/pull/16849/head -> refs/pull/16849/head * [new ref] refs/pull/16850/head -> refs/pull/16850/head * [new ref] refs/pull/16851/head -> refs/pull/16851/head * [new ref] refs/pull/16852/head -> refs/pull/16852/head * [new ref] refs/pull/16856/head -> refs/pull/16856/head * [new ref] refs/pull/16858/head -> refs/pull/16858/head * [new ref] refs/pull/16859/head -> refs/pull/16859/head * [new ref] refs/pull/16860/head -> refs/pull/16860/head * [new ref] refs/pull/16861/head -> refs/pull/16861/head * [new ref] refs/pull/16862/head -> refs/pull/16862/head * [new ref] refs/pull/16863/head -> refs/pull/16863/head * [new ref] refs/pull/16864/head -> refs/pull/16864/head * [new ref] refs/pull/16865/head -> refs/pull/16865/head * [new ref] refs/pull/16866/head -> refs/pull/16866/head * [new ref] refs/pull/16867/head -> refs/pull/16867/head * [new ref] refs/pull/16868/head -> refs/pull/16868/head * [new ref] refs/pull/16870/head -> refs/pull/16870/head * [new ref] refs/pull/16871/head -> refs/pull/16871/head * [new ref] refs/pull/16872/head -> refs/pull/16872/head * [new ref] refs/pull/16873/head -> refs/pull/16873/head * [new ref] refs/pull/16875/head -> refs/pull/16875/head * [new ref] refs/pull/16876/head -> refs/pull/16876/head * [new ref] refs/pull/16877/head -> refs/pull/16877/head * [new ref] refs/pull/16878/head -> refs/pull/16878/head * [new ref] refs/pull/16879/head -> refs/pull/16879/head * [new ref] refs/pull/16882/head -> refs/pull/16882/head * [new ref] refs/pull/16883/head -> refs/pull/16883/head * [new ref] refs/pull/16884/head -> refs/pull/16884/head * [new ref] refs/pull/16885/head -> refs/pull/16885/head * [new ref] refs/pull/16886/head -> refs/pull/16886/head * [new ref] refs/pull/16887/head -> refs/pull/16887/head * [new ref] refs/pull/16888/head -> refs/pull/16888/head * [new ref] refs/pull/16889/head -> refs/pull/16889/head * [new ref] refs/pull/16891/head -> refs/pull/16891/head * [new ref] refs/pull/16892/head -> refs/pull/16892/head * [new ref] refs/pull/16894/head -> refs/pull/16894/head * [new ref] refs/pull/16895/head -> refs/pull/16895/head * [new ref] refs/pull/16896/head -> refs/pull/16896/head * [new ref] refs/pull/16898/head -> refs/pull/16898/head * [new ref] refs/pull/16899/head -> refs/pull/16899/head * [new ref] refs/pull/16902/head -> refs/pull/16902/head * [new ref] refs/pull/16903/head -> refs/pull/16903/head * [new ref] refs/pull/16904/head -> refs/pull/16904/head * [new ref] refs/pull/16905/head -> refs/pull/16905/head * [new ref] refs/pull/16906/head -> refs/pull/16906/head * [new ref] refs/pull/16907/head -> refs/pull/16907/head * [new ref] refs/pull/16908/head -> refs/pull/16908/head * [new ref] refs/pull/16909/head -> refs/pull/16909/head * [new ref] refs/pull/16910/head -> refs/pull/16910/head * [new ref] refs/pull/16911/head -> refs/pull/16911/head * [new ref] refs/pull/16912/head -> refs/pull/16912/head * [new ref] refs/pull/16913/head -> refs/pull/16913/head * [new ref] refs/pull/16914/head -> refs/pull/16914/head * [new ref] refs/pull/16916/head -> refs/pull/16916/head * [new ref] refs/pull/16917/head -> refs/pull/16917/head * [new ref] refs/pull/16921/head -> refs/pull/16921/head * [new ref] refs/pull/16922/head -> refs/pull/16922/head * [new ref] refs/pull/16923/head -> refs/pull/16923/head * [new ref] refs/pull/16924/head -> refs/pull/16924/head * [new ref] refs/pull/16928/head -> refs/pull/16928/head * [new ref] refs/pull/16929/head -> refs/pull/16929/head * [new ref] refs/pull/16930/head -> refs/pull/16930/head * [new ref] refs/pull/16931/head -> refs/pull/16931/head * [new ref] refs/pull/16933/head -> refs/pull/16933/head * [new ref] refs/pull/16934/head -> refs/pull/16934/head * [new ref] refs/pull/16936/head -> refs/pull/16936/head * [new ref] refs/pull/16937/head -> refs/pull/16937/head * [new ref] refs/pull/16938/head -> refs/pull/16938/head * [new ref] refs/pull/16939/head -> refs/pull/16939/head * [new ref] refs/pull/16941/head -> refs/pull/16941/head * [new ref] refs/pull/16942/head -> refs/pull/16942/head * [new ref] refs/pull/16943/head -> refs/pull/16943/head * [new ref] refs/pull/16944/head -> refs/pull/16944/head * [new ref] refs/pull/16945/head -> refs/pull/16945/head * [new ref] refs/pull/16948/head -> refs/pull/16948/head * [new ref] refs/pull/16950/head -> refs/pull/16950/head * [new ref] refs/pull/16951/head -> refs/pull/16951/head * [new ref] refs/pull/16952/head -> refs/pull/16952/head * [new ref] refs/pull/16953/head -> refs/pull/16953/head * [new ref] refs/pull/16954/head -> refs/pull/16954/head * [new ref] refs/pull/16957/head -> refs/pull/16957/head * [new ref] refs/pull/16959/head -> refs/pull/16959/head * [new ref] refs/pull/16960/head -> refs/pull/16960/head * [new ref] refs/pull/16961/head -> refs/pull/16961/head * [new ref] refs/pull/16962/head -> refs/pull/16962/head * [new ref] refs/pull/16963/head -> refs/pull/16963/head * [new ref] refs/pull/16964/head -> refs/pull/16964/head * [new ref] refs/pull/16965/head -> refs/pull/16965/head * [new ref] refs/pull/16968/head -> refs/pull/16968/head * [new ref] refs/pull/16969/head -> refs/pull/16969/head * [new ref] refs/pull/16972/head -> refs/pull/16972/head * [new ref] refs/pull/16973/head -> refs/pull/16973/head * [new ref] refs/pull/16973/merge -> refs/pull/16973/merge * [new ref] refs/pull/16975/head -> refs/pull/16975/head * [new ref] refs/pull/16977/head -> refs/pull/16977/head * [new ref] refs/pull/16978/head -> refs/pull/16978/head * [new ref] refs/pull/16979/head -> refs/pull/16979/head * [new ref] refs/pull/16980/head -> refs/pull/16980/head * [new ref] refs/pull/16981/head -> refs/pull/16981/head * [new ref] refs/pull/16982/head -> refs/pull/16982/head * [new ref] refs/pull/16983/head -> refs/pull/16983/head * [new ref] refs/pull/16984/head -> refs/pull/16984/head * [new ref] refs/pull/16985/head -> refs/pull/16985/head * [new ref] refs/pull/16986/head -> refs/pull/16986/head * [new ref] refs/pull/16987/head -> refs/pull/16987/head * [new ref] refs/pull/16988/head -> refs/pull/16988/head * [new ref] refs/pull/16990/head -> refs/pull/16990/head * [new ref] refs/pull/16991/head -> refs/pull/16991/head * [new ref] refs/pull/16992/head -> refs/pull/16992/head * [new ref] refs/pull/16993/head -> refs/pull/16993/head * [new ref] refs/pull/16994/head -> refs/pull/16994/head * [new ref] refs/pull/16995/head -> refs/pull/16995/head * [new ref] refs/pull/16997/head -> refs/pull/16997/head * [new ref] refs/pull/16999/head -> refs/pull/16999/head * [new ref] refs/pull/17001/head -> refs/pull/17001/head * [new ref] refs/pull/17002/head -> refs/pull/17002/head * [new ref] refs/pull/17003/head -> refs/pull/17003/head * [new ref] refs/pull/17005/head -> refs/pull/17005/head * [new ref] refs/pull/17006/head -> refs/pull/17006/head * [new ref] refs/pull/17008/head -> refs/pull/17008/head * [new ref] refs/pull/17009/head -> refs/pull/17009/head * [new ref] refs/pull/17010/head -> refs/pull/17010/head * [new ref] refs/pull/17011/head -> refs/pull/17011/head * [new ref] refs/pull/17012/head -> refs/pull/17012/head * [new ref] refs/pull/17014/head -> refs/pull/17014/head * [new ref] refs/pull/17015/head -> refs/pull/17015/head * [new ref] refs/pull/17017/head -> refs/pull/17017/head * [new ref] refs/pull/17018/head -> refs/pull/17018/head * [new ref] refs/pull/17022/head -> refs/pull/17022/head * [new ref] refs/pull/17024/head -> refs/pull/17024/head * [new ref] refs/pull/17025/head -> refs/pull/17025/head * [new ref] refs/pull/17026/head -> refs/pull/17026/head * [new ref] refs/pull/17027/head -> refs/pull/17027/head * [new ref] refs/pull/17028/head -> refs/pull/17028/head * [new ref] refs/pull/17031/head -> refs/pull/17031/head * [new ref] refs/pull/17033/head -> refs/pull/17033/head * [new ref] refs/pull/17035/head -> refs/pull/17035/head * [new ref] refs/pull/17036/head -> refs/pull/17036/head * [new ref] refs/pull/17037/head -> refs/pull/17037/head * [new ref] refs/pull/17039/head -> refs/pull/17039/head * [new ref] refs/pull/17040/head -> refs/pull/17040/head * [new ref] refs/pull/17041/head -> refs/pull/17041/head * [new ref] refs/pull/17043/head -> refs/pull/17043/head * [new ref] refs/pull/17044/head -> refs/pull/17044/head * [new ref] refs/pull/17046/head -> refs/pull/17046/head * [new ref] refs/pull/17047/head -> refs/pull/17047/head * [new ref] refs/pull/17048/head -> refs/pull/17048/head * [new ref] refs/pull/17049/head -> refs/pull/17049/head * [new ref] refs/pull/17050/head -> refs/pull/17050/head * [new ref] refs/pull/17051/head -> refs/pull/17051/head * [new ref] refs/pull/17053/head -> refs/pull/17053/head * [new ref] refs/pull/17054/head -> refs/pull/17054/head * [new ref] refs/pull/17055/head -> refs/pull/17055/head * [new ref] refs/pull/17056/head -> refs/pull/17056/head * [new ref] refs/pull/17057/head -> refs/pull/17057/head * [new ref] refs/pull/17058/head -> refs/pull/17058/head * [new ref] refs/pull/17059/head -> refs/pull/17059/head * [new ref] refs/pull/17060/head -> refs/pull/17060/head * [new ref] refs/pull/17062/head -> refs/pull/17062/head * [new ref] refs/pull/17063/head -> refs/pull/17063/head * [new ref] refs/pull/17066/head -> refs/pull/17066/head * [new ref] refs/pull/17067/head -> refs/pull/17067/head * [new ref] refs/pull/17068/head -> refs/pull/17068/head * [new ref] refs/pull/17069/head -> refs/pull/17069/head * [new ref] refs/pull/17070/head -> refs/pull/17070/head * [new ref] refs/pull/17071/head -> refs/pull/17071/head * [new ref] refs/pull/17072/head -> refs/pull/17072/head * [new ref] refs/pull/17073/head -> refs/pull/17073/head * [new ref] refs/pull/17074/head -> refs/pull/17074/head * [new ref] refs/pull/17075/head -> refs/pull/17075/head * [new ref] refs/pull/17077/head -> refs/pull/17077/head * [new ref] refs/pull/17080/head -> refs/pull/17080/head * [new ref] refs/pull/17082/head -> refs/pull/17082/head * [new ref] refs/pull/17083/head -> refs/pull/17083/head * [new ref] refs/pull/17086/head -> refs/pull/17086/head * [new ref] refs/pull/17087/head -> refs/pull/17087/head * [new ref] refs/pull/17088/head -> refs/pull/17088/head * [new ref] refs/pull/17089/head -> refs/pull/17089/head * [new ref] refs/pull/17090/head -> refs/pull/17090/head * [new ref] refs/pull/17091/head -> refs/pull/17091/head * [new ref] refs/pull/17092/head -> refs/pull/17092/head * [new ref] refs/pull/17094/head -> refs/pull/17094/head * [new ref] refs/pull/17095/head -> refs/pull/17095/head * [new ref] refs/pull/17097/head -> refs/pull/17097/head * [new ref] refs/pull/17098/head -> refs/pull/17098/head * [new ref] refs/pull/17099/head -> refs/pull/17099/head * [new ref] refs/pull/17102/head -> refs/pull/17102/head * [new ref] refs/pull/17103/head -> refs/pull/17103/head * [new ref] refs/pull/17105/head -> refs/pull/17105/head * [new ref] refs/pull/17106/head -> refs/pull/17106/head * [new ref] refs/pull/17107/head -> refs/pull/17107/head * [new ref] refs/pull/17108/head -> refs/pull/17108/head * [new ref] refs/pull/17109/head -> refs/pull/17109/head * [new ref] refs/pull/17110/head -> refs/pull/17110/head * [new ref] refs/pull/17111/head -> refs/pull/17111/head * [new ref] refs/pull/17112/head -> refs/pull/17112/head * [new ref] refs/pull/17113/head -> refs/pull/17113/head * [new ref] refs/pull/17114/head -> refs/pull/17114/head * [new ref] refs/pull/17115/head -> refs/pull/17115/head * [new ref] refs/pull/17116/head -> refs/pull/17116/head * [new ref] refs/pull/17117/head -> refs/pull/17117/head * [new ref] refs/pull/17118/head -> refs/pull/17118/head * [new ref] refs/pull/17123/head -> refs/pull/17123/head * [new ref] refs/pull/17125/head -> refs/pull/17125/head * [new ref] refs/pull/17127/head -> refs/pull/17127/head * [new ref] refs/pull/17128/head -> refs/pull/17128/head * [new ref] refs/pull/17129/head -> refs/pull/17129/head * [new ref] refs/pull/17131/head -> refs/pull/17131/head * [new ref] refs/pull/17132/head -> refs/pull/17132/head * [new ref] refs/pull/17133/head -> refs/pull/17133/head * [new ref] refs/pull/17134/head -> refs/pull/17134/head * [new ref] refs/pull/17135/head -> refs/pull/17135/head * [new ref] refs/pull/17136/head -> refs/pull/17136/head * [new ref] refs/pull/17137/head -> refs/pull/17137/head * [new ref] refs/pull/17140/head -> refs/pull/17140/head * [new ref] refs/pull/17141/head -> refs/pull/17141/head * [new ref] refs/pull/17142/head -> refs/pull/17142/head * [new ref] refs/pull/17143/head -> refs/pull/17143/head * [new ref] refs/pull/17145/head -> refs/pull/17145/head * [new ref] refs/pull/17146/head -> refs/pull/17146/head * [new ref] refs/pull/17147/head -> refs/pull/17147/head * [new ref] refs/pull/17148/head -> refs/pull/17148/head * [new ref] refs/pull/17150/head -> refs/pull/17150/head * [new ref] refs/pull/17151/head -> refs/pull/17151/head * [new ref] refs/pull/17152/head -> refs/pull/17152/head * [new ref] refs/pull/17152/merge -> refs/pull/17152/merge * [new ref] refs/pull/17153/head -> refs/pull/17153/head * [new ref] refs/pull/17154/head -> refs/pull/17154/head * [new ref] refs/pull/17155/head -> refs/pull/17155/head * [new ref] refs/pull/17156/head -> refs/pull/17156/head * [new ref] refs/pull/17157/head -> refs/pull/17157/head * [new ref] refs/pull/17158/head -> refs/pull/17158/head * [new ref] refs/pull/17159/head -> refs/pull/17159/head * [new ref] refs/pull/17160/head -> refs/pull/17160/head * [new ref] refs/pull/17161/head -> refs/pull/17161/head * [new ref] refs/pull/17163/head -> refs/pull/17163/head * [new ref] refs/pull/17165/head -> refs/pull/17165/head * [new ref] refs/pull/17167/head -> refs/pull/17167/head * [new ref] refs/pull/17172/head -> refs/pull/17172/head * [new ref] refs/pull/17173/head -> refs/pull/17173/head * [new ref] refs/pull/17174/head -> refs/pull/17174/head * [new ref] refs/pull/17175/head -> refs/pull/17175/head * [new ref] refs/pull/17177/head -> refs/pull/17177/head * [new ref] refs/pull/17178/head -> refs/pull/17178/head * [new ref] refs/pull/17179/head -> refs/pull/17179/head * [new ref] refs/pull/17180/head -> refs/pull/17180/head * [new ref] refs/pull/17181/head -> refs/pull/17181/head * [new ref] refs/pull/17182/head -> refs/pull/17182/head * [new ref] refs/pull/17183/head -> refs/pull/17183/head * [new ref] refs/pull/17184/head -> refs/pull/17184/head * [new ref] refs/pull/17186/head -> refs/pull/17186/head * [new ref] refs/pull/17187/head -> refs/pull/17187/head * [new ref] refs/pull/17189/head -> refs/pull/17189/head * [new ref] refs/pull/17190/head -> refs/pull/17190/head * [new ref] refs/pull/17191/head -> refs/pull/17191/head * [new ref] refs/pull/17192/head -> refs/pull/17192/head * [new ref] refs/pull/17193/head -> refs/pull/17193/head * [new ref] refs/pull/17194/head -> refs/pull/17194/head * [new ref] refs/pull/17195/head -> refs/pull/17195/head * [new ref] refs/pull/17196/head -> refs/pull/17196/head * [new ref] refs/pull/17197/head -> refs/pull/17197/head * [new ref] refs/pull/17199/head -> refs/pull/17199/head * [new ref] refs/pull/17200/head -> refs/pull/17200/head * [new ref] refs/pull/17202/head -> refs/pull/17202/head * [new ref] refs/pull/17203/head -> refs/pull/17203/head * [new ref] refs/pull/17204/head -> refs/pull/17204/head * [new ref] refs/pull/17205/head -> refs/pull/17205/head * [new ref] refs/pull/17206/head -> refs/pull/17206/head * [new ref] refs/pull/17207/head -> refs/pull/17207/head * [new ref] refs/pull/17208/head -> refs/pull/17208/head * [new ref] refs/pull/17209/head -> refs/pull/17209/head * [new ref] refs/pull/17210/head -> refs/pull/17210/head * [new ref] refs/pull/17211/head -> refs/pull/17211/head * [new ref] refs/pull/17212/head -> refs/pull/17212/head * [new ref] refs/pull/17213/head -> refs/pull/17213/head * [new ref] refs/pull/17215/head -> refs/pull/17215/head * [new ref] refs/pull/17217/head -> refs/pull/17217/head * [new ref] refs/pull/17218/head -> refs/pull/17218/head * [new ref] refs/pull/17219/head -> refs/pull/17219/head * [new ref] refs/pull/17220/head -> refs/pull/17220/head * [new ref] refs/pull/17221/head -> refs/pull/17221/head * [new ref] refs/pull/17223/head -> refs/pull/17223/head * [new ref] refs/pull/17224/head -> refs/pull/17224/head * [new ref] refs/pull/17226/head -> refs/pull/17226/head * [new ref] refs/pull/17227/head -> refs/pull/17227/head * [new ref] refs/pull/17229/head -> refs/pull/17229/head * [new ref] refs/pull/17231/head -> refs/pull/17231/head * [new ref] refs/pull/17233/head -> refs/pull/17233/head * [new ref] refs/pull/17234/head -> refs/pull/17234/head * [new ref] refs/pull/17235/head -> refs/pull/17235/head * [new ref] refs/pull/17236/head -> refs/pull/17236/head * [new ref] refs/pull/17237/head -> refs/pull/17237/head * [new ref] refs/pull/17238/head -> refs/pull/17238/head * [new ref] refs/pull/17239/head -> refs/pull/17239/head * [new ref] refs/pull/17240/head -> refs/pull/17240/head * [new ref] refs/pull/17241/head -> refs/pull/17241/head * [new ref] refs/pull/17246/head -> refs/pull/17246/head * [new ref] refs/pull/17247/head -> refs/pull/17247/head * [new ref] refs/pull/17249/head -> refs/pull/17249/head * [new ref] refs/pull/17250/head -> refs/pull/17250/head * [new ref] refs/pull/17251/head -> refs/pull/17251/head * [new ref] refs/pull/17252/head -> refs/pull/17252/head * [new ref] refs/pull/17253/head -> refs/pull/17253/head * [new ref] refs/pull/17254/head -> refs/pull/17254/head * [new ref] refs/pull/17255/head -> refs/pull/17255/head * [new ref] refs/pull/17257/head -> refs/pull/17257/head * [new ref] refs/pull/17258/head -> refs/pull/17258/head * [new ref] refs/pull/17259/head -> refs/pull/17259/head * [new ref] refs/pull/17261/head -> refs/pull/17261/head * [new ref] refs/pull/17263/head -> refs/pull/17263/head * [new ref] refs/pull/17264/head -> refs/pull/17264/head * [new ref] refs/pull/17266/head -> refs/pull/17266/head * [new ref] refs/pull/17268/head -> refs/pull/17268/head * [new ref] refs/pull/17269/head -> refs/pull/17269/head * [new ref] refs/pull/17270/head -> refs/pull/17270/head * [new ref] refs/pull/17271/head -> refs/pull/17271/head * [new ref] refs/pull/17273/head -> refs/pull/17273/head * [new ref] refs/pull/17274/head -> refs/pull/17274/head * [new ref] refs/pull/17275/head -> refs/pull/17275/head * [new ref] refs/pull/17276/head -> refs/pull/17276/head * [new ref] refs/pull/17277/head -> refs/pull/17277/head * [new ref] refs/pull/17278/head -> refs/pull/17278/head * [new ref] refs/pull/17279/head -> refs/pull/17279/head * [new ref] refs/pull/17280/head -> refs/pull/17280/head * [new ref] refs/pull/17281/head -> refs/pull/17281/head * [new ref] refs/pull/17284/head -> refs/pull/17284/head * [new ref] refs/pull/17285/head -> refs/pull/17285/head * [new ref] refs/pull/17286/head -> refs/pull/17286/head * [new ref] refs/pull/17287/head -> refs/pull/17287/head * [new ref] refs/pull/17288/head -> refs/pull/17288/head * [new ref] refs/pull/17289/head -> refs/pull/17289/head * [new ref] refs/pull/17290/head -> refs/pull/17290/head * [new ref] refs/pull/17292/head -> refs/pull/17292/head * [new ref] refs/pull/17293/head -> refs/pull/17293/head * [new ref] refs/pull/17294/head -> refs/pull/17294/head * [new ref] refs/pull/17295/head -> refs/pull/17295/head * [new ref] refs/pull/17296/head -> refs/pull/17296/head * [new ref] refs/pull/17297/head -> refs/pull/17297/head * [new ref] refs/pull/17298/head -> refs/pull/17298/head * [new ref] refs/pull/17299/head -> refs/pull/17299/head * [new ref] refs/pull/17300/head -> refs/pull/17300/head * [new ref] refs/pull/17302/head -> refs/pull/17302/head * [new ref] refs/pull/17303/head -> refs/pull/17303/head * [new ref] refs/pull/17304/head -> refs/pull/17304/head * [new ref] refs/pull/17306/head -> refs/pull/17306/head * [new ref] refs/pull/17307/head -> refs/pull/17307/head * [new ref] refs/pull/17308/head -> refs/pull/17308/head * [new ref] refs/pull/17309/head -> refs/pull/17309/head * [new ref] refs/pull/17311/head -> refs/pull/17311/head * [new ref] refs/pull/17312/head -> refs/pull/17312/head * [new ref] refs/pull/17313/head -> refs/pull/17313/head * [new ref] refs/pull/17316/head -> refs/pull/17316/head * [new ref] refs/pull/17317/head -> refs/pull/17317/head * [new ref] refs/pull/17318/head -> refs/pull/17318/head * [new ref] refs/pull/17319/head -> refs/pull/17319/head * [new ref] refs/pull/17320/head -> refs/pull/17320/head * [new ref] refs/pull/17321/head -> refs/pull/17321/head * [new ref] refs/pull/17322/head -> refs/pull/17322/head * [new ref] refs/pull/17323/head -> refs/pull/17323/head * [new ref] refs/pull/17324/head -> refs/pull/17324/head * [new ref] refs/pull/17325/head -> refs/pull/17325/head * [new ref] refs/pull/17326/head -> refs/pull/17326/head * [new ref] refs/pull/17327/head -> refs/pull/17327/head * [new ref] refs/pull/17328/head -> refs/pull/17328/head * [new ref] refs/pull/17329/head -> refs/pull/17329/head * [new ref] refs/pull/17331/head -> refs/pull/17331/head * [new ref] refs/pull/17332/head -> refs/pull/17332/head * [new ref] refs/pull/17333/head -> refs/pull/17333/head * [new ref] refs/pull/17334/head -> refs/pull/17334/head * [new ref] refs/pull/17335/head -> refs/pull/17335/head * [new ref] refs/pull/17336/head -> refs/pull/17336/head * [new ref] refs/pull/17337/head -> refs/pull/17337/head * [new ref] refs/pull/17338/head -> refs/pull/17338/head * [new ref] refs/pull/17339/head -> refs/pull/17339/head * [new ref] refs/pull/17340/head -> refs/pull/17340/head * [new ref] refs/pull/17341/head -> refs/pull/17341/head * [new ref] refs/pull/17343/head -> refs/pull/17343/head * [new ref] refs/pull/17345/head -> refs/pull/17345/head * [new ref] refs/pull/17346/head -> refs/pull/17346/head * [new ref] refs/pull/17347/head -> refs/pull/17347/head * [new ref] refs/pull/17348/head -> refs/pull/17348/head * [new ref] refs/pull/17350/head -> refs/pull/17350/head * [new ref] refs/pull/17351/head -> refs/pull/17351/head * [new ref] refs/pull/17352/head -> refs/pull/17352/head * [new ref] refs/pull/17354/head -> refs/pull/17354/head * [new ref] refs/pull/17355/head -> refs/pull/17355/head * [new ref] refs/pull/17356/head -> refs/pull/17356/head * [new ref] refs/pull/17357/head -> refs/pull/17357/head * [new ref] refs/pull/17358/head -> refs/pull/17358/head * [new ref] refs/pull/17359/head -> refs/pull/17359/head * [new ref] refs/pull/17360/head -> refs/pull/17360/head * [new ref] refs/pull/17361/head -> refs/pull/17361/head * [new ref] refs/pull/17362/head -> refs/pull/17362/head * [new ref] refs/pull/17364/head -> refs/pull/17364/head * [new ref] refs/pull/17365/head -> refs/pull/17365/head * [new ref] refs/pull/17366/head -> refs/pull/17366/head * [new ref] refs/pull/17367/head -> refs/pull/17367/head * [new ref] refs/pull/17368/head -> refs/pull/17368/head * [new ref] refs/pull/17369/head -> refs/pull/17369/head * [new ref] refs/pull/17370/head -> refs/pull/17370/head * [new ref] refs/pull/17372/head -> refs/pull/17372/head * [new ref] refs/pull/17373/head -> refs/pull/17373/head * [new ref] refs/pull/17374/head -> refs/pull/17374/head * [new ref] refs/pull/17375/head -> refs/pull/17375/head * [new ref] refs/pull/17376/head -> refs/pull/17376/head * [new ref] refs/pull/17377/head -> refs/pull/17377/head * [new ref] refs/pull/17379/head -> refs/pull/17379/head * [new ref] refs/pull/17380/head -> refs/pull/17380/head * [new ref] refs/pull/17381/head -> refs/pull/17381/head * [new ref] refs/pull/17382/head -> refs/pull/17382/head * [new ref] refs/pull/17383/head -> refs/pull/17383/head * [new ref] refs/pull/17384/head -> refs/pull/17384/head * [new ref] refs/pull/17385/head -> refs/pull/17385/head * [new ref] refs/pull/17386/head -> refs/pull/17386/head * [new ref] refs/pull/17387/head -> refs/pull/17387/head * [new ref] refs/pull/17388/head -> refs/pull/17388/head * [new ref] refs/pull/17389/head -> refs/pull/17389/head * [new ref] refs/pull/17391/head -> refs/pull/17391/head * [new ref] refs/pull/17392/head -> refs/pull/17392/head * [new ref] refs/pull/17393/head -> refs/pull/17393/head * [new ref] refs/pull/17396/head -> refs/pull/17396/head * [new ref] refs/pull/17397/head -> refs/pull/17397/head * [new ref] refs/pull/17398/head -> refs/pull/17398/head * [new ref] refs/pull/17400/head -> refs/pull/17400/head * [new ref] refs/pull/17401/head -> refs/pull/17401/head * [new ref] refs/pull/17402/head -> refs/pull/17402/head * [new ref] refs/pull/17403/head -> refs/pull/17403/head * [new ref] refs/pull/17404/head -> refs/pull/17404/head * [new ref] refs/pull/17405/head -> refs/pull/17405/head * [new ref] refs/pull/17406/head -> refs/pull/17406/head * [new ref] refs/pull/17407/head -> refs/pull/17407/head * [new ref] refs/pull/17408/head -> refs/pull/17408/head * [new ref] refs/pull/17409/head -> refs/pull/17409/head * [new ref] refs/pull/17411/head -> refs/pull/17411/head * [new ref] refs/pull/17412/head -> refs/pull/17412/head * [new ref] refs/pull/17413/head -> refs/pull/17413/head * [new ref] refs/pull/17414/head -> refs/pull/17414/head * [new ref] refs/pull/17415/head -> refs/pull/17415/head * [new ref] refs/pull/17416/head -> refs/pull/17416/head * [new ref] refs/pull/17417/head -> refs/pull/17417/head * [new ref] refs/pull/17417/merge -> refs/pull/17417/merge * [new ref] refs/pull/17418/head -> refs/pull/17418/head * [new ref] refs/pull/17419/head -> refs/pull/17419/head * [new ref] refs/pull/17421/head -> refs/pull/17421/head * [new ref] refs/pull/17422/head -> refs/pull/17422/head * [new ref] refs/pull/17423/head -> refs/pull/17423/head * [new ref] refs/pull/17424/head -> refs/pull/17424/head * [new ref] refs/pull/17426/head -> refs/pull/17426/head * [new ref] refs/pull/17427/head -> refs/pull/17427/head * [new ref] refs/pull/17428/head -> refs/pull/17428/head * [new ref] refs/pull/17429/head -> refs/pull/17429/head * [new ref] refs/pull/17430/head -> refs/pull/17430/head * [new ref] refs/pull/17431/head -> refs/pull/17431/head * [new ref] refs/pull/17434/head -> refs/pull/17434/head * [new ref] refs/pull/17435/head -> refs/pull/17435/head * [new ref] refs/pull/17436/head -> refs/pull/17436/head * [new ref] refs/pull/17437/head -> refs/pull/17437/head * [new ref] refs/pull/17440/head -> refs/pull/17440/head * [new ref] refs/pull/17440/merge -> refs/pull/17440/merge * [new ref] refs/pull/17441/head -> refs/pull/17441/head * [new ref] refs/pull/17442/head -> refs/pull/17442/head * [new ref] refs/pull/17443/head -> refs/pull/17443/head * [new ref] refs/pull/17447/head -> refs/pull/17447/head * [new ref] refs/pull/17448/head -> refs/pull/17448/head * [new ref] refs/pull/17449/head -> refs/pull/17449/head * [new ref] refs/pull/17450/head -> refs/pull/17450/head * [new ref] refs/pull/17452/head -> refs/pull/17452/head * [new ref] refs/pull/17453/head -> refs/pull/17453/head * [new ref] refs/pull/17454/head -> refs/pull/17454/head * [new ref] refs/pull/17455/head -> refs/pull/17455/head * [new ref] refs/pull/17456/head -> refs/pull/17456/head * [new ref] refs/pull/17457/head -> refs/pull/17457/head * [new ref] refs/pull/17458/head -> refs/pull/17458/head * [new ref] refs/pull/17459/head -> refs/pull/17459/head * [new ref] refs/pull/17460/head -> refs/pull/17460/head * [new ref] refs/pull/17461/head -> refs/pull/17461/head * [new ref] refs/pull/17462/head -> refs/pull/17462/head * [new ref] refs/pull/17463/head -> refs/pull/17463/head * [new ref] refs/pull/17464/head -> refs/pull/17464/head * [new ref] refs/pull/17465/head -> refs/pull/17465/head * [new ref] refs/pull/17466/head -> refs/pull/17466/head * [new ref] refs/pull/17468/head -> refs/pull/17468/head * [new ref] refs/pull/17470/head -> refs/pull/17470/head * [new ref] refs/pull/17474/head -> refs/pull/17474/head * [new ref] refs/pull/17475/head -> refs/pull/17475/head * [new ref] refs/pull/17476/head -> refs/pull/17476/head * [new ref] refs/pull/17478/head -> refs/pull/17478/head * [new ref] refs/pull/17479/head -> refs/pull/17479/head * [new ref] refs/pull/17480/head -> refs/pull/17480/head * [new ref] refs/pull/17483/head -> refs/pull/17483/head * [new ref] refs/pull/17484/head -> refs/pull/17484/head * [new ref] refs/pull/17485/head -> refs/pull/17485/head * [new ref] refs/pull/17486/head -> refs/pull/17486/head * [new ref] refs/pull/17487/head -> refs/pull/17487/head * [new ref] refs/pull/17488/head -> refs/pull/17488/head * [new ref] refs/pull/17489/head -> refs/pull/17489/head * [new ref] refs/pull/17490/head -> refs/pull/17490/head * [new ref] refs/pull/17491/head -> refs/pull/17491/head * [new ref] refs/pull/17493/head -> refs/pull/17493/head * [new ref] refs/pull/17495/head -> refs/pull/17495/head * [new ref] refs/pull/17496/head -> refs/pull/17496/head * [new ref] refs/pull/17497/head -> refs/pull/17497/head * [new ref] refs/pull/17498/head -> refs/pull/17498/head * [new ref] refs/pull/17499/head -> refs/pull/17499/head * [new ref] refs/pull/17500/head -> refs/pull/17500/head * [new ref] refs/pull/17501/head -> refs/pull/17501/head * [new ref] refs/pull/17502/head -> refs/pull/17502/head * [new ref] refs/pull/17503/head -> refs/pull/17503/head * [new ref] refs/pull/17505/head -> refs/pull/17505/head * [new ref] refs/pull/17506/head -> refs/pull/17506/head * [new ref] refs/pull/17509/head -> refs/pull/17509/head * [new ref] refs/pull/17511/head -> refs/pull/17511/head * [new ref] refs/pull/17514/head -> refs/pull/17514/head * [new ref] refs/pull/17515/head -> refs/pull/17515/head * [new ref] refs/pull/17516/head -> refs/pull/17516/head * [new ref] refs/pull/17517/head -> refs/pull/17517/head * [new ref] refs/pull/17518/head -> refs/pull/17518/head * [new ref] refs/pull/17519/head -> refs/pull/17519/head * [new ref] refs/pull/17520/head -> refs/pull/17520/head * [new ref] refs/pull/17521/head -> refs/pull/17521/head * [new ref] refs/pull/17522/head -> refs/pull/17522/head * [new ref] refs/pull/17523/head -> refs/pull/17523/head * [new ref] refs/pull/17524/head -> refs/pull/17524/head * [new ref] refs/pull/17525/head -> refs/pull/17525/head * [new ref] refs/pull/17525/merge -> refs/pull/17525/merge * [new ref] refs/pull/17526/head -> refs/pull/17526/head * [new ref] refs/pull/17527/head -> refs/pull/17527/head * [new ref] refs/pull/17528/head -> refs/pull/17528/head * [new ref] refs/pull/17530/head -> refs/pull/17530/head * [new ref] refs/pull/17531/head -> refs/pull/17531/head * [new ref] refs/pull/17532/head -> refs/pull/17532/head * [new ref] refs/pull/17533/head -> refs/pull/17533/head * [new ref] refs/pull/17535/head -> refs/pull/17535/head * [new ref] refs/pull/17537/head -> refs/pull/17537/head * [new ref] refs/pull/17538/head -> refs/pull/17538/head * [new ref] refs/pull/17539/head -> refs/pull/17539/head * [new ref] refs/pull/17540/head -> refs/pull/17540/head * [new ref] refs/pull/17541/head -> refs/pull/17541/head * [new ref] refs/pull/17542/head -> refs/pull/17542/head * [new ref] refs/pull/17543/head -> refs/pull/17543/head * [new ref] refs/pull/17544/head -> refs/pull/17544/head * [new ref] refs/pull/17546/head -> refs/pull/17546/head * [new ref] refs/pull/17547/head -> refs/pull/17547/head * [new ref] refs/pull/17548/head -> refs/pull/17548/head * [new ref] refs/pull/17549/head -> refs/pull/17549/head * [new ref] refs/pull/17550/head -> refs/pull/17550/head * [new ref] refs/pull/17551/head -> refs/pull/17551/head * [new ref] refs/pull/17552/head -> refs/pull/17552/head * [new ref] refs/pull/17555/head -> refs/pull/17555/head * [new ref] refs/pull/17556/head -> refs/pull/17556/head * [new ref] refs/pull/17557/head -> refs/pull/17557/head * [new ref] refs/pull/17559/head -> refs/pull/17559/head * [new ref] refs/pull/17560/head -> refs/pull/17560/head * [new ref] refs/pull/17561/head -> refs/pull/17561/head * [new ref] refs/pull/17562/head -> refs/pull/17562/head * [new ref] refs/pull/17563/head -> refs/pull/17563/head * [new ref] refs/pull/17565/head -> refs/pull/17565/head * [new ref] refs/pull/17566/head -> refs/pull/17566/head * [new ref] refs/pull/17569/head -> refs/pull/17569/head * [new ref] refs/pull/17571/head -> refs/pull/17571/head * [new ref] refs/pull/17572/head -> refs/pull/17572/head * [new ref] refs/pull/17573/head -> refs/pull/17573/head * [new ref] refs/pull/17574/head -> refs/pull/17574/head * [new ref] refs/pull/17575/head -> refs/pull/17575/head * [new ref] refs/pull/17576/head -> refs/pull/17576/head * [new ref] refs/pull/17577/head -> refs/pull/17577/head * [new ref] refs/pull/17579/head -> refs/pull/17579/head * [new ref] refs/pull/17580/head -> refs/pull/17580/head * [new ref] refs/pull/17581/head -> refs/pull/17581/head * [new ref] refs/pull/17582/head -> refs/pull/17582/head * [new ref] refs/pull/17583/head -> refs/pull/17583/head * [new ref] refs/pull/17584/head -> refs/pull/17584/head * [new ref] refs/pull/17585/head -> refs/pull/17585/head * [new ref] refs/pull/17586/head -> refs/pull/17586/head * [new ref] refs/pull/17587/head -> refs/pull/17587/head * [new ref] refs/pull/17588/head -> refs/pull/17588/head * [new ref] refs/pull/17590/head -> refs/pull/17590/head * [new ref] refs/pull/17591/head -> refs/pull/17591/head * [new ref] refs/pull/17593/head -> refs/pull/17593/head * [new ref] refs/pull/17594/head -> refs/pull/17594/head * [new ref] refs/pull/17595/head -> refs/pull/17595/head * [new ref] refs/pull/17597/head -> refs/pull/17597/head * [new ref] refs/pull/17598/head -> refs/pull/17598/head * [new ref] refs/pull/17601/head -> refs/pull/17601/head * [new ref] refs/pull/17603/head -> refs/pull/17603/head * [new ref] refs/pull/17604/head -> refs/pull/17604/head * [new ref] refs/pull/17605/head -> refs/pull/17605/head * [new ref] refs/pull/17607/head -> refs/pull/17607/head * [new ref] refs/pull/17608/head -> refs/pull/17608/head * [new ref] refs/pull/17613/head -> refs/pull/17613/head * [new ref] refs/pull/17613/merge -> refs/pull/17613/merge * [new ref] refs/pull/17614/head -> refs/pull/17614/head * [new ref] refs/pull/17615/head -> refs/pull/17615/head * [new ref] refs/pull/17616/head -> refs/pull/17616/head * [new ref] refs/pull/17618/head -> refs/pull/17618/head * [new ref] refs/pull/17619/head -> refs/pull/17619/head * [new ref] refs/pull/17620/head -> refs/pull/17620/head * [new ref] refs/pull/17622/head -> refs/pull/17622/head * [new ref] refs/pull/17623/head -> refs/pull/17623/head * [new ref] refs/pull/17624/head -> refs/pull/17624/head * [new ref] refs/pull/17625/head -> refs/pull/17625/head * [new ref] refs/pull/17627/head -> refs/pull/17627/head * [new ref] refs/pull/17628/head -> refs/pull/17628/head * [new ref] refs/pull/17629/head -> refs/pull/17629/head * [new ref] refs/pull/17630/head -> refs/pull/17630/head * [new ref] refs/pull/17631/head -> refs/pull/17631/head * [new ref] refs/pull/17632/head -> refs/pull/17632/head * [new ref] refs/pull/17633/head -> refs/pull/17633/head * [new ref] refs/pull/17634/head -> refs/pull/17634/head * [new ref] refs/pull/17635/head -> refs/pull/17635/head * [new ref] refs/pull/17636/head -> refs/pull/17636/head * [new ref] refs/pull/17637/head -> refs/pull/17637/head * [new ref] refs/pull/17638/head -> refs/pull/17638/head * [new ref] refs/pull/17639/head -> refs/pull/17639/head * [new ref] refs/pull/17640/head -> refs/pull/17640/head * [new ref] refs/pull/17641/head -> refs/pull/17641/head * [new ref] refs/pull/17642/head -> refs/pull/17642/head * [new ref] refs/pull/17643/head -> refs/pull/17643/head * [new ref] refs/pull/17647/head -> refs/pull/17647/head * [new ref] refs/pull/17648/head -> refs/pull/17648/head * [new ref] refs/pull/17649/head -> refs/pull/17649/head * [new ref] refs/pull/17650/head -> refs/pull/17650/head * [new ref] refs/pull/17651/head -> refs/pull/17651/head * [new ref] refs/pull/17652/head -> refs/pull/17652/head * [new ref] refs/pull/17653/head -> refs/pull/17653/head * [new ref] refs/pull/17654/head -> refs/pull/17654/head * [new ref] refs/pull/17655/head -> refs/pull/17655/head * [new ref] refs/pull/17656/head -> refs/pull/17656/head * [new ref] refs/pull/17657/head -> refs/pull/17657/head * [new ref] refs/pull/17658/head -> refs/pull/17658/head * [new ref] refs/pull/17659/head -> refs/pull/17659/head * [new ref] refs/pull/17660/head -> refs/pull/17660/head * [new ref] refs/pull/17661/head -> refs/pull/17661/head * [new ref] refs/pull/17662/head -> refs/pull/17662/head * [new ref] refs/pull/17664/head -> refs/pull/17664/head * [new ref] refs/pull/17665/head -> refs/pull/17665/head * [new ref] refs/pull/17667/head -> refs/pull/17667/head * [new ref] refs/pull/17668/head -> refs/pull/17668/head * [new ref] refs/pull/17669/head -> refs/pull/17669/head * [new ref] refs/pull/17670/head -> refs/pull/17670/head * [new ref] refs/pull/17671/head -> refs/pull/17671/head * [new ref] refs/pull/17672/head -> refs/pull/17672/head * [new ref] refs/pull/17673/head -> refs/pull/17673/head * [new ref] refs/pull/17674/head -> refs/pull/17674/head * [new ref] refs/pull/17675/head -> refs/pull/17675/head * [new ref] refs/pull/17676/head -> refs/pull/17676/head * [new ref] refs/pull/17677/head -> refs/pull/17677/head * [new ref] refs/pull/17679/head -> refs/pull/17679/head * [new ref] refs/pull/17680/head -> refs/pull/17680/head * [new ref] refs/pull/17682/head -> refs/pull/17682/head * [new ref] refs/pull/17683/head -> refs/pull/17683/head * [new ref] refs/pull/17683/merge -> refs/pull/17683/merge * [new ref] refs/pull/17686/head -> refs/pull/17686/head * [new ref] refs/pull/17687/head -> refs/pull/17687/head * [new ref] refs/pull/17688/head -> refs/pull/17688/head * [new ref] refs/pull/17689/head -> refs/pull/17689/head * [new ref] refs/pull/17690/head -> refs/pull/17690/head * [new ref] refs/pull/17691/head -> refs/pull/17691/head * [new ref] refs/pull/17692/head -> refs/pull/17692/head * [new ref] refs/pull/17693/head -> refs/pull/17693/head * [new ref] refs/pull/17694/head -> refs/pull/17694/head * [new ref] refs/pull/17695/head -> refs/pull/17695/head * [new ref] refs/pull/17696/head -> refs/pull/17696/head * [new ref] refs/pull/17696/merge -> refs/pull/17696/merge * [new ref] refs/pull/17697/head -> refs/pull/17697/head * [new ref] refs/pull/17698/head -> refs/pull/17698/head * [new ref] refs/pull/17700/head -> refs/pull/17700/head * [new ref] refs/pull/17701/head -> refs/pull/17701/head * [new ref] refs/pull/17702/head -> refs/pull/17702/head * [new ref] refs/pull/17703/head -> refs/pull/17703/head * [new ref] refs/pull/17704/head -> refs/pull/17704/head * [new ref] refs/pull/17705/head -> refs/pull/17705/head * [new ref] refs/pull/17706/head -> refs/pull/17706/head * [new ref] refs/pull/17707/head -> refs/pull/17707/head * [new ref] refs/pull/17708/head -> refs/pull/17708/head * [new ref] refs/pull/17709/head -> refs/pull/17709/head * [new ref] refs/pull/17710/head -> refs/pull/17710/head * [new ref] refs/pull/17711/head -> refs/pull/17711/head * [new ref] refs/pull/17712/head -> refs/pull/17712/head * [new ref] refs/pull/17712/merge -> refs/pull/17712/merge * [new ref] refs/pull/17713/head -> refs/pull/17713/head * [new ref] refs/pull/17714/head -> refs/pull/17714/head * [new ref] refs/pull/17715/head -> refs/pull/17715/head * [new ref] refs/pull/17716/head -> refs/pull/17716/head * [new ref] refs/pull/17717/head -> refs/pull/17717/head * [new ref] refs/pull/17718/head -> refs/pull/17718/head * [new ref] refs/pull/17719/head -> refs/pull/17719/head * [new ref] refs/pull/17720/head -> refs/pull/17720/head * [new ref] refs/pull/17721/head -> refs/pull/17721/head * [new ref] refs/pull/17722/head -> refs/pull/17722/head * [new ref] refs/pull/17723/head -> refs/pull/17723/head * [new ref] refs/pull/17724/head -> refs/pull/17724/head * [new ref] refs/pull/17725/head -> refs/pull/17725/head * [new ref] refs/pull/17726/head -> refs/pull/17726/head * [new ref] refs/pull/17727/head -> refs/pull/17727/head * [new ref] refs/pull/17728/head -> refs/pull/17728/head * [new ref] refs/pull/17729/head -> refs/pull/17729/head * [new ref] refs/pull/17729/merge -> refs/pull/17729/merge * [new ref] refs/pull/17730/head -> refs/pull/17730/head * [new ref] refs/pull/17731/head -> refs/pull/17731/head * [new ref] refs/pull/17732/head -> refs/pull/17732/head * [new ref] refs/pull/17733/head -> refs/pull/17733/head * [new ref] refs/pull/17734/head -> refs/pull/17734/head * [new ref] refs/pull/17735/head -> refs/pull/17735/head * [new ref] refs/pull/17736/head -> refs/pull/17736/head * [new ref] refs/pull/17737/head -> refs/pull/17737/head * [new ref] refs/pull/17738/head -> refs/pull/17738/head * [new ref] refs/pull/17739/head -> refs/pull/17739/head * [new ref] refs/pull/17740/head -> refs/pull/17740/head * [new ref] refs/pull/17741/head -> refs/pull/17741/head * [new ref] refs/pull/17742/head -> refs/pull/17742/head * [new ref] refs/pull/17743/head -> refs/pull/17743/head * [new ref] refs/pull/17744/head -> refs/pull/17744/head * [new ref] refs/pull/17745/head -> refs/pull/17745/head * [new ref] refs/pull/17747/head -> refs/pull/17747/head * [new ref] refs/pull/17748/head -> refs/pull/17748/head * [new ref] refs/pull/17750/head -> refs/pull/17750/head * [new ref] refs/pull/17751/head -> refs/pull/17751/head * [new ref] refs/pull/17752/head -> refs/pull/17752/head * [new ref] refs/pull/17753/head -> refs/pull/17753/head * [new ref] refs/pull/17756/head -> refs/pull/17756/head * [new ref] refs/pull/17758/head -> refs/pull/17758/head * [new ref] refs/pull/17759/head -> refs/pull/17759/head * [new ref] refs/pull/17760/head -> refs/pull/17760/head * [new ref] refs/pull/17761/head -> refs/pull/17761/head * [new ref] refs/pull/17762/head -> refs/pull/17762/head * [new ref] refs/pull/17763/head -> refs/pull/17763/head * [new ref] refs/pull/17764/head -> refs/pull/17764/head * [new ref] refs/pull/17765/head -> refs/pull/17765/head * [new ref] refs/pull/17766/head -> refs/pull/17766/head * [new ref] refs/pull/17767/head -> refs/pull/17767/head * [new ref] refs/pull/17768/head -> refs/pull/17768/head * [new ref] refs/pull/17768/merge -> refs/pull/17768/merge * [new ref] refs/pull/17769/head -> refs/pull/17769/head * [new ref] refs/pull/17770/head -> refs/pull/17770/head * [new ref] refs/pull/17771/head -> refs/pull/17771/head * [new ref] refs/pull/17772/head -> refs/pull/17772/head * [new ref] refs/pull/17773/head -> refs/pull/17773/head * [new ref] refs/pull/17775/head -> refs/pull/17775/head * [new ref] refs/pull/17777/head -> refs/pull/17777/head * [new ref] refs/pull/17778/head -> refs/pull/17778/head * [new ref] refs/pull/17780/head -> refs/pull/17780/head * [new ref] refs/pull/17781/head -> refs/pull/17781/head * [new ref] refs/pull/17782/head -> refs/pull/17782/head * [new ref] refs/pull/17783/head -> refs/pull/17783/head * [new ref] refs/pull/17784/head -> refs/pull/17784/head * [new ref] refs/pull/17785/head -> refs/pull/17785/head * [new ref] refs/pull/17786/head -> refs/pull/17786/head * [new ref] refs/pull/17787/head -> refs/pull/17787/head * [new ref] refs/pull/17788/head -> refs/pull/17788/head * [new ref] refs/pull/17789/head -> refs/pull/17789/head * [new ref] refs/pull/17789/merge -> refs/pull/17789/merge * [new ref] refs/pull/17790/head -> refs/pull/17790/head * [new ref] refs/pull/17791/head -> refs/pull/17791/head * [new ref] refs/pull/17791/merge -> refs/pull/17791/merge * [new ref] refs/pull/17792/head -> refs/pull/17792/head * [new ref] refs/pull/17793/head -> refs/pull/17793/head * [new ref] refs/pull/17794/head -> refs/pull/17794/head * [new ref] refs/pull/17795/head -> refs/pull/17795/head * [new ref] refs/pull/17796/head -> refs/pull/17796/head * [new ref] refs/pull/17797/head -> refs/pull/17797/head * [new ref] refs/pull/17797/merge -> refs/pull/17797/merge * [new ref] refs/pull/17798/head -> refs/pull/17798/head * [new ref] refs/pull/17799/head -> refs/pull/17799/head * [new ref] refs/pull/17800/head -> refs/pull/17800/head * [new ref] refs/pull/17800/merge -> refs/pull/17800/merge * [new ref] refs/pull/17803/head -> refs/pull/17803/head * [new ref] refs/pull/17804/head -> refs/pull/17804/head * [new ref] refs/pull/17805/head -> refs/pull/17805/head * [new ref] refs/pull/17806/head -> refs/pull/17806/head * [new ref] refs/pull/17808/head -> refs/pull/17808/head * [new ref] refs/pull/17809/head -> refs/pull/17809/head * [new ref] refs/pull/17810/head -> refs/pull/17810/head * [new ref] refs/pull/17811/head -> refs/pull/17811/head * [new ref] refs/pull/17812/head -> refs/pull/17812/head * [new ref] refs/pull/17813/head -> refs/pull/17813/head * [new ref] refs/pull/17814/head -> refs/pull/17814/head * [new ref] refs/pull/17815/head -> refs/pull/17815/head * [new ref] refs/pull/17816/head -> refs/pull/17816/head * [new ref] refs/pull/17818/head -> refs/pull/17818/head * [new ref] refs/pull/17821/head -> refs/pull/17821/head * [new ref] refs/pull/17822/head -> refs/pull/17822/head * [new ref] refs/pull/17823/head -> refs/pull/17823/head * [new ref] refs/pull/17824/head -> refs/pull/17824/head * [new ref] refs/pull/17825/head -> refs/pull/17825/head * [new ref] refs/pull/17826/head -> refs/pull/17826/head * [new ref] refs/pull/17827/head -> refs/pull/17827/head * [new ref] refs/pull/17827/merge -> refs/pull/17827/merge * [new ref] refs/pull/17829/head -> refs/pull/17829/head * [new ref] refs/pull/17830/head -> refs/pull/17830/head * [new ref] refs/pull/17831/head -> refs/pull/17831/head * [new ref] refs/pull/17832/head -> refs/pull/17832/head * [new ref] refs/pull/17833/head -> refs/pull/17833/head * [new ref] refs/pull/17836/head -> refs/pull/17836/head * [new ref] refs/pull/17837/head -> refs/pull/17837/head * [new ref] refs/pull/17840/head -> refs/pull/17840/head * [new ref] refs/pull/17841/head -> refs/pull/17841/head * [new ref] refs/pull/17842/head -> refs/pull/17842/head * [new ref] refs/pull/17843/head -> refs/pull/17843/head * [new ref] refs/pull/17844/head -> refs/pull/17844/head * [new ref] refs/pull/17845/head -> refs/pull/17845/head * [new ref] refs/pull/17846/head -> refs/pull/17846/head * [new ref] refs/pull/17847/head -> refs/pull/17847/head * [new ref] refs/pull/17848/head -> refs/pull/17848/head * [new ref] refs/pull/17849/head -> refs/pull/17849/head * [new ref] refs/pull/17850/head -> refs/pull/17850/head * [new ref] refs/pull/17851/head -> refs/pull/17851/head * [new ref] refs/pull/17852/head -> refs/pull/17852/head * [new ref] refs/pull/17853/head -> refs/pull/17853/head * [new ref] refs/pull/17854/head -> refs/pull/17854/head * [new ref] refs/pull/17856/head -> refs/pull/17856/head * [new ref] refs/pull/17858/head -> refs/pull/17858/head * [new ref] refs/pull/17859/head -> refs/pull/17859/head * [new ref] refs/pull/17860/head -> refs/pull/17860/head * [new ref] refs/pull/17861/head -> refs/pull/17861/head * [new ref] refs/pull/17864/head -> refs/pull/17864/head * [new ref] refs/pull/17865/head -> refs/pull/17865/head * [new ref] refs/pull/17865/merge -> refs/pull/17865/merge * [new ref] refs/pull/17867/head -> refs/pull/17867/head * [new ref] refs/pull/17868/head -> refs/pull/17868/head * [new ref] refs/pull/17872/head -> refs/pull/17872/head * [new ref] refs/pull/17873/head -> refs/pull/17873/head * [new ref] refs/pull/17874/head -> refs/pull/17874/head * [new ref] refs/pull/17875/head -> refs/pull/17875/head * [new ref] refs/pull/17876/head -> refs/pull/17876/head * [new ref] refs/pull/17876/merge -> refs/pull/17876/merge * [new ref] refs/pull/17877/head -> refs/pull/17877/head * [new ref] refs/pull/17877/merge -> refs/pull/17877/merge * [new ref] refs/pull/17879/head -> refs/pull/17879/head * [new ref] refs/pull/17880/head -> refs/pull/17880/head * [new ref] refs/pull/17881/head -> refs/pull/17881/head * [new ref] refs/pull/17882/head -> refs/pull/17882/head * [new ref] refs/pull/17883/head -> refs/pull/17883/head * [new ref] refs/pull/17883/merge -> refs/pull/17883/merge * [new ref] refs/pull/17884/head -> refs/pull/17884/head * [new ref] refs/pull/17884/merge -> refs/pull/17884/merge * [new ref] refs/pull/17885/head -> refs/pull/17885/head * [new ref] refs/pull/17886/head -> refs/pull/17886/head * [new ref] refs/pull/17887/head -> refs/pull/17887/head * [new ref] refs/pull/17887/merge -> refs/pull/17887/merge * [new ref] refs/pull/17888/head -> refs/pull/17888/head * [new ref] refs/pull/17889/head -> refs/pull/17889/head * [new ref] refs/pull/17889/merge -> refs/pull/17889/merge * [new ref] refs/pull/17890/head -> refs/pull/17890/head * [new ref] refs/pull/17891/head -> refs/pull/17891/head * [new ref] refs/pull/17892/head -> refs/pull/17892/head * [new ref] refs/pull/17894/head -> refs/pull/17894/head * [new ref] refs/pull/17894/merge -> refs/pull/17894/merge * [new ref] refs/pull/17895/head -> refs/pull/17895/head * [new ref] refs/pull/17896/head -> refs/pull/17896/head * [new ref] refs/pull/17897/head -> refs/pull/17897/head * [new ref] refs/pull/17898/head -> refs/pull/17898/head * [new ref] refs/pull/17898/merge -> refs/pull/17898/merge * [new ref] refs/pull/17899/head -> refs/pull/17899/head * [new ref] refs/pull/17900/head -> refs/pull/17900/head * [new ref] refs/pull/17901/head -> refs/pull/17901/head * [new ref] refs/pull/17902/head -> refs/pull/17902/head * [new ref] refs/pull/17903/head -> refs/pull/17903/head * [new ref] refs/pull/17904/head -> refs/pull/17904/head * [new ref] refs/pull/17905/head -> refs/pull/17905/head * [new ref] refs/pull/17905/merge -> refs/pull/17905/merge * [new ref] refs/pull/17906/head -> refs/pull/17906/head * [new ref] refs/pull/17907/head -> refs/pull/17907/head * [new ref] refs/pull/17908/head -> refs/pull/17908/head * [new ref] refs/pull/17909/head -> refs/pull/17909/head * [new ref] refs/pull/17911/head -> refs/pull/17911/head * [new ref] refs/pull/17912/head -> refs/pull/17912/head * [new ref] refs/pull/17913/head -> refs/pull/17913/head * [new ref] refs/pull/17914/head -> refs/pull/17914/head * [new ref] refs/pull/17915/head -> refs/pull/17915/head * [new ref] refs/pull/17916/head -> refs/pull/17916/head * [new ref] refs/pull/17918/head -> refs/pull/17918/head * [new ref] refs/pull/17919/head -> refs/pull/17919/head * [new ref] refs/pull/17920/head -> refs/pull/17920/head * [new ref] refs/pull/17921/head -> refs/pull/17921/head * [new ref] refs/pull/17922/head -> refs/pull/17922/head * [new ref] refs/pull/17923/head -> refs/pull/17923/head * [new ref] refs/pull/17924/head -> refs/pull/17924/head * [new ref] refs/pull/17925/head -> refs/pull/17925/head * [new ref] refs/pull/17926/head -> refs/pull/17926/head * [new ref] refs/pull/17927/head -> refs/pull/17927/head * [new ref] refs/pull/17927/merge -> refs/pull/17927/merge * [new ref] refs/pull/17928/head -> refs/pull/17928/head * [new ref] refs/pull/17929/head -> refs/pull/17929/head * [new ref] refs/pull/17929/merge -> refs/pull/17929/merge * [new ref] refs/pull/17931/head -> refs/pull/17931/head * [new ref] refs/pull/17931/merge -> refs/pull/17931/merge * [new ref] refs/pull/17932/head -> refs/pull/17932/head * [new ref] refs/pull/17933/head -> refs/pull/17933/head * [new ref] refs/pull/17933/merge -> refs/pull/17933/merge * [new ref] refs/pull/17934/head -> refs/pull/17934/head * [new ref] refs/pull/17935/head -> refs/pull/17935/head * [new ref] refs/pull/17936/head -> refs/pull/17936/head * [new ref] refs/pull/17937/head -> refs/pull/17937/head * [new ref] refs/pull/17938/head -> refs/pull/17938/head * [new ref] refs/pull/17938/merge -> refs/pull/17938/merge * [new ref] refs/pull/17940/head -> refs/pull/17940/head * [new ref] refs/pull/17941/head -> refs/pull/17941/head * [new ref] refs/pull/17943/head -> refs/pull/17943/head * [new ref] refs/pull/17945/head -> refs/pull/17945/head * [new ref] refs/pull/17946/head -> refs/pull/17946/head * [new ref] refs/pull/17947/head -> refs/pull/17947/head * [new ref] refs/pull/17947/merge -> refs/pull/17947/merge * [new ref] refs/pull/17950/head -> refs/pull/17950/head * [new ref] refs/pull/17950/merge -> refs/pull/17950/merge * [new ref] refs/pull/17953/head -> refs/pull/17953/head * [new ref] refs/pull/17954/head -> refs/pull/17954/head * [new ref] refs/pull/17955/head -> refs/pull/17955/head * [new ref] refs/pull/17955/merge -> refs/pull/17955/merge * [new ref] refs/pull/17956/head -> refs/pull/17956/head * [new ref] refs/pull/17958/head -> refs/pull/17958/head * [new ref] refs/pull/17958/merge -> refs/pull/17958/merge * [new ref] refs/pull/17959/head -> refs/pull/17959/head + a587b7ea31...a280000764 refs/pull/7124/head -> refs/pull/7124/head (forced update) * [new tag] curl-8_10_0 -> curl-8_10_0 * [new tag] curl-8_10_1 -> curl-8_10_1 * [new tag] curl-8_11_0 -> curl-8_11_0 * [new tag] curl-8_11_1 -> curl-8_11_1 * [new tag] curl-8_12_0 -> curl-8_12_0 * [new tag] curl-8_12_1 -> curl-8_12_1 * [new tag] curl-8_13_0 -> curl-8_13_0 * [new tag] curl-8_14_0 -> curl-8_14_0 * [new tag] curl-8_14_1 -> curl-8_14_1 * [new tag] curl-8_15_0 -> curl-8_15_0 * [new tag] rc-8_15_0-1 -> rc-8_15_0-1 * [new tag] rc-8_15_0-2 -> rc-8_15_0-2 * [new tag] rc-8_15_0-3 -> rc-8_15_0-3 ==> Validating source files with sha512sums... curl ... Passed ==> Verifying source file signatures with gpg... curl git repo ... Passed ]2;🔵 Container arch-nspawn-402956 on centiskorch.felixc.at\==> Making package: curl 8.15.0-1 (Fri Jul 18 09:24:20 2025) ==> Checking runtime dependencies... ==> Checking buildtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (9) New Version Net Change Download Size core/debuginfod 0.193-2 0.37 MiB 0.16 MiB core/libmicrohttpd 1.0.1-1 0.56 MiB 0.28 MiB extra/perl-error 0.17030-2 0.04 MiB 0.02 MiB extra/perl-mailtools 2.22-2 0.10 MiB 0.06 MiB extra/perl-timedate 2.33-8 0.08 MiB extra/zlib-ng 2.2.4-1 0.21 MiB extra/git 2.50.1-1 28.58 MiB extra/patchelf 0.18.0-3 0.19 MiB 0.10 MiB extra/valgrind 3.25.1-1 40.48 MiB 5.80 MiB Total Download Size: 6.43 MiB Total Installed Size: 70.63 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... valgrind-3.25.1-1-riscv64 downloading... libmicrohttpd-1.0.1-1-riscv64 downloading... debuginfod-0.193-2-riscv64 downloading... patchelf-0.18.0-3-riscv64 downloading... perl-mailtools-2.22-2-any downloading... perl-error-0.17030-2-any downloading... checking keyring... checking package integrity... loading package files... checking for file conflicts... :: Processing package changes... installing perl-error... installing perl-timedate... installing perl-mailtools... installing zlib-ng... installing git... Optional dependencies for git git-zsh-completion: upstream zsh completion tk: gitk and git gui openssh: ssh transport and crypto man: show help with `git command --help` perl-libwww: git svn perl-term-readkey: git svn and interactive.singlekey setting perl-io-socket-ssl: git send-email TLS support perl-authen-sasl: git send-email TLS support perl-mediawiki-api: git mediawiki support perl-datetime-format-iso8601: git mediawiki support perl-lwp-protocol-https: git mediawiki https support perl-cgi: gitweb (web interface) support python: git svn & git p4 subversion: git svn org.freedesktop.secrets: keyring credential helper libsecret: libsecret credential helper [installed] installing patchelf... installing libmicrohttpd... installing debuginfod... Optional dependencies for debuginfod elfutils=0.193: for translations installing valgrind... Optional dependencies for valgrind python: cg_* scripts :: Running post-transaction hooks... (1/5) Creating system user accounts... Creating group 'git' with GID 971. Creating user 'git' (git daemon user) with UID 971 and GID 971. (2/5) Reloading system manager configuration... Skipped: Current root is not booted. (3/5) Arming ConditionNeedsUpdate... (4/5) Checking for old perl modules... (5/5) Updating the info directory file... [?25h==> Retrieving sources... ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources...  -> Creating working copy of curl git repo... Cloning into 'curl'... done. Updating files: 89% (3673/4101) Updating files: 90% (3691/4101) Updating files: 91% (3732/4101) Updating files: 92% (3773/4101) Updating files: 93% (3814/4101) Updating files: 94% (3855/4101) Updating files: 95% (3896/4101) Updating files: 96% (3937/4101) Updating files: 97% (3978/4101) Updating files: 98% (4019/4101) Updating files: 99% (4060/4101) Updating files: 100% (4101/4101) Updating files: 100% (4101/4101), done. Switched to a new branch 'makepkg' ==> Starting prepare()... libtoolize: putting auxiliary files in '.'. libtoolize: copying file './ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' libtoolize: Remember to add 'LT_INIT' to configure.ac. configure.ac:128: installing './compile' configure.ac:418: installing './config.guess' configure.ac:418: installing './config.sub' configure.ac:128: installing './install-sh' configure.ac:134: installing './missing' docs/examples/Makefile.am: installing './depcomp' ==> Starting build()... checking whether to enable maintainer-specific portions of Makefiles... no checking whether make supports nested variables... yes checking whether to enable debug build options... no checking whether to enable compiler optimizer... (assumed) yes checking whether to enable strict compiler warnings... no checking whether to enable compiler warnings as errors... no checking whether to enable curl debug memory tracking... no checking whether to enable hiding of library internal symbols... yes checking whether to enable c-ares for DNS lookups... no checking whether to disable dependency on -lrt... (assumed no) checking whether to enable HTTPSRR support... no checking whether to enable ECH support... no checking whether to enable SSL session export support... no checking for path separator... : checking for sed... /usr/bin/sed checking for grep... /usr/bin/grep checking that grep -E works... yes checking for ar... /usr/bin/ar checking for a BSD-compatible install... /usr/bin/install -c checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether the compiler supports GNU C... yes checking whether gcc accepts -g... yes checking for gcc option to enable C11 features... none needed checking whether gcc understands -c and -o together... yes checking how to run the C preprocessor... gcc -E checking for stdio.h... yes checking for stdlib.h... yes checking for string.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for strings.h... yes checking for sys/stat.h... yes checking for sys/types.h... yes checking for unistd.h... yes checking for stdatomic.h... yes checking if _Atomic is available... yes checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for code coverage support... no checking whether sleep supports fractional seconds... yes checking filesystem timestamp resolution... 0.01 checking whether build environment is sane... yes checking for a race-free mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports the include directive... yes (GNU style) checking xargs -n works... yes checking whether UID '1000' is supported by ustar format... yes checking whether GID '1000' is supported by ustar format... yes checking how to create a ustar tar archive... gnutar checking dependency style of gcc... gcc3 checking curl version... 8.15.0 checking for httpd... no checking for apache2... no checking for apxs... no configure: httpd/apache2 not in PATH, http tests disabled configure: apxs not in PATH, http tests disabled checking for nghttpx... no checking for caddy... no checking build system type... riscv64-unknown-linux-gnu checking host system type... riscv64-unknown-linux-gnu checking for egrep -e... /usr/bin/grep -E checking if OS is AIX (to define _ALL_SOURCE)... no checking if _THREAD_SAFE is already defined... no checking if _THREAD_SAFE is actually needed... no checking if _THREAD_SAFE is onwards defined... no checking if _REENTRANT is already defined... no checking if _REENTRANT is actually needed... no checking if _REENTRANT is onwards defined... no checking for gcc option to enable large file support... none needed checking how to print strings... printf checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for grep that handles long lines and -e... (cached) /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert riscv64-unknown-linux-gnu file names to riscv64-unknown-linux-gnu format... func_convert_file_noop checking how to convert riscv64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for file... file checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ranlib... ranlib checking for archiver @FILE support... @ checking for strip... strip checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /usr/bin/dd checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 checking for mt... no checking if : is a manifest tool... no checking for dlfcn.h... yes checking which variant of shared library versioning to provide... (default) aix checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking whether to build shared libraries with -version-info... yes checking whether to build shared libraries with -no-undefined... no checking whether to build shared libraries with -mimpure-text... no checking whether to build shared libraries with PIC... yes checking whether to build static libraries with PIC... no checking whether to build shared libraries only... no checking whether to build static libraries only... no checking for windres... no checking if cpp -P is needed... yes checking if cpp -P works... yes checking if compiler is DEC/Compaq/HP C... no checking if compiler is HP-UX C... no checking if compiler is IBM C... no checking if compiler is Intel C... no checking if compiler is clang... no checking if compiler is GNU C... yes checking compiler version... gcc '1501' (raw: '15.1.1') checking if compiler is SunPro C... no checking if compiler is Tiny C... no checking whether build target is a native Windows one... no checking if compiler accepts some basic options... yes configure: compiler options added: -Werror-implicit-function-declaration checking if compiler optimizer assumed setting might be used... no checking if compiler accepts strict warning options... yes configure: compiler options added: -Wno-system-headers checking if compiler halts on compilation errors... yes checking if compiler halts on negative sized arrays... yes checking if compiler halts on function prototype mismatch... yes checking if compiler supports hiding library internal symbols... yes checking whether build target supports Win32 crypto API... no checking whether to build libcurl and curl in "unity" mode... no checking whether to support http... yes checking whether to support ftp... yes checking whether to support file... yes checking whether to support IPFS... yes checking whether to support ldap... no checking whether to support ldaps... no checking whether to support rtsp... yes checking whether to support proxies... yes checking whether to support dict... yes checking whether to support telnet... yes checking whether to support tftp... yes checking whether to support pop3... yes checking whether to support imap... yes checking whether to support smb... yes checking whether to support smtp... yes checking whether to support gopher... yes checking whether to support mqtt... no checking whether to provide built-in manual... no checking whether to build documentation... yes checking whether to enable generation of C code... yes checking whether to use libgcc... no checking if X/Open network library is required... no checking for gethostbyname... yes checking whether build target is a native Windows one... (cached) no checking for proto/bsdsocket.h... no checking for connect in libraries... yes checking for sys/types.h... (cached) yes checking for monotonic clock_gettime... yes checking for clock_gettime in libraries... no additional lib required checking if monotonic clock_gettime works... yes checking for sys/types.h... (cached) yes checking for raw monotonic clock_gettime... yes checking for pkg-config... /usr/bin/pkg-config checking for zlib options with pkg-config... found checking for zlib.h... yes configure: found both libz and libz.h header checking for BrotliDecoderDecompress in -lbrotlidec... yes checking for brotli/decode.h... yes checking for ZSTD_createDStream in -lzstd... yes checking for zstd.h... yes checking whether to enable IPv6... yes checking if struct sockaddr_in6 has sin6_scope_id member... yes checking if argv can be written to... yes checking if GSS-API support is requested... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking for gss.h... no checking for gssapi/gssapi.h... yes checking for gssapi/gssapi_generic.h... yes checking for gssapi/gssapi_krb5.h... yes checking if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking if we can link against GSS-API library... yes checking whether to enable Windows native SSL/TLS... no checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for openssl options with pkg-config... found configure: pkg-config: SSL_LIBS: "-lssl -lcrypto" configure: pkg-config: SSL_LDFLAGS: "" configure: pkg-config: SSL_CPPFLAGS: "" checking for HMAC_Update in -lcrypto... yes checking for SSL_connect in -lssl... yes checking for openssl/x509.h... yes checking for openssl/rsa.h... yes checking for openssl/crypto.h... yes checking for openssl/pem.h... yes checking for openssl/ssl.h... yes checking for openssl/err.h... yes checking for BoringSSL... no checking for AWS-LC... no checking for LibreSSL... no checking for OpenSSL >= v3... yes checking for SSL_set_quic_use_legacy_codepoint... no checking for SSL_set_quic_tls_cbs... yes configure: OpenSSL with QUIC APIv2 checking for SRP support in OpenSSL... yes checking for QUIC support and OpenSSL >= 3.3... yes configure: built with one SSL backend checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt checking whether to use built-in CA store of SSL library... no checking CA cert bundle path to embed in the curl tool... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for libpsl options with pkg-config... found checking for psl_builtin in -lpsl... yes checking for libpsl.h... yes checking for library containing gsasl_init... no configure: WARNING: libgsasl was not found checking for pkg-config... (cached) /usr/bin/pkg-config checking for libssh2 options with pkg-config... found checking for libssh2_free in -lssh2... yes checking for libssh2.h... yes checking for RTMP_Init in -lrtmp... no checking whether versioned symbols are wanted... yes checking if libraries can be versioned... yes checking whether to build with libidn2... (assumed) yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libidn2 options with pkg-config... found configure: pkg-config: IDN_LIBS: "-lidn2" configure: pkg-config: IDN_LDFLAGS: "" configure: pkg-config: IDN_CPPFLAGS: "" configure: pkg-config: IDN_DIR: "" checking if idn2_lookup_ul can be linked... yes checking for idn2.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libnghttp2 options with pkg-config... found configure: -l is -lnghttp2 configure: -I is configure: -L is checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... yes checking for nghttp2/nghttp2.h... yes configure: Added to CURL_LIBRARY_PATH checking for pkg-config... (cached) /usr/bin/pkg-config checking for libnghttp3 options with pkg-config... found configure: -l is -lnghttp3 configure: -I is configure: -L is checking for nghttp3_conn_client_new_versioned in -lnghttp3... yes checking for nghttp3/nghttp3.h... yes configure: Added to CURL_LIBRARY_PATH configure: HTTP3 support is experimental checking for sys/types.h... (cached) yes checking for sys/select.h... yes checking for sys/ioctl.h... yes checking for unistd.h... (cached) yes checking for arpa/inet.h... yes checking for net/if.h... yes checking for netinet/in.h... yes checking for netinet/in6.h... no checking for sys/un.h... yes checking for linux/tcp.h... yes checking for netinet/tcp.h... yes checking for netinet/udp.h... yes checking for netdb.h... yes checking for sys/sockio.h... no checking for sys/param.h... yes checking for termios.h... yes checking for termio.h... yes checking for fcntl.h... yes checking for io.h... no checking for pwd.h... yes checking for utime.h... yes checking for sys/utime.h... no checking for sys/poll.h... yes checking for poll.h... yes checking for sys/resource.h... yes checking for libgen.h... yes checking for locale.h... yes checking for stdbool.h... yes checking for stdint.h... (cached) yes checking for sys/filio.h... no checking for sys/eventfd.h... yes checking for an ANSI C-conforming const... yes checking for size_t... yes checking for sys/types.h... (cached) yes checking for struct timeval... yes checking run-time libs availability... fine checking size of size_t... 8 checking size of long... 8 checking size of int... 4 checking size of time_t... 8 checking size of off_t... 8 checking size of curl_off_t... 8 checking size of curl_socket_t... 4 checking for long long... yes checking for ssize_t... yes checking for bool... yes checking for sa_family_t... yes checking for suseconds_t... yes checking if time_t is unsigned... no checking for struct sockaddr_storage... yes checking for sys/select.h... (cached) yes checking for select... yes checking for sys/types.h... (cached) yes checking for recv... yes checking for sys/types.h... (cached) yes checking for send... yes checking for sys/types.h... (cached) yes checking for MSG_NOSIGNAL... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking if alarm can be linked... yes checking if alarm is prototyped... yes checking if alarm is compilable... yes checking if alarm usage allowed... yes checking if alarm might be used... yes checking for sys/types.h... (cached) yes checking for strings.h... (cached) yes checking for sys/types.h... (cached) yes checking for libgen.h... (cached) yes checking if basename can be linked... yes checking if basename is prototyped... yes checking if basename is compilable... yes checking if basename usage allowed... yes checking if basename might be used... yes checking if closesocket can be linked... no checking if closesocket might be used... no checking for sys/types.h... (cached) yes checking if CloseSocket can be linked... no checking if CloseSocket might be used... no checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for fcntl.h... (cached) yes checking if fcntl can be linked... yes checking if fcntl is prototyped... yes checking if fcntl is compilable... yes checking if fcntl usage allowed... yes checking if fcntl might be used... yes checking if fcntl O_NONBLOCK is compilable... yes checking if fcntl O_NONBLOCK usage allowed... yes checking if fcntl O_NONBLOCK might be used... yes checking whether build target is a native Windows one... (cached) no checking for sys/types.h... (cached) yes checking for netdb.h... (cached) yes checking if freeaddrinfo can be linked... yes checking if freeaddrinfo is prototyped... yes checking if freeaddrinfo is compilable... yes checking if freeaddrinfo usage allowed... yes checking if freeaddrinfo might be used... yes checking for sys/types.h... (cached) yes checking for sys/xattr.h... yes checking if fsetxattr can be linked... yes checking if fsetxattr is prototyped... yes checking if fsetxattr takes 5 args.... yes checking if fsetxattr is compilable... yes checking if fsetxattr usage allowed... yes checking if fsetxattr might be used... yes checking if ftruncate can be linked... yes checking if ftruncate is prototyped... yes checking if ftruncate is compilable... yes checking if ftruncate usage allowed... yes checking if ftruncate might be used... yes checking for sys/types.h... (cached) yes checking if getaddrinfo can be linked... yes checking if getaddrinfo is prototyped... yes checking if getaddrinfo is compilable... yes checking if getaddrinfo seems to work... yes checking if getaddrinfo usage allowed... yes checking if getaddrinfo might be used... yes checking if getaddrinfo is threadsafe... yes checking if gethostbyname_r can be linked... yes checking if gethostbyname_r is prototyped... yes checking if gethostbyname_r takes 3 args.... no checking if gethostbyname_r takes 5 args.... no checking if gethostbyname_r takes 6 args.... yes checking if gethostbyname_r is compilable... yes checking if gethostbyname_r usage allowed... yes checking if gethostbyname_r might be used... yes checking if gethostname can be linked... yes checking if gethostname is prototyped... yes checking if gethostname is compilable... yes checking for gethostname arg 2 data type... size_t checking if gethostname usage allowed... yes checking if gethostname might be used... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for ifaddrs.h... yes checking if getifaddrs can be linked... yes checking if getifaddrs is prototyped... yes checking if getifaddrs is compilable... yes checking if getifaddrs seems to work... yes checking if getifaddrs usage allowed... yes checking if getifaddrs might be used... yes checking if getpeername can be linked... yes checking if getpeername is prototyped... yes checking if getpeername is compilable... yes checking if getpeername usage allowed... yes checking if getpeername might be used... yes checking if getsockname can be linked... yes checking if getsockname is prototyped... yes checking if getsockname is compilable... yes checking if getsockname usage allowed... yes checking if getsockname might be used... yes checking for sys/types.h... (cached) yes checking if gmtime_r can be linked... yes checking if gmtime_r is prototyped... yes checking if gmtime_r is compilable... yes checking if gmtime_r seems to work... yes checking if gmtime_r usage allowed... yes checking if gmtime_r might be used... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for sys/ioctl.h... (cached) yes checking for stropts.h... no checking if ioctl can be linked... yes checking if ioctl is prototyped... yes checking if ioctl is compilable... yes checking if ioctl usage allowed... yes checking if ioctl might be used... yes checking if ioctl FIONBIO is compilable... yes checking if ioctl FIONBIO usage allowed... yes checking if ioctl FIONBIO might be used... yes checking if ioctl SIOCGIFADDR is compilable... yes checking if ioctl SIOCGIFADDR usage allowed... yes checking if ioctl SIOCGIFADDR might be used... yes checking if ioctlsocket can be linked... no checking if ioctlsocket might be used... no checking if IoctlSocket can be linked... no checking if IoctlSocket might be used... no checking if memrchr can be linked... yes checking if memrchr is prototyped... yes checking if memrchr is compilable... yes checking if memrchr usage allowed... yes checking if memrchr might be used... yes checking for sys/types.h... (cached) yes checking if sigaction can be linked... yes checking if sigaction is prototyped... yes checking if sigaction is compilable... yes checking if sigaction usage allowed... yes checking if sigaction might be used... yes checking if siginterrupt can be linked... yes checking if siginterrupt is prototyped... yes checking if siginterrupt is compilable... yes checking if siginterrupt usage allowed... yes checking if siginterrupt might be used... yes checking if signal can be linked... yes checking if signal is prototyped... yes checking if signal is compilable... yes checking if signal usage allowed... yes checking if signal might be used... yes checking for sys/types.h... (cached) yes checking if sigsetjmp can be linked... no checking if sigsetjmp seems a macro... yes checking if sigsetjmp is compilable... yes checking if sigsetjmp usage allowed... yes checking if sigsetjmp might be used... yes checking if socket can be linked... yes checking if socket is prototyped... yes checking if socket is compilable... yes checking if socket usage allowed... yes checking if socket might be used... yes checking if socketpair can be linked... yes checking if socketpair is prototyped... yes checking if socketpair is compilable... yes checking if socketpair usage allowed... yes checking if socketpair might be used... yes checking if strdup can be linked... yes checking if strdup is prototyped... yes checking if strdup is compilable... yes checking if strdup usage allowed... yes checking if strdup might be used... yes checking if strerror_r can be linked... yes checking if strerror_r is prototyped... yes checking if strerror_r is compilable... yes checking if strerror_r is glibc like... yes checking if strerror_r seems to work... yes checking if strerror_r usage allowed... yes checking if strerror_r might be used... yes checking for accept4... yes checking for eventfd... yes checking for fnmatch... yes checking for geteuid... yes checking for getpass_r... no checking for getppid... yes checking for getpwuid... yes checking for getpwuid_r... yes checking for getrlimit... yes checking for gettimeofday... yes checking for if_nametoindex... yes checking for mach_absolute_time... no checking for pipe... yes checking for pipe2... yes checking for poll... yes checking for sendmmsg... yes checking for sendmsg... yes checking for setlocale... yes checking for setrlimit... yes checking for snprintf... yes checking for utime... yes checking for utimes... yes checking for realpath... yes checking for sched_yield... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for arpa/inet.h... (cached) yes checking if inet_ntop can be linked... yes checking if inet_ntop is prototyped... yes checking if inet_ntop is compilable... yes checking if inet_ntop seems to work... yes checking if inet_ntop usage allowed... yes checking if inet_ntop might be used... yes checking if inet_pton can be linked... yes checking if inet_pton is prototyped... yes checking if inet_pton is compilable... yes checking if inet_pton seems to work... yes checking if inet_pton usage allowed... yes checking if inet_pton might be used... yes checking if strcasecmp can be linked... yes checking if strcasecmp is prototyped... yes checking if strcasecmp is compilable... yes checking if strcasecmp usage allowed... yes checking if strcasecmp might be used... yes checking if strcmpi can be linked... no checking if strcmpi might be used... no checking if stricmp can be linked... no checking if stricmp might be used... no checking for setmode... no checking for fseeko... yes checking for gcc options needed to detect all undeclared functions... none needed checking whether fseeko is declared... yes checking how to set a socket into non-blocking mode... fcntl O_NONBLOCK checking for perl... /usr/bin/perl checking whether to enable the threaded resolver... yes checking for pthread.h... yes checking for pthread_create... yes checking for dirent.h... yes checking for opendir... yes checking convert -I options to -isystem... yes checking whether to enable verbose strings... yes checking whether to enable SSPI support (Windows native builds only)... no checking whether to enable basic authentication method... yes checking whether to enable bearer authentication method... yes checking whether to enable digest authentication method... yes checking whether to enable kerberos authentication method... yes checking whether to enable negotiate authentication method... yes checking whether to enable aws sig methods... yes checking whether to support NTLM... yes checking whether to enable TLS-SRP authentication... yes checking whether to enable Unix domain sockets... auto checking for struct sockaddr_un.sun_path... yes checking whether to support cookies... yes checking whether to support socketpair... yes checking whether to support HTTP authentication... yes checking whether to support DoH... yes checking whether to support the MIME API... yes checking whether to support binding connections locally... yes checking whether to support the form API... yes checking whether to support date parsing... yes checking whether to support netrc parsing... yes checking whether to support progress-meter... yes checking whether to support the SHA-512/256 hash algorithm... yes checking whether to support DNS shuffling... yes checking whether to support curl_easy_option*... yes checking whether to support alt-svc... yes checking whether to support headers-api... yes checking whether to support HSTS... yes checking whether to enable HTTPS-RR support... no checking for SSL_set0_wbio... yes checking whether to support WebSockets... yes checking whether hiding of library internal symbols will actually happen... yes checking if this build supports HTTPS-proxy... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating docs/Makefile config.status: creating docs/examples/Makefile config.status: creating docs/libcurl/Makefile config.status: creating docs/libcurl/opts/Makefile config.status: creating docs/cmdline-opts/Makefile config.status: creating include/Makefile config.status: creating include/curl/Makefile config.status: creating src/Makefile config.status: creating lib/Makefile config.status: creating scripts/Makefile config.status: creating lib/libcurl.vers config.status: creating tests/Makefile config.status: creating tests/config config.status: creating tests/configurehelp.pm config.status: creating tests/certs/Makefile config.status: creating tests/data/Makefile config.status: creating tests/server/Makefile config.status: creating tests/libtest/Makefile config.status: creating tests/unit/Makefile config.status: creating tests/tunit/Makefile config.status: creating tests/client/Makefile config.status: creating tests/http/config.ini config.status: creating tests/http/Makefile config.status: creating packages/Makefile config.status: creating packages/vms/Makefile config.status: creating curl-config config.status: creating libcurl.pc config.status: creating lib/curl_config.h config.status: executing depfiles commands config.status: executing libtool commands configure: Configured to build curl/libcurl: Host setup: riscv64-unknown-linux-gnu Install prefix: /usr Compiler: gcc CFLAGS: -march=rv64gc -mabi=lp64d -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fno-omit-frame-pointer -g -ffile-prefix-map=/build/curl/src=/usr/src/debug/curl -flto=auto -Werror-implicit-function-declaration -Wno-system-headers CFLAGS extras: CPPFLAGS: -D_GNU_SOURCE LDFLAGS: -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -flto=auto curl-config: LIBS: -lnghttp3 -lnghttp2 -lidn2 -lssh2 -lssh2 -lpsl -lssl -lcrypto -lssl -lcrypto -lgssapi_krb5 -lzstd -lbrotlidec -lz curl version: 8.15.0 SSL: enabled (OpenSSL v3+) SSH: enabled (libssh2) zlib: enabled brotli: enabled (libbrotlidec) zstd: enabled (libzstd) GSS-API: enabled (MIT Kerberos/Heimdal) GSASL: no (libgsasl not found) TLS-SRP: enabled resolver: POSIX threaded IPv6: enabled Unix sockets: enabled IDN: enabled (libidn2) Build docs: enabled (--disable-docs) Build libcurl: Shared=yes, Static=yes Built-in manual: no (--enable-manual) --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) Code coverage: disabled SSPI: no (--enable-sspi) ca cert bundle: /etc/ssl/certs/ca-certificates.crt ca cert path: no ca cert embed: no ca fallback: no LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS: no (--enable-ldaps) IPFS/IPNS: enabled RTSP: enabled RTMP: no (--with-librtmp) PSL: enabled Alt-svc: enabled (--disable-alt-svc) Headers API: enabled (--disable-headers-api) HSTS: enabled (--disable-hsts) HTTP1: enabled (internal) HTTP2: enabled (nghttp2) HTTP3: enabled (openssl + nghttp3) ECH: no (--enable-ech) HTTPS RR: no (--enable-httpsrr) SSLS-EXPORT: no (--enable-ssls-export) Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd configure: WARNING: HTTP3 is enabled but marked EXPERIMENTAL. Use with caution! Making all in lib make[1]: Entering directory '/build/curl/src/build-curl/lib' make all-am make[2]: Entering directory '/build/curl/src/build-curl/lib' CC libcurl_la-altsvc.lo CC libcurl_la-amigaos.lo CC libcurl_la-asyn-ares.lo CC libcurl_la-asyn-base.lo CC libcurl_la-asyn-thrdd.lo CC libcurl_la-bufref.lo CC libcurl_la-bufq.lo CC libcurl_la-cf-h1-proxy.lo CC libcurl_la-cf-h2-proxy.lo CC libcurl_la-cf-haproxy.lo CC libcurl_la-cf-https-connect.lo CC libcurl_la-cf-socket.lo CC libcurl_la-cfilters.lo CC libcurl_la-conncache.lo CC libcurl_la-connect.lo CC libcurl_la-content_encoding.lo CC libcurl_la-cookie.lo CC libcurl_la-cshutdn.lo CC libcurl_la-curl_addrinfo.lo CC libcurl_la-curl_des.lo CC libcurl_la-curl_endian.lo CC libcurl_la-curl_fnmatch.lo CC libcurl_la-curl_get_line.lo CC libcurl_la-curl_gethostname.lo CC libcurl_la-curl_gssapi.lo CC libcurl_la-curl_memrchr.lo CC libcurl_la-curl_ntlm_core.lo CC libcurl_la-curl_range.lo CC libcurl_la-curl_rtmp.lo CC libcurl_la-curl_sasl.lo CC libcurl_la-curl_sha512_256.lo CC libcurl_la-curl_sspi.lo CC libcurl_la-curl_threads.lo CC libcurl_la-curl_trc.lo CC libcurl_la-cw-out.lo CC libcurl_la-cw-pause.lo CC libcurl_la-dict.lo CC libcurl_la-doh.lo CC libcurl_la-dynhds.lo CC libcurl_la-easy.lo CC libcurl_la-easygetopt.lo CC libcurl_la-easyoptions.lo CC libcurl_la-escape.lo CC libcurl_la-fake_addrinfo.lo CC libcurl_la-file.lo CC libcurl_la-fileinfo.lo CC libcurl_la-fopen.lo CC libcurl_la-formdata.lo CC libcurl_la-ftp.lo CC libcurl_la-ftplistparser.lo CC libcurl_la-getenv.lo CC libcurl_la-getinfo.lo CC libcurl_la-gopher.lo CC libcurl_la-hash.lo CC libcurl_la-headers.lo CC libcurl_la-hmac.lo CC libcurl_la-hostip.lo CC libcurl_la-hostip4.lo CC libcurl_la-hostip6.lo CC libcurl_la-hsts.lo CC libcurl_la-http.lo CC libcurl_la-http1.lo CC libcurl_la-http2.lo CC libcurl_la-http_aws_sigv4.lo CC libcurl_la-http_chunks.lo CC libcurl_la-http_digest.lo CC libcurl_la-http_negotiate.lo CC libcurl_la-http_ntlm.lo CC libcurl_la-http_proxy.lo CC libcurl_la-httpsrr.lo CC libcurl_la-idn.lo CC libcurl_la-if2ip.lo CC libcurl_la-imap.lo CC libcurl_la-krb5.lo CC libcurl_la-ldap.lo CC libcurl_la-llist.lo CC libcurl_la-macos.lo CC libcurl_la-md4.lo CC libcurl_la-md5.lo CC libcurl_la-memdebug.lo CC libcurl_la-mime.lo CC libcurl_la-mprintf.lo CC libcurl_la-mqtt.lo CC libcurl_la-multi.lo CC libcurl_la-multi_ev.lo CC libcurl_la-netrc.lo CC libcurl_la-noproxy.lo CC libcurl_la-openldap.lo CC libcurl_la-parsedate.lo CC libcurl_la-pingpong.lo CC libcurl_la-pop3.lo CC libcurl_la-progress.lo CC libcurl_la-psl.lo CC libcurl_la-rand.lo CC libcurl_la-rename.lo CC libcurl_la-request.lo CC libcurl_la-rtsp.lo CC libcurl_la-select.lo CC libcurl_la-sendf.lo CC libcurl_la-setopt.lo CC libcurl_la-sha256.lo CC libcurl_la-share.lo CC libcurl_la-slist.lo CC libcurl_la-smb.lo CC libcurl_la-smtp.lo CC libcurl_la-socketpair.lo CC libcurl_la-socks.lo CC libcurl_la-socks_gssapi.lo CC libcurl_la-socks_sspi.lo CC libcurl_la-speedcheck.lo CC libcurl_la-splay.lo CC libcurl_la-strcase.lo CC libcurl_la-strdup.lo CC libcurl_la-strequal.lo CC libcurl_la-strerror.lo CC libcurl_la-system_win32.lo CC libcurl_la-telnet.lo CC libcurl_la-tftp.lo CC libcurl_la-transfer.lo CC libcurl_la-uint-bset.lo CC libcurl_la-uint-hash.lo CC libcurl_la-uint-spbset.lo CC libcurl_la-uint-table.lo CC libcurl_la-url.lo CC libcurl_la-urlapi.lo CC libcurl_la-version.lo CC libcurl_la-ws.lo CC libcurlu_la-altsvc.lo CC libcurlu_la-amigaos.lo CC libcurlu_la-asyn-ares.lo CC libcurlu_la-asyn-base.lo CC libcurlu_la-asyn-thrdd.lo CC libcurlu_la-bufq.lo CC libcurlu_la-bufref.lo CC libcurlu_la-cf-h1-proxy.lo CC libcurlu_la-cf-h2-proxy.lo CC libcurlu_la-cf-haproxy.lo CC libcurlu_la-cf-https-connect.lo CC libcurlu_la-cf-socket.lo CC libcurlu_la-cfilters.lo CC libcurlu_la-conncache.lo CC libcurlu_la-connect.lo CC libcurlu_la-content_encoding.lo CC libcurlu_la-cookie.lo CC libcurlu_la-cshutdn.lo CC libcurlu_la-curl_addrinfo.lo CC libcurlu_la-curl_des.lo CC libcurlu_la-curl_endian.lo CC libcurlu_la-curl_fnmatch.lo CC libcurlu_la-curl_get_line.lo CC libcurlu_la-curl_gethostname.lo CC libcurlu_la-curl_gssapi.lo CC libcurlu_la-curl_memrchr.lo CC libcurlu_la-curl_ntlm_core.lo CC libcurlu_la-curl_range.lo CC libcurlu_la-curl_rtmp.lo CC libcurlu_la-curl_sasl.lo CC libcurlu_la-curl_sha512_256.lo CC libcurlu_la-curl_sspi.lo CC libcurlu_la-curl_threads.lo CC libcurlu_la-curl_trc.lo CC libcurlu_la-cw-out.lo CC libcurlu_la-cw-pause.lo CC libcurlu_la-dict.lo CC libcurlu_la-doh.lo CC libcurlu_la-dynhds.lo CC libcurlu_la-easy.lo CC libcurlu_la-easygetopt.lo CC libcurlu_la-easyoptions.lo CC libcurlu_la-escape.lo CC libcurlu_la-fake_addrinfo.lo CC libcurlu_la-file.lo CC libcurlu_la-fileinfo.lo CC libcurlu_la-fopen.lo CC libcurlu_la-formdata.lo CC libcurlu_la-ftp.lo CC libcurlu_la-ftplistparser.lo CC libcurlu_la-getenv.lo CC libcurlu_la-getinfo.lo CC libcurlu_la-gopher.lo CC libcurlu_la-hash.lo CC libcurlu_la-headers.lo CC libcurlu_la-hmac.lo CC libcurlu_la-hostip.lo CC libcurlu_la-hostip4.lo CC libcurlu_la-hostip6.lo CC libcurlu_la-hsts.lo CC libcurlu_la-http.lo CC libcurlu_la-http1.lo CC libcurlu_la-http2.lo CC libcurlu_la-http_aws_sigv4.lo CC libcurlu_la-http_chunks.lo CC libcurlu_la-http_digest.lo CC libcurlu_la-http_negotiate.lo CC libcurlu_la-http_ntlm.lo CC libcurlu_la-http_proxy.lo CC libcurlu_la-httpsrr.lo CC libcurlu_la-idn.lo CC libcurlu_la-if2ip.lo CC libcurlu_la-imap.lo CC libcurlu_la-krb5.lo CC libcurlu_la-ldap.lo CC libcurlu_la-llist.lo CC libcurlu_la-macos.lo CC libcurlu_la-md4.lo CC libcurlu_la-md5.lo CC libcurlu_la-memdebug.lo CC libcurlu_la-mime.lo CC libcurlu_la-mprintf.lo CC libcurlu_la-mqtt.lo CC libcurlu_la-multi.lo CC libcurlu_la-multi_ev.lo CC libcurlu_la-netrc.lo CC libcurlu_la-noproxy.lo CC libcurlu_la-openldap.lo CC libcurlu_la-parsedate.lo CC libcurlu_la-pingpong.lo CC libcurlu_la-pop3.lo CC libcurlu_la-progress.lo CC libcurlu_la-psl.lo CC libcurlu_la-rand.lo CC libcurlu_la-rename.lo CC libcurlu_la-request.lo CC libcurlu_la-rtsp.lo CC libcurlu_la-select.lo CC libcurlu_la-sendf.lo CC libcurlu_la-setopt.lo CC libcurlu_la-sha256.lo CC libcurlu_la-share.lo CC libcurlu_la-slist.lo CC libcurlu_la-smb.lo CC libcurlu_la-smtp.lo CC libcurlu_la-socketpair.lo CC libcurlu_la-socks.lo CC libcurlu_la-socks_gssapi.lo CC libcurlu_la-socks_sspi.lo CC libcurlu_la-speedcheck.lo CC libcurlu_la-splay.lo CC libcurlu_la-strcase.lo CC libcurlu_la-strdup.lo CC libcurlu_la-strequal.lo CC libcurlu_la-strerror.lo CC libcurlu_la-system_win32.lo CC libcurlu_la-telnet.lo CC libcurlu_la-tftp.lo CC libcurlu_la-transfer.lo CC libcurlu_la-uint-bset.lo CC libcurlu_la-uint-hash.lo CC libcurlu_la-uint-spbset.lo CC libcurlu_la-uint-table.lo CC libcurlu_la-url.lo CC libcurlu_la-urlapi.lo CC libcurlu_la-version.lo CC libcurlu_la-ws.lo CC vauth/libcurlu_la-cleartext.lo CC vauth/libcurlu_la-cram.lo CC vauth/libcurlu_la-digest.lo CC vauth/libcurlu_la-digest_sspi.lo CC vauth/libcurlu_la-gsasl.lo CC vauth/libcurlu_la-krb5_gssapi.lo CC vauth/libcurlu_la-krb5_sspi.lo CC vauth/libcurlu_la-ntlm.lo CC vauth/libcurlu_la-ntlm_sspi.lo CC vauth/libcurlu_la-oauth2.lo CC vauth/libcurlu_la-spnego_gssapi.lo CC vauth/libcurlu_la-spnego_sspi.lo CC vauth/libcurlu_la-vauth.lo CC vtls/libcurlu_la-cipher_suite.lo CC vtls/libcurlu_la-gtls.lo CC vtls/libcurlu_la-hostcheck.lo CC vtls/libcurlu_la-keylog.lo CC vtls/libcurlu_la-mbedtls.lo CC vtls/libcurlu_la-mbedtls_threadlock.lo CC vtls/libcurlu_la-openssl.lo CC vtls/libcurlu_la-rustls.lo CC vtls/libcurlu_la-schannel.lo CC vtls/libcurlu_la-schannel_verify.lo CC vtls/libcurlu_la-vtls.lo CC vtls/libcurlu_la-vtls_scache.lo CC vtls/libcurlu_la-vtls_spack.lo CC vtls/libcurlu_la-wolfssl.lo CC vtls/libcurlu_la-x509asn1.lo CC vquic/libcurlu_la-curl_msh3.lo CC vquic/libcurlu_la-curl_ngtcp2.lo CC vquic/libcurlu_la-curl_osslq.lo CC vquic/libcurlu_la-curl_quiche.lo CC vquic/libcurlu_la-vquic.lo CC vquic/libcurlu_la-vquic-tls.lo CC vssh/libcurlu_la-libssh.lo CC vssh/libcurlu_la-libssh2.lo CC vssh/libcurlu_la-curl_path.lo CC vssh/libcurlu_la-wolfssh.lo CC curlx/libcurlu_la-base64.lo CC curlx/libcurlu_la-dynbuf.lo CC curlx/libcurlu_la-inet_ntop.lo CC curlx/libcurlu_la-inet_pton.lo CC curlx/libcurlu_la-multibyte.lo CC curlx/libcurlu_la-nonblock.lo CC curlx/libcurlu_la-strparse.lo CC curlx/libcurlu_la-timediff.lo CC curlx/libcurlu_la-timeval.lo CC curlx/libcurlu_la-version_win32.lo CC curlx/libcurlu_la-wait.lo CC curlx/libcurlu_la-warnless.lo CC curlx/libcurlu_la-winapi.lo UNITPR unitprotos.h CC vauth/libcurl_la-cleartext.lo CC vauth/libcurl_la-cram.lo CC vauth/libcurl_la-digest.lo CC vauth/libcurl_la-digest_sspi.lo CC vauth/libcurl_la-gsasl.lo CC vauth/libcurl_la-krb5_gssapi.lo CC vauth/libcurl_la-krb5_sspi.lo CC vauth/libcurl_la-ntlm.lo CC vauth/libcurl_la-ntlm_sspi.lo CC vauth/libcurl_la-oauth2.lo CC vauth/libcurl_la-spnego_gssapi.lo CC vauth/libcurl_la-spnego_sspi.lo CC vauth/libcurl_la-vauth.lo CC vtls/libcurl_la-cipher_suite.lo CC vtls/libcurl_la-gtls.lo CC vtls/libcurl_la-hostcheck.lo CC vtls/libcurl_la-keylog.lo CC vtls/libcurl_la-mbedtls.lo CC vtls/libcurl_la-mbedtls_threadlock.lo CC vtls/libcurl_la-openssl.lo CC vtls/libcurl_la-rustls.lo CC vtls/libcurl_la-schannel.lo CC vtls/libcurl_la-schannel_verify.lo CC vtls/libcurl_la-vtls.lo CC vtls/libcurl_la-vtls_scache.lo CC vtls/libcurl_la-vtls_spack.lo CC vtls/libcurl_la-wolfssl.lo CC vtls/libcurl_la-x509asn1.lo CC vquic/libcurl_la-curl_msh3.lo CC vquic/libcurl_la-curl_ngtcp2.lo CC vquic/libcurl_la-curl_osslq.lo CC vquic/libcurl_la-curl_quiche.lo CC vquic/libcurl_la-vquic.lo CC vquic/libcurl_la-vquic-tls.lo CC vssh/libcurl_la-libssh.lo CC vssh/libcurl_la-libssh2.lo CC vssh/libcurl_la-curl_path.lo CC vssh/libcurl_la-wolfssh.lo CC curlx/libcurl_la-base64.lo CC curlx/libcurl_la-dynbuf.lo CC curlx/libcurl_la-inet_ntop.lo CC curlx/libcurl_la-inet_pton.lo CC curlx/libcurl_la-multibyte.lo CC curlx/libcurl_la-nonblock.lo CC curlx/libcurl_la-strparse.lo CC curlx/libcurl_la-timediff.lo CC curlx/libcurl_la-timeval.lo CC curlx/libcurl_la-version_win32.lo CC curlx/libcurl_la-wait.lo CC curlx/libcurl_la-warnless.lo CC curlx/libcurl_la-winapi.lo CCLD libcurlu.la CCLD libcurl.la make[2]: Leaving directory '/build/curl/src/build-curl/lib' make[1]: Leaving directory '/build/curl/src/build-curl/lib' Making all in docs make[1]: Entering directory '/build/curl/src/build-curl/docs' RENDER mk-ca-bundle.1 RENDER curl-config.1 RENDER runtests.1 RENDER testcurl.1 Making all in . make[2]: Entering directory '/build/curl/src/build-curl/docs' RENDER wcurl.1 make[2]: Leaving directory '/build/curl/src/build-curl/docs' Making all in cmdline-opts make[2]: Entering directory '/build/curl/src/build-curl/docs/cmdline-opts' GENERATE curl.1 GENERATE curl.txt make[2]: Leaving directory '/build/curl/src/build-curl/docs/cmdline-opts' Making all in libcurl make[2]: Entering directory '/build/curl/src/build-curl/docs/libcurl' Making all in opts make[3]: Entering directory '/build/curl/src/build-curl/docs/libcurl/opts' RENDER CURLINFO_ACTIVESOCKET.3 RENDER CURLINFO_APPCONNECT_TIME.3 RENDER CURLINFO_APPCONNECT_TIME_T.3 RENDER CURLINFO_CAINFO.3 RENDER CURLINFO_CAPATH.3 RENDER CURLINFO_CERTINFO.3 RENDER CURLINFO_CONDITION_UNMET.3 RENDER CURLINFO_CONNECT_TIME.3 RENDER CURLINFO_CONN_ID.3 RENDER CURLINFO_CONNECT_TIME_T.3 RENDER CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 RENDER CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3 RENDER CURLINFO_CONTENT_LENGTH_UPLOAD.3 RENDER CURLINFO_CONTENT_LENGTH_UPLOAD_T.3 RENDER CURLINFO_CONTENT_TYPE.3 RENDER CURLINFO_COOKIELIST.3 RENDER CURLINFO_EARLYDATA_SENT_T.3 RENDER CURLINFO_EFFECTIVE_METHOD.3 RENDER CURLINFO_EFFECTIVE_URL.3 RENDER CURLINFO_FILETIME.3 RENDER CURLINFO_FILETIME_T.3 RENDER CURLINFO_FTP_ENTRY_PATH.3 RENDER CURLINFO_HEADER_SIZE.3 RENDER CURLINFO_HTTP_CONNECTCODE.3 RENDER CURLINFO_HTTP_VERSION.3 RENDER CURLINFO_HTTPAUTH_AVAIL.3 RENDER CURLINFO_HTTPAUTH_USED.3 RENDER CURLINFO_LASTSOCKET.3 RENDER CURLINFO_LOCAL_IP.3 RENDER CURLINFO_LOCAL_PORT.3 RENDER CURLINFO_NAMELOOKUP_TIME.3 RENDER CURLINFO_NAMELOOKUP_TIME_T.3 RENDER CURLINFO_NUM_CONNECTS.3 RENDER CURLINFO_OS_ERRNO.3 RENDER CURLINFO_PRETRANSFER_TIME.3 RENDER CURLINFO_PRETRANSFER_TIME_T.3 RENDER CURLINFO_POSTTRANSFER_TIME_T.3 RENDER CURLINFO_PRIMARY_IP.3 RENDER CURLINFO_PRIMARY_PORT.3 RENDER CURLINFO_PRIVATE.3 RENDER CURLINFO_PROTOCOL.3 RENDER CURLINFO_PROXY_ERROR.3 RENDER CURLINFO_PROXY_SSL_VERIFYRESULT.3 RENDER CURLINFO_PROXYAUTH_AVAIL.3 RENDER CURLINFO_PROXYAUTH_USED.3 RENDER CURLINFO_QUEUE_TIME_T.3 RENDER CURLINFO_REDIRECT_COUNT.3 RENDER CURLINFO_REDIRECT_TIME.3 RENDER CURLINFO_REDIRECT_TIME_T.3 RENDER CURLINFO_REDIRECT_URL.3 RENDER CURLINFO_REFERER.3 RENDER CURLINFO_REQUEST_SIZE.3 RENDER CURLINFO_RESPONSE_CODE.3 RENDER CURLINFO_RETRY_AFTER.3 RENDER CURLINFO_RTSP_CLIENT_CSEQ.3 RENDER CURLINFO_RTSP_CSEQ_RECV.3 RENDER CURLINFO_RTSP_SERVER_CSEQ.3 RENDER CURLINFO_RTSP_SESSION_ID.3 RENDER CURLINFO_SCHEME.3 RENDER CURLINFO_SIZE_DOWNLOAD.3 RENDER CURLINFO_SIZE_DOWNLOAD_T.3 RENDER CURLINFO_SIZE_UPLOAD.3 RENDER CURLINFO_SIZE_UPLOAD_T.3 RENDER CURLINFO_SPEED_DOWNLOAD.3 RENDER CURLINFO_SPEED_DOWNLOAD_T.3 RENDER CURLINFO_SPEED_UPLOAD.3 RENDER CURLINFO_SPEED_UPLOAD_T.3 RENDER CURLINFO_SSL_ENGINES.3 RENDER CURLINFO_SSL_VERIFYRESULT.3 RENDER CURLINFO_STARTTRANSFER_TIME.3 RENDER CURLINFO_STARTTRANSFER_TIME_T.3 RENDER CURLINFO_TLS_SESSION.3 RENDER CURLINFO_TLS_SSL_PTR.3 RENDER CURLINFO_TOTAL_TIME.3 RENDER CURLINFO_TOTAL_TIME_T.3 RENDER CURLINFO_USED_PROXY.3 RENDER CURLINFO_XFER_ID.3 RENDER CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3 RENDER CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3 RENDER CURLMOPT_MAX_CONCURRENT_STREAMS.3 RENDER CURLMOPT_MAX_HOST_CONNECTIONS.3 RENDER CURLMOPT_MAX_PIPELINE_LENGTH.3 RENDER CURLMOPT_MAX_TOTAL_CONNECTIONS.3 RENDER CURLMOPT_MAXCONNECTS.3 RENDER CURLMOPT_PIPELINING.3 RENDER CURLMOPT_PIPELINING_SERVER_BL.3 RENDER CURLMOPT_PIPELINING_SITE_BL.3 RENDER CURLMOPT_PUSHDATA.3 RENDER CURLMOPT_PUSHFUNCTION.3 RENDER CURLMOPT_SOCKETDATA.3 RENDER CURLMOPT_SOCKETFUNCTION.3 RENDER CURLMOPT_TIMERDATA.3 RENDER CURLMOPT_TIMERFUNCTION.3 RENDER CURLOPT_ABSTRACT_UNIX_SOCKET.3 RENDER CURLOPT_ACCEPT_ENCODING.3 RENDER CURLOPT_ACCEPTTIMEOUT_MS.3 RENDER CURLOPT_ADDRESS_SCOPE.3 RENDER CURLOPT_ALTSVC.3 RENDER CURLOPT_ALTSVC_CTRL.3 RENDER CURLOPT_APPEND.3 RENDER CURLOPT_AUTOREFERER.3 RENDER CURLOPT_AWS_SIGV4.3 RENDER CURLOPT_BUFFERSIZE.3 RENDER CURLOPT_CAINFO.3 RENDER CURLOPT_CAINFO_BLOB.3 RENDER CURLOPT_CAPATH.3 RENDER CURLOPT_CA_CACHE_TIMEOUT.3 RENDER CURLOPT_CERTINFO.3 RENDER CURLOPT_CHUNK_BGN_FUNCTION.3 RENDER CURLOPT_CHUNK_DATA.3 RENDER CURLOPT_CHUNK_END_FUNCTION.3 RENDER CURLOPT_CLOSESOCKETDATA.3 RENDER CURLOPT_CLOSESOCKETFUNCTION.3 RENDER CURLOPT_CONNECT_ONLY.3 RENDER CURLOPT_CONNECT_TO.3 RENDER CURLOPT_CONNECTTIMEOUT.3 RENDER CURLOPT_CONNECTTIMEOUT_MS.3 RENDER CURLOPT_CONV_FROM_NETWORK_FUNCTION.3 RENDER CURLOPT_CONV_FROM_UTF8_FUNCTION.3 RENDER CURLOPT_CONV_TO_NETWORK_FUNCTION.3 RENDER CURLOPT_COOKIE.3 RENDER CURLOPT_COOKIEFILE.3 RENDER CURLOPT_COOKIEJAR.3 RENDER CURLOPT_COOKIELIST.3 RENDER CURLOPT_COOKIESESSION.3 RENDER CURLOPT_COPYPOSTFIELDS.3 RENDER CURLOPT_CRLF.3 RENDER CURLOPT_CRLFILE.3 RENDER CURLOPT_CURLU.3 RENDER CURLOPT_CUSTOMREQUEST.3 RENDER CURLOPT_DEBUGDATA.3 RENDER CURLOPT_DEBUGFUNCTION.3 RENDER CURLOPT_DEFAULT_PROTOCOL.3 RENDER CURLOPT_DIRLISTONLY.3 RENDER CURLOPT_DISALLOW_USERNAME_IN_URL.3 RENDER CURLOPT_DNS_CACHE_TIMEOUT.3 RENDER CURLOPT_DNS_INTERFACE.3 RENDER CURLOPT_DNS_LOCAL_IP4.3 RENDER CURLOPT_DNS_LOCAL_IP6.3 RENDER CURLOPT_DNS_SERVERS.3 RENDER CURLOPT_DNS_SHUFFLE_ADDRESSES.3 RENDER CURLOPT_DNS_USE_GLOBAL_CACHE.3 RENDER CURLOPT_DOH_SSL_VERIFYHOST.3 RENDER CURLOPT_DOH_SSL_VERIFYPEER.3 RENDER CURLOPT_DOH_SSL_VERIFYSTATUS.3 RENDER CURLOPT_DOH_URL.3 RENDER CURLOPT_ECH.3 RENDER CURLOPT_EGDSOCKET.3 RENDER CURLOPT_ERRORBUFFER.3 RENDER CURLOPT_EXPECT_100_TIMEOUT_MS.3 RENDER CURLOPT_FAILONERROR.3 RENDER CURLOPT_FILETIME.3 RENDER CURLOPT_FNMATCH_DATA.3 RENDER CURLOPT_FNMATCH_FUNCTION.3 RENDER CURLOPT_FOLLOWLOCATION.3 RENDER CURLOPT_FORBID_REUSE.3 RENDER CURLOPT_FRESH_CONNECT.3 RENDER CURLOPT_FTP_ACCOUNT.3 RENDER CURLOPT_FTP_ALTERNATIVE_TO_USER.3 RENDER CURLOPT_FTP_CREATE_MISSING_DIRS.3 RENDER CURLOPT_FTP_FILEMETHOD.3 RENDER CURLOPT_FTP_SKIP_PASV_IP.3 RENDER CURLOPT_FTP_SSL_CCC.3 RENDER CURLOPT_FTP_USE_EPRT.3 RENDER CURLOPT_FTP_USE_EPSV.3 RENDER CURLOPT_FTP_USE_PRET.3 RENDER CURLOPT_FTPPORT.3 RENDER CURLOPT_FTPSSLAUTH.3 RENDER CURLOPT_GSSAPI_DELEGATION.3 RENDER CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS.3 RENDER CURLOPT_HAPROXYPROTOCOL.3 RENDER CURLOPT_HAPROXY_CLIENT_IP.3 RENDER CURLOPT_HEADER.3 RENDER CURLOPT_HEADERDATA.3 RENDER CURLOPT_HEADERFUNCTION.3 RENDER CURLOPT_HEADEROPT.3 RENDER CURLOPT_HSTS.3 RENDER CURLOPT_HSTS_CTRL.3 RENDER CURLOPT_HSTSREADDATA.3 RENDER CURLOPT_HSTSREADFUNCTION.3 RENDER CURLOPT_HSTSWRITEDATA.3 RENDER CURLOPT_HSTSWRITEFUNCTION.3 RENDER CURLOPT_HTTP09_ALLOWED.3 RENDER CURLOPT_HTTP200ALIASES.3 RENDER CURLOPT_HTTP_CONTENT_DECODING.3 RENDER CURLOPT_HTTP_TRANSFER_DECODING.3 RENDER CURLOPT_HTTP_VERSION.3 RENDER CURLOPT_HTTPAUTH.3 RENDER CURLOPT_HTTPGET.3 RENDER CURLOPT_HTTPHEADER.3 RENDER CURLOPT_HTTPPOST.3 RENDER CURLOPT_HTTPPROXYTUNNEL.3 RENDER CURLOPT_IGNORE_CONTENT_LENGTH.3 RENDER CURLOPT_INFILESIZE.3 RENDER CURLOPT_INFILESIZE_LARGE.3 RENDER CURLOPT_INTERFACE.3 RENDER CURLOPT_INTERLEAVEDATA.3 RENDER CURLOPT_INTERLEAVEFUNCTION.3 RENDER CURLOPT_IOCTLDATA.3 RENDER CURLOPT_IOCTLFUNCTION.3 RENDER CURLOPT_IPRESOLVE.3 RENDER CURLOPT_ISSUERCERT.3 RENDER CURLOPT_ISSUERCERT_BLOB.3 RENDER CURLOPT_KEEP_SENDING_ON_ERROR.3 RENDER CURLOPT_KEYPASSWD.3 RENDER CURLOPT_KRBLEVEL.3 RENDER CURLOPT_LOCALPORT.3 RENDER CURLOPT_LOCALPORTRANGE.3 RENDER CURLOPT_LOGIN_OPTIONS.3 RENDER CURLOPT_LOW_SPEED_LIMIT.3 RENDER CURLOPT_LOW_SPEED_TIME.3 RENDER CURLOPT_MAIL_AUTH.3 RENDER CURLOPT_MAIL_FROM.3 RENDER CURLOPT_MAIL_RCPT.3 RENDER CURLOPT_MAIL_RCPT_ALLOWFAILS.3 RENDER CURLOPT_MAX_RECV_SPEED_LARGE.3 RENDER CURLOPT_MAX_SEND_SPEED_LARGE.3 RENDER CURLOPT_MAXAGE_CONN.3 RENDER CURLOPT_MAXCONNECTS.3 RENDER CURLOPT_MAXFILESIZE.3 RENDER CURLOPT_MAXFILESIZE_LARGE.3 RENDER CURLOPT_MAXLIFETIME_CONN.3 RENDER CURLOPT_MAXREDIRS.3 RENDER CURLOPT_MIME_OPTIONS.3 RENDER CURLOPT_MIMEPOST.3 RENDER CURLOPT_NETRC.3 RENDER CURLOPT_NETRC_FILE.3 RENDER CURLOPT_NEW_DIRECTORY_PERMS.3 RENDER CURLOPT_NEW_FILE_PERMS.3 RENDER CURLOPT_NOBODY.3 RENDER CURLOPT_NOPROGRESS.3 RENDER CURLOPT_NOPROXY.3 RENDER CURLOPT_NOSIGNAL.3 RENDER CURLOPT_OPENSOCKETDATA.3 RENDER CURLOPT_OPENSOCKETFUNCTION.3 RENDER CURLOPT_PASSWORD.3 RENDER CURLOPT_PATH_AS_IS.3 RENDER CURLOPT_PINNEDPUBLICKEY.3 RENDER CURLOPT_PIPEWAIT.3 RENDER CURLOPT_PORT.3 RENDER CURLOPT_POST.3 RENDER CURLOPT_POSTFIELDS.3 RENDER CURLOPT_POSTFIELDSIZE.3 RENDER CURLOPT_POSTFIELDSIZE_LARGE.3 RENDER CURLOPT_POSTQUOTE.3 RENDER CURLOPT_POSTREDIR.3 RENDER CURLOPT_PRE_PROXY.3 RENDER CURLOPT_PREQUOTE.3 RENDER CURLOPT_PREREQDATA.3 RENDER CURLOPT_PREREQFUNCTION.3 RENDER CURLOPT_PRIVATE.3 RENDER CURLOPT_PROGRESSDATA.3 RENDER CURLOPT_PROGRESSFUNCTION.3 RENDER CURLOPT_PROTOCOLS.3 RENDER CURLOPT_PROTOCOLS_STR.3 RENDER CURLOPT_PROXY.3 RENDER CURLOPT_PROXY_CAINFO.3 RENDER CURLOPT_PROXY_CAINFO_BLOB.3 RENDER CURLOPT_PROXY_CAPATH.3 RENDER CURLOPT_PROXY_CRLFILE.3 RENDER CURLOPT_PROXY_ISSUERCERT.3 RENDER CURLOPT_PROXY_ISSUERCERT_BLOB.3 RENDER CURLOPT_PROXY_KEYPASSWD.3 RENDER CURLOPT_PROXY_PINNEDPUBLICKEY.3 RENDER CURLOPT_PROXY_SERVICE_NAME.3 RENDER CURLOPT_PROXY_SSL_CIPHER_LIST.3 RENDER CURLOPT_PROXY_SSL_OPTIONS.3 RENDER CURLOPT_PROXY_SSL_VERIFYHOST.3 RENDER CURLOPT_PROXY_SSL_VERIFYPEER.3 RENDER CURLOPT_PROXY_SSLCERT.3 RENDER CURLOPT_PROXY_SSLCERT_BLOB.3 RENDER CURLOPT_PROXY_SSLCERTTYPE.3 RENDER CURLOPT_PROXY_SSLKEY.3 RENDER CURLOPT_PROXY_SSLKEY_BLOB.3 RENDER CURLOPT_PROXY_SSLKEYTYPE.3 RENDER CURLOPT_PROXY_SSLVERSION.3 RENDER CURLOPT_PROXY_TLS13_CIPHERS.3 RENDER CURLOPT_PROXY_TLSAUTH_PASSWORD.3 RENDER CURLOPT_PROXY_TLSAUTH_TYPE.3 RENDER CURLOPT_PROXY_TLSAUTH_USERNAME.3 RENDER CURLOPT_PROXY_TRANSFER_MODE.3 RENDER CURLOPT_PROXYAUTH.3 RENDER CURLOPT_PROXYHEADER.3 RENDER CURLOPT_PROXYPASSWORD.3 RENDER CURLOPT_PROXYPORT.3 RENDER CURLOPT_PROXYTYPE.3 RENDER CURLOPT_PROXYUSERNAME.3 RENDER CURLOPT_PROXYUSERPWD.3 RENDER CURLOPT_PUT.3 RENDER CURLOPT_QUICK_EXIT.3 RENDER CURLOPT_QUOTE.3 RENDER CURLOPT_RANDOM_FILE.3 RENDER CURLOPT_RANGE.3 RENDER CURLOPT_READDATA.3 RENDER CURLOPT_READFUNCTION.3 RENDER CURLOPT_REDIR_PROTOCOLS.3 RENDER CURLOPT_REDIR_PROTOCOLS_STR.3 RENDER CURLOPT_REFERER.3 RENDER CURLOPT_REQUEST_TARGET.3 RENDER CURLOPT_RESOLVE.3 RENDER CURLOPT_RESOLVER_START_DATA.3 RENDER CURLOPT_RESOLVER_START_FUNCTION.3 RENDER CURLOPT_RESUME_FROM.3 RENDER CURLOPT_RESUME_FROM_LARGE.3 RENDER CURLOPT_RTSP_CLIENT_CSEQ.3 RENDER CURLOPT_RTSP_REQUEST.3 RENDER CURLOPT_RTSP_SERVER_CSEQ.3 RENDER CURLOPT_RTSP_SESSION_ID.3 RENDER CURLOPT_RTSP_STREAM_URI.3 RENDER CURLOPT_RTSP_TRANSPORT.3 RENDER CURLOPT_SASL_AUTHZID.3 RENDER CURLOPT_SASL_IR.3 RENDER CURLOPT_SEEKDATA.3 RENDER CURLOPT_SEEKFUNCTION.3 RENDER CURLOPT_SERVER_RESPONSE_TIMEOUT.3 RENDER CURLOPT_SERVER_RESPONSE_TIMEOUT_MS.3 RENDER CURLOPT_SERVICE_NAME.3 RENDER CURLOPT_SHARE.3 RENDER CURLOPT_SOCKOPTDATA.3 RENDER CURLOPT_SOCKOPTFUNCTION.3 RENDER CURLOPT_SOCKS5_AUTH.3 RENDER CURLOPT_SOCKS5_GSSAPI_NEC.3 RENDER CURLOPT_SOCKS5_GSSAPI_SERVICE.3 RENDER CURLOPT_SSH_AUTH_TYPES.3 RENDER CURLOPT_SSH_COMPRESSION.3 RENDER CURLOPT_SSH_HOSTKEYDATA.3 RENDER CURLOPT_SSH_HOSTKEYFUNCTION.3 RENDER CURLOPT_SSH_HOST_PUBLIC_KEY_MD5.3 RENDER CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256.3 RENDER CURLOPT_SSH_KEYDATA.3 RENDER CURLOPT_SSH_KEYFUNCTION.3 RENDER CURLOPT_SSH_KNOWNHOSTS.3 RENDER CURLOPT_SSH_PRIVATE_KEYFILE.3 RENDER CURLOPT_SSH_PUBLIC_KEYFILE.3 RENDER CURLOPT_SSL_CIPHER_LIST.3 RENDER CURLOPT_SSL_CTX_DATA.3 RENDER CURLOPT_SSL_CTX_FUNCTION.3 RENDER CURLOPT_SSL_EC_CURVES.3 RENDER CURLOPT_SSL_ENABLE_ALPN.3 RENDER CURLOPT_SSL_ENABLE_NPN.3 RENDER CURLOPT_SSL_FALSESTART.3 RENDER CURLOPT_SSL_OPTIONS.3 RENDER CURLOPT_SSL_SESSIONID_CACHE.3 RENDER CURLOPT_SSL_SIGNATURE_ALGORITHMS.3 RENDER CURLOPT_SSL_VERIFYHOST.3 RENDER CURLOPT_SSL_VERIFYPEER.3 RENDER CURLOPT_SSL_VERIFYSTATUS.3 RENDER CURLOPT_SSLCERT.3 RENDER CURLOPT_SSLCERT_BLOB.3 RENDER CURLOPT_SSLCERTTYPE.3 RENDER CURLOPT_SSLENGINE.3 RENDER CURLOPT_SSLENGINE_DEFAULT.3 RENDER CURLOPT_SSLKEY.3 RENDER CURLOPT_SSLKEY_BLOB.3 RENDER CURLOPT_SSLKEYTYPE.3 RENDER CURLOPT_SSLVERSION.3 RENDER CURLOPT_STDERR.3 RENDER CURLOPT_STREAM_DEPENDS.3 RENDER CURLOPT_STREAM_DEPENDS_E.3 RENDER CURLOPT_STREAM_WEIGHT.3 RENDER CURLOPT_SUPPRESS_CONNECT_HEADERS.3 RENDER CURLOPT_TCP_FASTOPEN.3 RENDER CURLOPT_TCP_KEEPALIVE.3 RENDER CURLOPT_TCP_KEEPIDLE.3 RENDER CURLOPT_TCP_KEEPINTVL.3 RENDER CURLOPT_TCP_KEEPCNT.3 RENDER CURLOPT_TCP_NODELAY.3 RENDER CURLOPT_TELNETOPTIONS.3 RENDER CURLOPT_TFTP_BLKSIZE.3 RENDER CURLOPT_TFTP_NO_OPTIONS.3 RENDER CURLOPT_TIMECONDITION.3 RENDER CURLOPT_TIMEOUT.3 RENDER CURLOPT_TIMEOUT_MS.3 RENDER CURLOPT_TIMEVALUE.3 RENDER CURLOPT_TIMEVALUE_LARGE.3 RENDER CURLOPT_TLS13_CIPHERS.3 RENDER CURLOPT_TLSAUTH_PASSWORD.3 RENDER CURLOPT_TLSAUTH_TYPE.3 RENDER CURLOPT_TLSAUTH_USERNAME.3 RENDER CURLOPT_TRAILERDATA.3 RENDER CURLOPT_TRAILERFUNCTION.3 RENDER CURLOPT_TRANSFER_ENCODING.3 RENDER CURLOPT_TRANSFERTEXT.3 RENDER CURLOPT_UNIX_SOCKET_PATH.3 RENDER CURLOPT_UNRESTRICTED_AUTH.3 RENDER CURLOPT_UPKEEP_INTERVAL_MS.3 RENDER CURLOPT_UPLOAD.3 RENDER CURLOPT_UPLOAD_BUFFERSIZE.3 RENDER CURLOPT_UPLOAD_FLAGS.3 RENDER CURLOPT_URL.3 RENDER CURLOPT_USE_SSL.3 RENDER CURLOPT_USERAGENT.3 RENDER CURLOPT_USERNAME.3 RENDER CURLOPT_USERPWD.3 RENDER CURLOPT_VERBOSE.3 RENDER CURLOPT_WILDCARDMATCH.3 RENDER CURLOPT_WRITEDATA.3 RENDER CURLOPT_WRITEFUNCTION.3 RENDER CURLOPT_WS_OPTIONS.3 RENDER CURLOPT_XFERINFODATA.3 RENDER CURLOPT_XFERINFOFUNCTION.3 RENDER CURLOPT_XOAUTH2_BEARER.3 RENDER CURLSHOPT_SHARE.3 RENDER CURLSHOPT_LOCKFUNC.3 RENDER CURLSHOPT_UNLOCKFUNC.3 RENDER CURLSHOPT_UNSHARE.3 RENDER CURLSHOPT_USERDATA.3 make[3]: Leaving directory '/build/curl/src/build-curl/docs/libcurl/opts' make[3]: Entering directory '/build/curl/src/build-curl/docs/libcurl' RENDER curl_easy_cleanup.3 RENDER curl_easy_duphandle.3 RENDER curl_easy_escape.3 RENDER curl_easy_getinfo.3 RENDER curl_easy_header.3 RENDER curl_easy_nextheader.3 RENDER curl_easy_init.3 RENDER curl_easy_option_by_id.3 RENDER curl_easy_option_by_name.3 RENDER curl_easy_option_next.3 RENDER curl_easy_pause.3 RENDER curl_easy_perform.3 RENDER curl_easy_recv.3 RENDER curl_easy_reset.3 RENDER curl_easy_send.3 RENDER curl_easy_setopt.3 RENDER curl_easy_ssls_export.3 RENDER curl_easy_ssls_import.3 RENDER curl_easy_strerror.3 RENDER curl_easy_upkeep.3 RENDER curl_easy_unescape.3 RENDER curl_escape.3 RENDER curl_formadd.3 RENDER curl_formfree.3 RENDER curl_formget.3 RENDER curl_free.3 RENDER curl_getdate.3 RENDER curl_getenv.3 RENDER curl_global_cleanup.3 RENDER curl_global_init.3 RENDER curl_global_init_mem.3 RENDER curl_global_sslset.3 RENDER curl_global_trace.3 RENDER curl_mime_addpart.3 RENDER curl_mime_data.3 RENDER curl_mime_data_cb.3 RENDER curl_mime_encoder.3 RENDER curl_mime_filedata.3 RENDER curl_mime_filename.3 RENDER curl_mime_free.3 RENDER curl_mime_headers.3 RENDER curl_mime_init.3 RENDER curl_mime_name.3 RENDER curl_mime_subparts.3 RENDER curl_mime_type.3 RENDER curl_mprintf.3 RENDER curl_multi_add_handle.3 RENDER curl_multi_assign.3 RENDER curl_multi_cleanup.3 RENDER curl_multi_fdset.3 RENDER curl_multi_get_handles.3 RENDER curl_multi_info_read.3 RENDER curl_multi_init.3 RENDER curl_multi_perform.3 RENDER curl_multi_poll.3 RENDER curl_multi_remove_handle.3 RENDER curl_multi_setopt.3 RENDER curl_multi_socket.3 RENDER curl_multi_socket_action.3 RENDER curl_multi_socket_all.3 RENDER curl_multi_strerror.3 RENDER curl_multi_timeout.3 RENDER curl_multi_wait.3 RENDER curl_multi_waitfds.3 RENDER curl_multi_wakeup.3 RENDER curl_pushheader_byname.3 RENDER curl_pushheader_bynum.3 RENDER curl_share_cleanup.3 RENDER curl_share_init.3 RENDER curl_share_setopt.3 RENDER curl_share_strerror.3 RENDER curl_slist_append.3 RENDER curl_slist_free_all.3 RENDER curl_strequal.3 RENDER curl_strnequal.3 RENDER curl_unescape.3 RENDER curl_url.3 RENDER curl_url_cleanup.3 RENDER curl_url_dup.3 RENDER curl_url_get.3 RENDER curl_url_set.3 RENDER curl_url_strerror.3 RENDER curl_version.3 RENDER curl_version_info.3 RENDER curl_ws_meta.3 RENDER curl_ws_recv.3 RENDER curl_ws_send.3 RENDER libcurl-easy.3 RENDER libcurl-env-dbg.3 RENDER libcurl-env.3 RENDER libcurl-errors.3 RENDER libcurl-multi.3 RENDER libcurl-security.3 RENDER libcurl-share.3 RENDER libcurl-symbols.md RENDER libcurl-thread.3 RENDER libcurl-tutorial.3 RENDER libcurl-url.3 RENDER libcurl-ws.3 RENDER libcurl.3 RENDER libcurl-symbols.3 make[3]: Leaving directory '/build/curl/src/build-curl/docs/libcurl' make[2]: Leaving directory '/build/curl/src/build-curl/docs/libcurl' make[1]: Leaving directory '/build/curl/src/build-curl/docs' Making all in src make[1]: Entering directory '/build/curl/src/build-curl/src' CC curl-config2setopts.o CC curl-slist_wc.o CC curl-terminal.o CC curl-tool_bname.o CC curl-tool_cb_dbg.o CC curl-tool_cb_hdr.o CC curl-tool_cb_prg.o CC curl-tool_cb_rea.o CC curl-tool_cb_see.o CC curl-tool_cb_soc.o CC curl-tool_cb_wrt.o CC curl-tool_cfgable.o CC curl-tool_dirhie.o CC curl-tool_doswin.o CC curl-tool_easysrc.o CC curl-tool_filetime.o CC curl-tool_findfile.o CC curl-tool_formparse.o CC curl-tool_getparam.o CC curl-tool_getpass.o CC curl-tool_help.o CC curl-tool_helpers.o CC curl-tool_ipfs.o CC curl-tool_libinfo.o CC curl-tool_listhelp.o CC curl-tool_main.o CC curl-tool_msgs.o CC curl-tool_operate.o CC curl-tool_operhlp.o CC curl-tool_parsecfg.o CC curl-tool_paramhlp.o CC curl-tool_progress.o CC curl-tool_setopt.o CC curl-tool_ssls.o CC curl-tool_stderr.o CC curl-tool_strdup.o CC curl-tool_urlglob.o CC curl-tool_util.o CC curl-tool_vms.o CC curl-tool_writeout.o CC curl-tool_writeout_json.o CC curl-tool_xattr.o CC curl-var.o echo '/* !checksrc! disable COPYRIGHT all */' > tool_hugehelp.c; \ echo '#include "tool_hugehelp.h"' >> tool_hugehelp.c echo '/* !checksrc! disable COPYRIGHT all */' > tool_ca_embed.c echo 'extern const void *curl_ca_embed; const void *curl_ca_embed;' >> tool_ca_embed.c CC ../lib/curlx/curl-base64.o CC ../lib/curlx/curl-multibyte.o CC ../lib/curlx/curl-dynbuf.o CC ../lib/curlx/curl-nonblock.o CC ../lib/curlx/curl-strparse.o CC ../lib/curlx/curl-timediff.o CC ../lib/curlx/curl-timeval.o CC ../lib/curlx/curl-version_win32.o CC ../lib/curlx/curl-wait.o CC ../lib/curlx/curl-warnless.o CC curlinfo.o CC libcurltool_la-config2setopts.lo CC libcurltool_la-slist_wc.lo CC libcurltool_la-terminal.lo CC libcurltool_la-tool_bname.lo CC libcurltool_la-tool_cb_dbg.lo CC libcurltool_la-tool_cb_hdr.lo CC libcurltool_la-tool_cb_prg.lo CC libcurltool_la-tool_cb_rea.lo CC libcurltool_la-tool_cb_see.lo CC libcurltool_la-tool_cb_soc.lo CC libcurltool_la-tool_cb_wrt.lo CC libcurltool_la-tool_cfgable.lo CC libcurltool_la-tool_dirhie.lo CC libcurltool_la-tool_doswin.lo CC libcurltool_la-tool_easysrc.lo CC libcurltool_la-tool_filetime.lo CC libcurltool_la-tool_findfile.lo CC libcurltool_la-tool_formparse.lo CC libcurltool_la-tool_getparam.lo CC libcurltool_la-tool_getpass.lo CC libcurltool_la-tool_help.lo CC libcurltool_la-tool_helpers.lo CC libcurltool_la-tool_ipfs.lo CC libcurltool_la-tool_libinfo.lo CC libcurltool_la-tool_listhelp.lo CC libcurltool_la-tool_main.lo CC libcurltool_la-tool_msgs.lo CC libcurltool_la-tool_operate.lo CC libcurltool_la-tool_operhlp.lo CC libcurltool_la-tool_paramhlp.lo CC libcurltool_la-tool_parsecfg.lo CC libcurltool_la-tool_progress.lo CC libcurltool_la-tool_setopt.lo CC libcurltool_la-tool_ssls.lo CC libcurltool_la-tool_stderr.lo CC libcurltool_la-tool_strdup.lo CC libcurltool_la-tool_urlglob.lo CC libcurltool_la-tool_util.lo CC libcurltool_la-tool_vms.lo CC libcurltool_la-tool_writeout.lo CC libcurltool_la-tool_writeout_json.lo CC libcurltool_la-tool_xattr.lo CC libcurltool_la-var.lo CC ../lib/curlx/libcurltool_la-base64.lo CC ../lib/curlx/libcurltool_la-multibyte.lo CC ../lib/curlx/libcurltool_la-dynbuf.lo CC ../lib/curlx/libcurltool_la-nonblock.lo CC ../lib/curlx/libcurltool_la-strparse.lo CC ../lib/curlx/libcurltool_la-timediff.lo CC ../lib/curlx/libcurltool_la-timeval.lo CC ../lib/curlx/libcurltool_la-version_win32.lo CC ../lib/curlx/libcurltool_la-wait.lo CC ../lib/curlx/libcurltool_la-warnless.lo CC curl-tool_hugehelp.o CC curl-tool_ca_embed.o CCLD curlinfo CCLD curl CCLD libcurltool.la make[1]: Leaving directory '/build/curl/src/build-curl/src' Making all in scripts make[1]: Entering directory '/build/curl/src/build-curl/scripts' if test -z "/usr/bin/perl"; then echo 'No perl: cannot generate completion script'; else \ /usr/bin/perl /build/curl/src/curl/scripts/completion.pl --opts-dir /build/curl/src/curl/docs/cmdline-opts --shell zsh > _curl; fi if test -z "/usr/bin/perl"; then echo 'No perl: cannot generate completion script'; else \ /usr/bin/perl /build/curl/src/curl/scripts/completion.pl --opts-dir /build/curl/src/curl/docs/cmdline-opts --shell fish > curl.fish; fi make[1]: Leaving directory '/build/curl/src/build-curl/scripts' make[1]: Entering directory '/build/curl/src/build-curl' make[1]: Nothing to be done for 'all-am'. make[1]: Leaving directory '/build/curl/src/build-curl' checking whether to enable maintainer-specific portions of Makefiles... no checking whether make supports nested variables... yes checking whether to enable debug build options... no checking whether to enable compiler optimizer... (assumed) yes checking whether to enable strict compiler warnings... no checking whether to enable compiler warnings as errors... no checking whether to enable curl debug memory tracking... no checking whether to enable hiding of library internal symbols... yes checking whether to enable c-ares for DNS lookups... no checking whether to disable dependency on -lrt... (assumed no) checking whether to enable HTTPSRR support... no checking whether to enable ECH support... no checking whether to enable SSL session export support... no checking for path separator... : checking for sed... /usr/bin/sed checking for grep... /usr/bin/grep checking that grep -E works... yes checking for ar... /usr/bin/ar checking for a BSD-compatible install... /usr/bin/install -c checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether the compiler supports GNU C... yes checking whether gcc accepts -g... yes checking for gcc option to enable C11 features... none needed checking whether gcc understands -c and -o together... yes checking how to run the C preprocessor... gcc -E checking for stdio.h... yes checking for stdlib.h... yes checking for string.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for strings.h... yes checking for sys/stat.h... yes checking for sys/types.h... yes checking for unistd.h... yes checking for stdatomic.h... yes checking if _Atomic is available... yes checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for code coverage support... no checking whether sleep supports fractional seconds... yes checking filesystem timestamp resolution... 0.01 checking whether build environment is sane... yes checking for a race-free mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports the include directive... yes (GNU style) checking xargs -n works... yes checking whether UID '1000' is supported by ustar format... yes checking whether GID '1000' is supported by ustar format... yes checking how to create a ustar tar archive... gnutar checking dependency style of gcc... gcc3 checking curl version... 8.15.0 checking for httpd... no checking for apache2... no checking for apxs... no configure: httpd/apache2 not in PATH, http tests disabled configure: apxs not in PATH, http tests disabled checking for nghttpx... no checking for caddy... no checking build system type... riscv64-unknown-linux-gnu checking host system type... riscv64-unknown-linux-gnu checking for egrep -e... /usr/bin/grep -E checking if OS is AIX (to define _ALL_SOURCE)... no checking if _THREAD_SAFE is already defined... no checking if _THREAD_SAFE is actually needed... no checking if _THREAD_SAFE is onwards defined... no checking if _REENTRANT is already defined... no checking if _REENTRANT is actually needed... no checking if _REENTRANT is onwards defined... no checking for gcc option to enable large file support... none needed checking how to print strings... printf checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for grep that handles long lines and -e... (cached) /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert riscv64-unknown-linux-gnu file names to riscv64-unknown-linux-gnu format... func_convert_file_noop checking how to convert riscv64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for file... file checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ranlib... ranlib checking for archiver @FILE support... @ checking for strip... strip checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /usr/bin/dd checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 checking for mt... no checking if : is a manifest tool... no checking for dlfcn.h... yes checking which variant of shared library versioning to provide... (default) aix checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking whether to build shared libraries with -version-info... yes checking whether to build shared libraries with -no-undefined... no checking whether to build shared libraries with -mimpure-text... no checking whether to build shared libraries with PIC... yes checking whether to build static libraries with PIC... no checking whether to build shared libraries only... no checking whether to build static libraries only... no checking for windres... no checking if cpp -P is needed... yes checking if cpp -P works... yes checking if compiler is DEC/Compaq/HP C... no checking if compiler is HP-UX C... no checking if compiler is IBM C... no checking if compiler is Intel C... no checking if compiler is clang... no checking if compiler is GNU C... yes checking compiler version... gcc '1501' (raw: '15.1.1') checking if compiler is SunPro C... no checking if compiler is Tiny C... no checking whether build target is a native Windows one... no checking if compiler accepts some basic options... yes configure: compiler options added: -Werror-implicit-function-declaration checking if compiler optimizer assumed setting might be used... no checking if compiler accepts strict warning options... yes configure: compiler options added: -Wno-system-headers checking if compiler halts on compilation errors... yes checking if compiler halts on negative sized arrays... yes checking if compiler halts on function prototype mismatch... yes checking if compiler supports hiding library internal symbols... yes checking whether build target supports Win32 crypto API... no checking whether to build libcurl and curl in "unity" mode... no checking whether to support http... yes checking whether to support ftp... yes checking whether to support file... yes checking whether to support IPFS... yes checking whether to support ldap... no checking whether to support ldaps... no checking whether to support rtsp... yes checking whether to support proxies... yes checking whether to support dict... yes checking whether to support telnet... yes checking whether to support tftp... yes checking whether to support pop3... yes checking whether to support imap... yes checking whether to support smb... yes checking whether to support smtp... yes checking whether to support gopher... yes checking whether to support mqtt... no checking whether to provide built-in manual... no checking whether to build documentation... yes checking whether to enable generation of C code... yes checking whether to use libgcc... no checking if X/Open network library is required... no checking for gethostbyname... yes checking whether build target is a native Windows one... (cached) no checking for proto/bsdsocket.h... no checking for connect in libraries... yes checking for sys/types.h... (cached) yes checking for monotonic clock_gettime... yes checking for clock_gettime in libraries... no additional lib required checking if monotonic clock_gettime works... yes checking for sys/types.h... (cached) yes checking for raw monotonic clock_gettime... yes checking for pkg-config... /usr/bin/pkg-config checking for zlib options with pkg-config... found checking for zlib.h... yes configure: found both libz and libz.h header checking for BrotliDecoderDecompress in -lbrotlidec... yes checking for brotli/decode.h... yes checking for ZSTD_createDStream in -lzstd... yes checking for zstd.h... yes checking whether to enable IPv6... yes checking if struct sockaddr_in6 has sin6_scope_id member... yes checking if argv can be written to... yes checking if GSS-API support is requested... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking for gss.h... no checking for gssapi/gssapi.h... yes checking for gssapi/gssapi_generic.h... yes checking for gssapi/gssapi_krb5.h... yes checking if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking if we can link against GSS-API library... yes checking whether to enable Windows native SSL/TLS... no checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for openssl options with pkg-config... found configure: pkg-config: SSL_LIBS: "-lssl -lcrypto" configure: pkg-config: SSL_LDFLAGS: "" configure: pkg-config: SSL_CPPFLAGS: "" checking for HMAC_Update in -lcrypto... yes checking for SSL_connect in -lssl... yes checking for openssl/x509.h... yes checking for openssl/rsa.h... yes checking for openssl/crypto.h... yes checking for openssl/pem.h... yes checking for openssl/ssl.h... yes checking for openssl/err.h... yes checking for BoringSSL... no checking for AWS-LC... no checking for LibreSSL... no checking for OpenSSL >= v3... yes checking for SSL_set_quic_use_legacy_codepoint... no checking for SSL_set_quic_tls_cbs... yes configure: OpenSSL with QUIC APIv2 checking for SRP support in OpenSSL... yes checking for QUIC support and OpenSSL >= 3.3... yes configure: built with one SSL backend checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt checking whether to use built-in CA store of SSL library... no checking CA cert bundle path to embed in the curl tool... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for libpsl options with pkg-config... found checking for psl_builtin in -lpsl... yes checking for libpsl.h... yes checking for library containing gsasl_init... no configure: WARNING: libgsasl was not found checking for pkg-config... (cached) /usr/bin/pkg-config checking for libssh2 options with pkg-config... found checking for libssh2_free in -lssh2... yes checking for libssh2.h... yes checking for RTMP_Init in -lrtmp... no checking whether versioned symbols are wanted... no checking whether to build with libidn2... (assumed) yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libidn2 options with pkg-config... found configure: pkg-config: IDN_LIBS: "-lidn2" configure: pkg-config: IDN_LDFLAGS: "" configure: pkg-config: IDN_CPPFLAGS: "" configure: pkg-config: IDN_DIR: "" checking if idn2_lookup_ul can be linked... yes checking for idn2.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libnghttp2 options with pkg-config... found configure: -l is -lnghttp2 configure: -I is configure: -L is checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... yes checking for nghttp2/nghttp2.h... yes configure: Added to CURL_LIBRARY_PATH checking for pkg-config... (cached) /usr/bin/pkg-config checking for libnghttp3 options with pkg-config... found configure: -l is -lnghttp3 configure: -I is configure: -L is checking for nghttp3_conn_client_new_versioned in -lnghttp3... yes checking for nghttp3/nghttp3.h... yes configure: Added to CURL_LIBRARY_PATH configure: HTTP3 support is experimental checking for sys/types.h... (cached) yes checking for sys/select.h... yes checking for sys/ioctl.h... yes checking for unistd.h... (cached) yes checking for arpa/inet.h... yes checking for net/if.h... yes checking for netinet/in.h... yes checking for netinet/in6.h... no checking for sys/un.h... yes checking for linux/tcp.h... yes checking for netinet/tcp.h... yes checking for netinet/udp.h... yes checking for netdb.h... yes checking for sys/sockio.h... no checking for sys/param.h... yes checking for termios.h... yes checking for termio.h... yes checking for fcntl.h... yes checking for io.h... no checking for pwd.h... yes checking for utime.h... yes checking for sys/utime.h... no checking for sys/poll.h... yes checking for poll.h... yes checking for sys/resource.h... yes checking for libgen.h... yes checking for locale.h... yes checking for stdbool.h... yes checking for stdint.h... (cached) yes checking for sys/filio.h... no checking for sys/eventfd.h... yes checking for an ANSI C-conforming const... yes checking for size_t... yes checking for sys/types.h... (cached) yes checking for struct timeval... yes checking run-time libs availability... fine checking size of size_t... 8 checking size of long... 8 checking size of int... 4 checking size of time_t... 8 checking size of off_t... 8 checking size of curl_off_t... 8 checking size of curl_socket_t... 4 checking for long long... yes checking for ssize_t... yes checking for bool... yes checking for sa_family_t... yes checking for suseconds_t... yes checking if time_t is unsigned... no checking for struct sockaddr_storage... yes checking for sys/select.h... (cached) yes checking for select... yes checking for sys/types.h... (cached) yes checking for recv... yes checking for sys/types.h... (cached) yes checking for send... yes checking for sys/types.h... (cached) yes checking for MSG_NOSIGNAL... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking if alarm can be linked... yes checking if alarm is prototyped... yes checking if alarm is compilable... yes checking if alarm usage allowed... yes checking if alarm might be used... yes checking for sys/types.h... (cached) yes checking for strings.h... (cached) yes checking for sys/types.h... (cached) yes checking for libgen.h... (cached) yes checking if basename can be linked... yes checking if basename is prototyped... yes checking if basename is compilable... yes checking if basename usage allowed... yes checking if basename might be used... yes checking if closesocket can be linked... no checking if closesocket might be used... no checking for sys/types.h... (cached) yes checking if CloseSocket can be linked... no checking if CloseSocket might be used... no checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for fcntl.h... (cached) yes checking if fcntl can be linked... yes checking if fcntl is prototyped... yes checking if fcntl is compilable... yes checking if fcntl usage allowed... yes checking if fcntl might be used... yes checking if fcntl O_NONBLOCK is compilable... yes checking if fcntl O_NONBLOCK usage allowed... yes checking if fcntl O_NONBLOCK might be used... yes checking whether build target is a native Windows one... (cached) no checking for sys/types.h... (cached) yes checking for netdb.h... (cached) yes checking if freeaddrinfo can be linked... yes checking if freeaddrinfo is prototyped... yes checking if freeaddrinfo is compilable... yes checking if freeaddrinfo usage allowed... yes checking if freeaddrinfo might be used... yes checking for sys/types.h... (cached) yes checking for sys/xattr.h... yes checking if fsetxattr can be linked... yes checking if fsetxattr is prototyped... yes checking if fsetxattr takes 5 args.... yes checking if fsetxattr is compilable... yes checking if fsetxattr usage allowed... yes checking if fsetxattr might be used... yes checking if ftruncate can be linked... yes checking if ftruncate is prototyped... yes checking if ftruncate is compilable... yes checking if ftruncate usage allowed... yes checking if ftruncate might be used... yes checking for sys/types.h... (cached) yes checking if getaddrinfo can be linked... yes checking if getaddrinfo is prototyped... yes checking if getaddrinfo is compilable... yes checking if getaddrinfo seems to work... yes checking if getaddrinfo usage allowed... yes checking if getaddrinfo might be used... yes checking if getaddrinfo is threadsafe... yes checking if gethostbyname_r can be linked... yes checking if gethostbyname_r is prototyped... yes checking if gethostbyname_r takes 3 args.... no checking if gethostbyname_r takes 5 args.... no checking if gethostbyname_r takes 6 args.... yes checking if gethostbyname_r is compilable... yes checking if gethostbyname_r usage allowed... yes checking if gethostbyname_r might be used... yes checking if gethostname can be linked... yes checking if gethostname is prototyped... yes checking if gethostname is compilable... yes checking for gethostname arg 2 data type... size_t checking if gethostname usage allowed... yes checking if gethostname might be used... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for ifaddrs.h... yes checking if getifaddrs can be linked... yes checking if getifaddrs is prototyped... yes checking if getifaddrs is compilable... yes checking if getifaddrs seems to work... yes checking if getifaddrs usage allowed... yes checking if getifaddrs might be used... yes checking if getpeername can be linked... yes checking if getpeername is prototyped... yes checking if getpeername is compilable... yes checking if getpeername usage allowed... yes checking if getpeername might be used... yes checking if getsockname can be linked... yes checking if getsockname is prototyped... yes checking if getsockname is compilable... yes checking if getsockname usage allowed... yes checking if getsockname might be used... yes checking for sys/types.h... (cached) yes checking if gmtime_r can be linked... yes checking if gmtime_r is prototyped... yes checking if gmtime_r is compilable... yes checking if gmtime_r seems to work... yes checking if gmtime_r usage allowed... yes checking if gmtime_r might be used... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for sys/ioctl.h... (cached) yes checking for stropts.h... no checking if ioctl can be linked... yes checking if ioctl is prototyped... yes checking if ioctl is compilable... yes checking if ioctl usage allowed... yes checking if ioctl might be used... yes checking if ioctl FIONBIO is compilable... yes checking if ioctl FIONBIO usage allowed... yes checking if ioctl FIONBIO might be used... yes checking if ioctl SIOCGIFADDR is compilable... yes checking if ioctl SIOCGIFADDR usage allowed... yes checking if ioctl SIOCGIFADDR might be used... yes checking if ioctlsocket can be linked... no checking if ioctlsocket might be used... no checking if IoctlSocket can be linked... no checking if IoctlSocket might be used... no checking if memrchr can be linked... yes checking if memrchr is prototyped... yes checking if memrchr is compilable... yes checking if memrchr usage allowed... yes checking if memrchr might be used... yes checking for sys/types.h... (cached) yes checking if sigaction can be linked... yes checking if sigaction is prototyped... yes checking if sigaction is compilable... yes checking if sigaction usage allowed... yes checking if sigaction might be used... yes checking if siginterrupt can be linked... yes checking if siginterrupt is prototyped... yes checking if siginterrupt is compilable... yes checking if siginterrupt usage allowed... yes checking if siginterrupt might be used... yes checking if signal can be linked... yes checking if signal is prototyped... yes checking if signal is compilable... yes checking if signal usage allowed... yes checking if signal might be used... yes checking for sys/types.h... (cached) yes checking if sigsetjmp can be linked... no checking if sigsetjmp seems a macro... yes checking if sigsetjmp is compilable... yes checking if sigsetjmp usage allowed... yes checking if sigsetjmp might be used... yes checking if socket can be linked... yes checking if socket is prototyped... yes checking if socket is compilable... yes checking if socket usage allowed... yes checking if socket might be used... yes checking if socketpair can be linked... yes checking if socketpair is prototyped... yes checking if socketpair is compilable... yes checking if socketpair usage allowed... yes checking if socketpair might be used... yes checking if strdup can be linked... yes checking if strdup is prototyped... yes checking if strdup is compilable... yes checking if strdup usage allowed... yes checking if strdup might be used... yes checking if strerror_r can be linked... yes checking if strerror_r is prototyped... yes checking if strerror_r is compilable... yes checking if strerror_r is glibc like... yes checking if strerror_r seems to work... yes checking if strerror_r usage allowed... yes checking if strerror_r might be used... yes checking for accept4... yes checking for eventfd... yes checking for fnmatch... yes checking for geteuid... yes checking for getpass_r... no checking for getppid... yes checking for getpwuid... yes checking for getpwuid_r... yes checking for getrlimit... yes checking for gettimeofday... yes checking for if_nametoindex... yes checking for mach_absolute_time... no checking for pipe... yes checking for pipe2... yes checking for poll... yes checking for sendmmsg... yes checking for sendmsg... yes checking for setlocale... yes checking for setrlimit... yes checking for snprintf... yes checking for utime... yes checking for utimes... yes checking for realpath... yes checking for sched_yield... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for arpa/inet.h... (cached) yes checking if inet_ntop can be linked... yes checking if inet_ntop is prototyped... yes checking if inet_ntop is compilable... yes checking if inet_ntop seems to work... yes checking if inet_ntop usage allowed... yes checking if inet_ntop might be used... yes checking if inet_pton can be linked... yes checking if inet_pton is prototyped... yes checking if inet_pton is compilable... yes checking if inet_pton seems to work... yes checking if inet_pton usage allowed... yes checking if inet_pton might be used... yes checking if strcasecmp can be linked... yes checking if strcasecmp is prototyped... yes checking if strcasecmp is compilable... yes checking if strcasecmp usage allowed... yes checking if strcasecmp might be used... yes checking if strcmpi can be linked... no checking if strcmpi might be used... no checking if stricmp can be linked... no checking if stricmp might be used... no checking for setmode... no checking for fseeko... yes checking for gcc options needed to detect all undeclared functions... none needed checking whether fseeko is declared... yes checking how to set a socket into non-blocking mode... fcntl O_NONBLOCK checking for perl... /usr/bin/perl checking whether to enable the threaded resolver... yes checking for pthread.h... yes checking for pthread_create... yes checking for dirent.h... yes checking for opendir... yes checking convert -I options to -isystem... yes checking whether to enable verbose strings... yes checking whether to enable SSPI support (Windows native builds only)... no checking whether to enable basic authentication method... yes checking whether to enable bearer authentication method... yes checking whether to enable digest authentication method... yes checking whether to enable kerberos authentication method... yes checking whether to enable negotiate authentication method... yes checking whether to enable aws sig methods... yes checking whether to support NTLM... yes checking whether to enable TLS-SRP authentication... yes checking whether to enable Unix domain sockets... auto checking for struct sockaddr_un.sun_path... yes checking whether to support cookies... yes checking whether to support socketpair... yes checking whether to support HTTP authentication... yes checking whether to support DoH... yes checking whether to support the MIME API... yes checking whether to support binding connections locally... yes checking whether to support the form API... yes checking whether to support date parsing... yes checking whether to support netrc parsing... yes checking whether to support progress-meter... yes checking whether to support the SHA-512/256 hash algorithm... yes checking whether to support DNS shuffling... yes checking whether to support curl_easy_option*... yes checking whether to support alt-svc... yes checking whether to support headers-api... yes checking whether to support HSTS... yes checking whether to enable HTTPS-RR support... no checking for SSL_set0_wbio... yes checking whether to support WebSockets... yes checking whether hiding of library internal symbols will actually happen... yes checking if this build supports HTTPS-proxy... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating docs/Makefile config.status: creating docs/examples/Makefile config.status: creating docs/libcurl/Makefile config.status: creating docs/libcurl/opts/Makefile config.status: creating docs/cmdline-opts/Makefile config.status: creating include/Makefile config.status: creating include/curl/Makefile config.status: creating src/Makefile config.status: creating lib/Makefile config.status: creating scripts/Makefile config.status: creating lib/libcurl.vers config.status: creating tests/Makefile config.status: creating tests/config config.status: creating tests/configurehelp.pm config.status: creating tests/certs/Makefile config.status: creating tests/data/Makefile config.status: creating tests/server/Makefile config.status: creating tests/libtest/Makefile config.status: creating tests/unit/Makefile config.status: creating tests/tunit/Makefile config.status: creating tests/client/Makefile config.status: creating tests/http/config.ini config.status: creating tests/http/Makefile config.status: creating packages/Makefile config.status: creating packages/vms/Makefile config.status: creating curl-config config.status: creating libcurl.pc config.status: creating lib/curl_config.h config.status: executing depfiles commands config.status: executing libtool commands configure: Configured to build curl/libcurl: Host setup: riscv64-unknown-linux-gnu Install prefix: /usr Compiler: gcc CFLAGS: -march=rv64gc -mabi=lp64d -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fno-omit-frame-pointer -g -ffile-prefix-map=/build/curl/src=/usr/src/debug/curl -flto=auto -Werror-implicit-function-declaration -Wno-system-headers CFLAGS extras: CPPFLAGS: -D_GNU_SOURCE LDFLAGS: -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -flto=auto curl-config: LIBS: -lnghttp3 -lnghttp2 -lidn2 -lssh2 -lssh2 -lpsl -lssl -lcrypto -lssl -lcrypto -lgssapi_krb5 -lzstd -lbrotlidec -lz curl version: 8.15.0 SSL: enabled (OpenSSL v3+) SSH: enabled (libssh2) zlib: enabled brotli: enabled (libbrotlidec) zstd: enabled (libzstd) GSS-API: enabled (MIT Kerberos/Heimdal) GSASL: no (libgsasl not found) TLS-SRP: enabled resolver: POSIX threaded IPv6: enabled Unix sockets: enabled IDN: enabled (libidn2) Build docs: enabled (--disable-docs) Build libcurl: Shared=yes, Static=yes Built-in manual: no (--enable-manual) --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) Code coverage: disabled SSPI: no (--enable-sspi) ca cert bundle: /etc/ssl/certs/ca-certificates.crt ca cert path: no ca cert embed: no ca fallback: no LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS: no (--enable-ldaps) IPFS/IPNS: enabled RTSP: enabled RTMP: no (--with-librtmp) PSL: enabled Alt-svc: enabled (--disable-alt-svc) Headers API: enabled (--disable-headers-api) HSTS: enabled (--disable-hsts) HTTP1: enabled (internal) HTTP2: enabled (nghttp2) HTTP3: enabled (openssl + nghttp3) ECH: no (--enable-ech) HTTPS RR: no (--enable-httpsrr) SSLS-EXPORT: no (--enable-ssls-export) Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd configure: WARNING: HTTP3 is enabled but marked EXPERIMENTAL. Use with caution! make: Entering directory '/build/curl/src/build-curl-compat/lib' make all-am make[1]: Entering directory '/build/curl/src/build-curl-compat/lib' CC libcurl_la-amigaos.lo CC libcurl_la-altsvc.lo CC libcurl_la-asyn-ares.lo CC libcurl_la-asyn-thrdd.lo CC libcurl_la-bufq.lo CC libcurl_la-asyn-base.lo CC libcurl_la-bufref.lo CC libcurl_la-cf-h1-proxy.lo CC libcurl_la-cf-haproxy.lo CC libcurl_la-cf-h2-proxy.lo CC libcurl_la-cfilters.lo CC libcurl_la-conncache.lo CC libcurl_la-cf-https-connect.lo CC libcurl_la-cf-socket.lo CC libcurl_la-connect.lo CC libcurl_la-content_encoding.lo CC libcurl_la-cookie.lo CC libcurl_la-cshutdn.lo CC libcurl_la-curl_addrinfo.lo CC libcurl_la-curl_des.lo CC libcurl_la-curl_endian.lo CC libcurl_la-curl_fnmatch.lo CC libcurl_la-curl_get_line.lo CC libcurl_la-curl_gethostname.lo CC libcurl_la-curl_memrchr.lo CC libcurl_la-curl_gssapi.lo CC libcurl_la-curl_ntlm_core.lo CC libcurl_la-curl_range.lo CC libcurl_la-curl_rtmp.lo CC libcurl_la-curl_sasl.lo CC libcurl_la-curl_sha512_256.lo CC libcurl_la-curl_sspi.lo CC libcurl_la-curl_threads.lo CC libcurl_la-curl_trc.lo CC libcurl_la-cw-out.lo CC libcurl_la-cw-pause.lo CC libcurl_la-dict.lo CC libcurl_la-doh.lo CC libcurl_la-easy.lo CC libcurl_la-dynhds.lo CC libcurl_la-easygetopt.lo CC libcurl_la-easyoptions.lo CC libcurl_la-escape.lo CC libcurl_la-fake_addrinfo.lo CC libcurl_la-file.lo CC libcurl_la-fileinfo.lo CC libcurl_la-fopen.lo CC libcurl_la-formdata.lo CC libcurl_la-ftp.lo CC libcurl_la-ftplistparser.lo CC libcurl_la-getenv.lo CC libcurl_la-getinfo.lo CC libcurl_la-gopher.lo CC libcurl_la-hash.lo CC libcurl_la-headers.lo CC libcurl_la-hmac.lo CC libcurl_la-hostip.lo CC libcurl_la-hostip4.lo CC libcurl_la-hostip6.lo CC libcurl_la-hsts.lo CC libcurl_la-http.lo CC libcurl_la-http1.lo CC libcurl_la-http2.lo CC libcurl_la-http_aws_sigv4.lo CC libcurl_la-http_chunks.lo CC libcurl_la-http_digest.lo CC libcurl_la-http_negotiate.lo CC libcurl_la-http_ntlm.lo CC libcurl_la-http_proxy.lo CC libcurl_la-httpsrr.lo CC libcurl_la-idn.lo CC libcurl_la-if2ip.lo CC libcurl_la-imap.lo CC libcurl_la-krb5.lo CC libcurl_la-ldap.lo CC libcurl_la-llist.lo CC libcurl_la-macos.lo CC libcurl_la-md4.lo CC libcurl_la-md5.lo CC libcurl_la-memdebug.lo CC libcurl_la-mime.lo CC libcurl_la-mprintf.lo CC libcurl_la-mqtt.lo CC libcurl_la-multi.lo CC libcurl_la-multi_ev.lo CC libcurl_la-netrc.lo CC libcurl_la-noproxy.lo CC libcurl_la-openldap.lo CC libcurl_la-parsedate.lo CC libcurl_la-pingpong.lo CC libcurl_la-pop3.lo CC libcurl_la-progress.lo CC libcurl_la-psl.lo CC libcurl_la-rand.lo CC libcurl_la-rename.lo CC libcurl_la-request.lo CC libcurl_la-rtsp.lo CC libcurl_la-select.lo CC libcurl_la-sendf.lo CC libcurl_la-setopt.lo CC libcurl_la-sha256.lo CC libcurl_la-share.lo CC libcurl_la-slist.lo CC libcurl_la-smb.lo CC libcurl_la-smtp.lo CC libcurl_la-socketpair.lo CC libcurl_la-socks.lo CC libcurl_la-socks_gssapi.lo CC libcurl_la-socks_sspi.lo CC libcurl_la-speedcheck.lo CC libcurl_la-splay.lo CC libcurl_la-strcase.lo CC libcurl_la-strdup.lo CC libcurl_la-strequal.lo CC libcurl_la-strerror.lo CC libcurl_la-system_win32.lo CC libcurl_la-telnet.lo CC libcurl_la-tftp.lo CC libcurl_la-transfer.lo CC libcurl_la-uint-bset.lo CC libcurl_la-uint-hash.lo CC libcurl_la-uint-spbset.lo CC libcurl_la-uint-table.lo CC libcurl_la-url.lo CC libcurl_la-urlapi.lo CC libcurl_la-version.lo CC libcurl_la-ws.lo CC libcurlu_la-altsvc.lo CC libcurlu_la-amigaos.lo CC libcurlu_la-asyn-ares.lo CC libcurlu_la-asyn-base.lo CC libcurlu_la-asyn-thrdd.lo CC libcurlu_la-bufq.lo CC libcurlu_la-bufref.lo CC libcurlu_la-cf-h1-proxy.lo CC libcurlu_la-cf-h2-proxy.lo CC libcurlu_la-cf-haproxy.lo CC libcurlu_la-cf-https-connect.lo CC libcurlu_la-cf-socket.lo CC libcurlu_la-cfilters.lo CC libcurlu_la-conncache.lo CC libcurlu_la-connect.lo CC libcurlu_la-content_encoding.lo CC libcurlu_la-cookie.lo CC libcurlu_la-cshutdn.lo CC libcurlu_la-curl_addrinfo.lo CC libcurlu_la-curl_des.lo CC libcurlu_la-curl_endian.lo CC libcurlu_la-curl_fnmatch.lo CC libcurlu_la-curl_get_line.lo CC libcurlu_la-curl_gethostname.lo CC libcurlu_la-curl_gssapi.lo CC libcurlu_la-curl_memrchr.lo CC libcurlu_la-curl_ntlm_core.lo CC libcurlu_la-curl_range.lo CC libcurlu_la-curl_rtmp.lo CC libcurlu_la-curl_sasl.lo CC libcurlu_la-curl_sha512_256.lo CC libcurlu_la-curl_sspi.lo CC libcurlu_la-curl_threads.lo CC libcurlu_la-curl_trc.lo CC libcurlu_la-cw-out.lo CC libcurlu_la-cw-pause.lo CC libcurlu_la-dict.lo CC libcurlu_la-doh.lo CC libcurlu_la-dynhds.lo CC libcurlu_la-easy.lo CC libcurlu_la-easygetopt.lo CC libcurlu_la-easyoptions.lo CC libcurlu_la-escape.lo CC libcurlu_la-fake_addrinfo.lo CC libcurlu_la-file.lo CC libcurlu_la-fileinfo.lo CC libcurlu_la-fopen.lo CC libcurlu_la-formdata.lo CC libcurlu_la-ftp.lo CC libcurlu_la-ftplistparser.lo CC libcurlu_la-getenv.lo CC libcurlu_la-getinfo.lo CC libcurlu_la-gopher.lo CC libcurlu_la-hash.lo CC libcurlu_la-headers.lo CC libcurlu_la-hmac.lo CC libcurlu_la-hostip.lo CC libcurlu_la-hostip4.lo CC libcurlu_la-hostip6.lo CC libcurlu_la-hsts.lo CC libcurlu_la-http.lo CC libcurlu_la-http1.lo CC libcurlu_la-http2.lo CC libcurlu_la-http_aws_sigv4.lo CC libcurlu_la-http_chunks.lo CC libcurlu_la-http_digest.lo CC libcurlu_la-http_negotiate.lo CC libcurlu_la-http_ntlm.lo CC libcurlu_la-http_proxy.lo CC libcurlu_la-idn.lo CC libcurlu_la-httpsrr.lo CC libcurlu_la-if2ip.lo CC libcurlu_la-imap.lo CC libcurlu_la-krb5.lo CC libcurlu_la-ldap.lo CC libcurlu_la-llist.lo CC libcurlu_la-macos.lo CC libcurlu_la-md4.lo CC libcurlu_la-md5.lo CC libcurlu_la-memdebug.lo CC libcurlu_la-mprintf.lo CC libcurlu_la-mime.lo CC libcurlu_la-mqtt.lo CC libcurlu_la-multi.lo CC libcurlu_la-multi_ev.lo CC libcurlu_la-netrc.lo CC libcurlu_la-noproxy.lo CC libcurlu_la-openldap.lo CC libcurlu_la-parsedate.lo CC libcurlu_la-pingpong.lo CC libcurlu_la-pop3.lo CC libcurlu_la-progress.lo CC libcurlu_la-psl.lo CC libcurlu_la-rand.lo CC libcurlu_la-rename.lo CC libcurlu_la-request.lo CC libcurlu_la-rtsp.lo CC libcurlu_la-select.lo CC libcurlu_la-sendf.lo CC libcurlu_la-setopt.lo CC libcurlu_la-sha256.lo CC libcurlu_la-share.lo CC libcurlu_la-slist.lo CC libcurlu_la-smb.lo CC libcurlu_la-smtp.lo CC libcurlu_la-socketpair.lo CC libcurlu_la-socks.lo CC libcurlu_la-socks_gssapi.lo CC libcurlu_la-socks_sspi.lo CC libcurlu_la-speedcheck.lo CC libcurlu_la-splay.lo CC libcurlu_la-strcase.lo CC libcurlu_la-strdup.lo CC libcurlu_la-strequal.lo CC libcurlu_la-strerror.lo CC libcurlu_la-system_win32.lo CC libcurlu_la-telnet.lo CC libcurlu_la-tftp.lo CC libcurlu_la-transfer.lo CC libcurlu_la-uint-bset.lo CC libcurlu_la-uint-hash.lo CC libcurlu_la-uint-spbset.lo CC libcurlu_la-uint-table.lo CC libcurlu_la-url.lo CC libcurlu_la-urlapi.lo CC libcurlu_la-ws.lo CC libcurlu_la-version.lo CC vauth/libcurlu_la-cleartext.lo CC vauth/libcurlu_la-cram.lo CC vauth/libcurlu_la-digest.lo CC vauth/libcurlu_la-digest_sspi.lo CC vauth/libcurlu_la-gsasl.lo CC vauth/libcurlu_la-krb5_gssapi.lo CC vauth/libcurlu_la-krb5_sspi.lo CC vauth/libcurlu_la-ntlm.lo CC vauth/libcurlu_la-ntlm_sspi.lo CC vauth/libcurlu_la-oauth2.lo CC vauth/libcurlu_la-spnego_gssapi.lo CC vauth/libcurlu_la-spnego_sspi.lo CC vauth/libcurlu_la-vauth.lo CC vtls/libcurlu_la-cipher_suite.lo CC vtls/libcurlu_la-gtls.lo CC vtls/libcurlu_la-hostcheck.lo CC vtls/libcurlu_la-keylog.lo CC vtls/libcurlu_la-mbedtls.lo CC vtls/libcurlu_la-mbedtls_threadlock.lo CC vtls/libcurlu_la-openssl.lo CC vtls/libcurlu_la-rustls.lo CC vtls/libcurlu_la-schannel.lo CC vtls/libcurlu_la-schannel_verify.lo CC vtls/libcurlu_la-vtls.lo CC vtls/libcurlu_la-vtls_scache.lo CC vtls/libcurlu_la-vtls_spack.lo CC vtls/libcurlu_la-wolfssl.lo CC vtls/libcurlu_la-x509asn1.lo CC vquic/libcurlu_la-curl_msh3.lo CC vquic/libcurlu_la-curl_ngtcp2.lo CC vquic/libcurlu_la-curl_osslq.lo CC vquic/libcurlu_la-curl_quiche.lo CC vquic/libcurlu_la-vquic.lo CC vquic/libcurlu_la-vquic-tls.lo CC vssh/libcurlu_la-libssh.lo CC vssh/libcurlu_la-libssh2.lo CC vssh/libcurlu_la-curl_path.lo CC vssh/libcurlu_la-wolfssh.lo CC curlx/libcurlu_la-base64.lo CC curlx/libcurlu_la-dynbuf.lo CC curlx/libcurlu_la-inet_ntop.lo CC curlx/libcurlu_la-inet_pton.lo CC curlx/libcurlu_la-multibyte.lo CC curlx/libcurlu_la-nonblock.lo CC curlx/libcurlu_la-strparse.lo CC curlx/libcurlu_la-timediff.lo CC curlx/libcurlu_la-timeval.lo CC curlx/libcurlu_la-version_win32.lo CC curlx/libcurlu_la-wait.lo CC curlx/libcurlu_la-warnless.lo CC curlx/libcurlu_la-winapi.lo CC vauth/libcurl_la-cleartext.lo CC vauth/libcurl_la-cram.lo CC vauth/libcurl_la-digest.lo CC vauth/libcurl_la-digest_sspi.lo CC vauth/libcurl_la-gsasl.lo CC vauth/libcurl_la-krb5_gssapi.lo CC vauth/libcurl_la-krb5_sspi.lo CC vauth/libcurl_la-ntlm.lo CC vauth/libcurl_la-ntlm_sspi.lo CC vauth/libcurl_la-oauth2.lo CC vauth/libcurl_la-spnego_gssapi.lo CC vauth/libcurl_la-spnego_sspi.lo CC vauth/libcurl_la-vauth.lo CC vtls/libcurl_la-cipher_suite.lo CC vtls/libcurl_la-gtls.lo CC vtls/libcurl_la-hostcheck.lo CC vtls/libcurl_la-keylog.lo CC vtls/libcurl_la-mbedtls.lo CC vtls/libcurl_la-mbedtls_threadlock.lo CC vtls/libcurl_la-openssl.lo CC vtls/libcurl_la-rustls.lo CC vtls/libcurl_la-schannel.lo CC vtls/libcurl_la-schannel_verify.lo CC vtls/libcurl_la-vtls.lo CC vtls/libcurl_la-vtls_scache.lo CC vtls/libcurl_la-vtls_spack.lo CC vtls/libcurl_la-wolfssl.lo CC vtls/libcurl_la-x509asn1.lo CC vquic/libcurl_la-curl_msh3.lo CC vquic/libcurl_la-curl_ngtcp2.lo CC vquic/libcurl_la-curl_osslq.lo CC vquic/libcurl_la-curl_quiche.lo CC vquic/libcurl_la-vquic.lo CC vquic/libcurl_la-vquic-tls.lo CC vssh/libcurl_la-libssh.lo CC vssh/libcurl_la-libssh2.lo CC vssh/libcurl_la-wolfssh.lo CC vssh/libcurl_la-curl_path.lo CC curlx/libcurl_la-base64.lo CC curlx/libcurl_la-dynbuf.lo CC curlx/libcurl_la-inet_ntop.lo CC curlx/libcurl_la-inet_pton.lo CC curlx/libcurl_la-multibyte.lo CC curlx/libcurl_la-nonblock.lo CC curlx/libcurl_la-timediff.lo CC curlx/libcurl_la-strparse.lo CC curlx/libcurl_la-timeval.lo CC curlx/libcurl_la-version_win32.lo CC curlx/libcurl_la-wait.lo CC curlx/libcurl_la-warnless.lo CC curlx/libcurl_la-winapi.lo CCLD libcurlu.la CCLD libcurl.la /usr/bin/nm: .libs/libcurl_la-amigaos.o: no symbols /usr/bin/nm: .libs/libcurl_la-asyn-ares.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_des.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_memrchr.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_rtmp.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_sspi.o: no symbols /usr/bin/nm: .libs/libcurl_la-fake_addrinfo.o: no symbols /usr/bin/nm: .libs/libcurl_la-hostip4.o: no symbols /usr/bin/nm: .libs/libcurl_la-hostip6.o: no symbols /usr/bin/nm: .libs/libcurl_la-httpsrr.o: no symbols /usr/bin/nm: .libs/libcurl_la-ldap.o: no symbols /usr/bin/nm: .libs/libcurl_la-macos.o: no symbols /usr/bin/nm: .libs/libcurl_la-memdebug.o: no symbols /usr/bin/nm: .libs/libcurl_la-openldap.o: no symbols /usr/bin/nm: .libs/libcurl_la-socks_sspi.o: no symbols /usr/bin/nm: .libs/libcurl_la-system_win32.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-digest_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-gsasl.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-krb5_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-ntlm_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-spnego_sspi.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-cipher_suite.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-gtls.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-mbedtls.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-mbedtls_threadlock.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-rustls.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-schannel.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-schannel_verify.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-vtls_spack.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-wolfssl.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-x509asn1.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_msh3.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_ngtcp2.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_quiche.o: no symbols /usr/bin/nm: vssh/.libs/libcurl_la-libssh.o: no symbols /usr/bin/nm: vssh/.libs/libcurl_la-wolfssh.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-inet_ntop.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-inet_pton.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-multibyte.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-version_win32.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-winapi.o: no symbols make[1]: Leaving directory '/build/curl/src/build-curl-compat/lib' make: Leaving directory '/build/curl/src/build-curl-compat/lib' checking whether to enable maintainer-specific portions of Makefiles... no checking whether make supports nested variables... yes checking whether to enable debug build options... no checking whether to enable compiler optimizer... (assumed) yes checking whether to enable strict compiler warnings... no checking whether to enable compiler warnings as errors... no checking whether to enable curl debug memory tracking... no checking whether to enable hiding of library internal symbols... yes checking whether to enable c-ares for DNS lookups... no checking whether to disable dependency on -lrt... (assumed no) checking whether to enable HTTPSRR support... no checking whether to enable ECH support... no checking whether to enable SSL session export support... no checking for path separator... : checking for sed... /usr/bin/sed checking for grep... /usr/bin/grep checking that grep -E works... yes checking for ar... /usr/bin/ar checking for a BSD-compatible install... /usr/bin/install -c checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether the compiler supports GNU C... yes checking whether gcc accepts -g... yes checking for gcc option to enable C11 features... none needed checking whether gcc understands -c and -o together... yes checking how to run the C preprocessor... gcc -E checking for stdio.h... yes checking for stdlib.h... yes checking for string.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for strings.h... yes checking for sys/stat.h... yes checking for sys/types.h... yes checking for unistd.h... yes checking for stdatomic.h... yes checking if _Atomic is available... yes checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for code coverage support... no checking whether sleep supports fractional seconds... yes checking filesystem timestamp resolution... 0.01 checking whether build environment is sane... yes checking for a race-free mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports the include directive... yes (GNU style) checking xargs -n works... yes checking whether UID '1000' is supported by ustar format... yes checking whether GID '1000' is supported by ustar format... yes checking how to create a ustar tar archive... gnutar checking dependency style of gcc... gcc3 checking curl version... 8.15.0 checking for httpd... no checking for apache2... no checking for apxs... no configure: httpd/apache2 not in PATH, http tests disabled configure: apxs not in PATH, http tests disabled checking for nghttpx... no checking for caddy... no checking build system type... riscv64-unknown-linux-gnu checking host system type... riscv64-unknown-linux-gnu checking for egrep -e... /usr/bin/grep -E checking if OS is AIX (to define _ALL_SOURCE)... no checking if _THREAD_SAFE is already defined... no checking if _THREAD_SAFE is actually needed... no checking if _THREAD_SAFE is onwards defined... no checking if _REENTRANT is already defined... no checking if _REENTRANT is actually needed... no checking if _REENTRANT is onwards defined... no checking for gcc option to enable large file support... none needed checking how to print strings... printf checking for a sed that does not truncate output... (cached) /usr/bin/sed checking for grep that handles long lines and -e... (cached) /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for fgrep... /usr/bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert riscv64-unknown-linux-gnu file names to riscv64-unknown-linux-gnu format... func_convert_file_noop checking how to convert riscv64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for file... file checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ranlib... ranlib checking for archiver @FILE support... @ checking for strip... strip checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /usr/bin/dd checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 checking for mt... no checking if : is a manifest tool... no checking for dlfcn.h... yes checking which variant of shared library versioning to provide... (default) aix checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking whether to build shared libraries with -version-info... yes checking whether to build shared libraries with -no-undefined... no checking whether to build shared libraries with -mimpure-text... no checking whether to build shared libraries with PIC... yes checking whether to build static libraries with PIC... no checking whether to build shared libraries only... no checking whether to build static libraries only... no checking for windres... no checking if cpp -P is needed... yes checking if cpp -P works... yes checking if compiler is DEC/Compaq/HP C... no checking if compiler is HP-UX C... no checking if compiler is IBM C... no checking if compiler is Intel C... no checking if compiler is clang... no checking if compiler is GNU C... yes checking compiler version... gcc '1501' (raw: '15.1.1') checking if compiler is SunPro C... no checking if compiler is Tiny C... no checking whether build target is a native Windows one... no checking if compiler accepts some basic options... yes configure: compiler options added: -Werror-implicit-function-declaration checking if compiler optimizer assumed setting might be used... no checking if compiler accepts strict warning options... yes configure: compiler options added: -Wno-system-headers checking if compiler halts on compilation errors... yes checking if compiler halts on negative sized arrays... yes checking if compiler halts on function prototype mismatch... yes checking if compiler supports hiding library internal symbols... yes checking whether build target supports Win32 crypto API... no checking whether to build libcurl and curl in "unity" mode... no checking whether to support http... yes checking whether to support ftp... yes checking whether to support file... yes checking whether to support IPFS... yes checking whether to support ldap... no checking whether to support ldaps... no checking whether to support rtsp... yes checking whether to support proxies... yes checking whether to support dict... yes checking whether to support telnet... yes checking whether to support tftp... yes checking whether to support pop3... yes checking whether to support imap... yes checking whether to support smb... yes checking whether to support smtp... yes checking whether to support gopher... yes checking whether to support mqtt... no checking whether to provide built-in manual... no checking whether to build documentation... yes checking whether to enable generation of C code... yes checking whether to use libgcc... no checking if X/Open network library is required... no checking for gethostbyname... yes checking whether build target is a native Windows one... (cached) no checking for proto/bsdsocket.h... no checking for connect in libraries... yes checking for sys/types.h... (cached) yes checking for monotonic clock_gettime... yes checking for clock_gettime in libraries... no additional lib required checking if monotonic clock_gettime works... yes checking for sys/types.h... (cached) yes checking for raw monotonic clock_gettime... yes checking for pkg-config... /usr/bin/pkg-config checking for zlib options with pkg-config... found checking for zlib.h... yes configure: found both libz and libz.h header checking for BrotliDecoderDecompress in -lbrotlidec... yes checking for brotli/decode.h... yes checking for ZSTD_createDStream in -lzstd... yes checking for zstd.h... yes checking whether to enable IPv6... yes checking if struct sockaddr_in6 has sin6_scope_id member... yes checking if argv can be written to... yes checking if GSS-API support is requested... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking for gss.h... no checking for gssapi/gssapi.h... yes checking for gssapi/gssapi_generic.h... yes checking for gssapi/gssapi_krb5.h... yes checking if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking if we can link against GSS-API library... yes checking whether to enable Windows native SSL/TLS... no checking whether to enable Amiga native SSL/TLS (AmiSSL v5)... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for gnutls options with pkg-config... found checking for gnutls_x509_crt_get_dn2 in -lgnutls... yes configure: detected GnuTLS version 3.8.10 checking for nettle_MD5Init in -lgnutls... no checking for nettle_MD5Init in -lnettle... yes checking for gnutls_srp_verifier in -lgnutls... yes configure: built with one SSL backend checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt checking whether to use built-in CA store of SSL library... no checking CA cert bundle path to embed in the curl tool... no checking for pkg-config... (cached) /usr/bin/pkg-config checking for libpsl options with pkg-config... found checking for psl_builtin in -lpsl... yes checking for libpsl.h... yes checking for library containing gsasl_init... no configure: WARNING: libgsasl was not found checking for pkg-config... (cached) /usr/bin/pkg-config checking for libssh2 options with pkg-config... found checking for libssh2_free in -lssh2... yes checking for libssh2.h... yes checking for RTMP_Init in -lrtmp... no checking whether versioned symbols are wanted... no checking whether to build with libidn2... (assumed) yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libidn2 options with pkg-config... found configure: pkg-config: IDN_LIBS: "-lidn2" configure: pkg-config: IDN_LDFLAGS: "" configure: pkg-config: IDN_CPPFLAGS: "" configure: pkg-config: IDN_DIR: "" checking if idn2_lookup_ul can be linked... yes checking for idn2.h... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for libnghttp2 options with pkg-config... found configure: -l is -lnghttp2 configure: -I is configure: -L is checking for nghttp2_session_get_stream_local_window_size in -lnghttp2... yes checking for nghttp2/nghttp2.h... yes configure: Added to CURL_LIBRARY_PATH checking for sys/types.h... (cached) yes checking for sys/select.h... yes checking for sys/ioctl.h... yes checking for unistd.h... (cached) yes checking for arpa/inet.h... yes checking for net/if.h... yes checking for netinet/in.h... yes checking for netinet/in6.h... no checking for sys/un.h... yes checking for linux/tcp.h... yes checking for netinet/tcp.h... yes checking for netinet/udp.h... yes checking for netdb.h... yes checking for sys/sockio.h... no checking for sys/param.h... yes checking for termios.h... yes checking for termio.h... yes checking for fcntl.h... yes checking for io.h... no checking for pwd.h... yes checking for utime.h... yes checking for sys/utime.h... no checking for sys/poll.h... yes checking for poll.h... yes checking for sys/resource.h... yes checking for libgen.h... yes checking for locale.h... yes checking for stdbool.h... yes checking for stdint.h... (cached) yes checking for sys/filio.h... no checking for sys/eventfd.h... yes checking for an ANSI C-conforming const... yes checking for size_t... yes checking for sys/types.h... (cached) yes checking for struct timeval... yes checking run-time libs availability... fine checking size of size_t... 8 checking size of long... 8 checking size of int... 4 checking size of time_t... 8 checking size of off_t... 8 checking size of curl_off_t... 8 checking size of curl_socket_t... 4 checking for long long... yes checking for ssize_t... yes checking for bool... yes checking for sa_family_t... yes checking for suseconds_t... yes checking if time_t is unsigned... no checking for struct sockaddr_storage... yes checking for sys/select.h... (cached) yes checking for select... yes checking for sys/types.h... (cached) yes checking for recv... yes checking for sys/types.h... (cached) yes checking for send... yes checking for sys/types.h... (cached) yes checking for MSG_NOSIGNAL... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking if alarm can be linked... yes checking if alarm is prototyped... yes checking if alarm is compilable... yes checking if alarm usage allowed... yes checking if alarm might be used... yes checking for sys/types.h... (cached) yes checking for strings.h... (cached) yes checking for sys/types.h... (cached) yes checking for libgen.h... (cached) yes checking if basename can be linked... yes checking if basename is prototyped... yes checking if basename is compilable... yes checking if basename usage allowed... yes checking if basename might be used... yes checking if closesocket can be linked... no checking if closesocket might be used... no checking for sys/types.h... (cached) yes checking if CloseSocket can be linked... no checking if CloseSocket might be used... no checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for fcntl.h... (cached) yes checking if fcntl can be linked... yes checking if fcntl is prototyped... yes checking if fcntl is compilable... yes checking if fcntl usage allowed... yes checking if fcntl might be used... yes checking if fcntl O_NONBLOCK is compilable... yes checking if fcntl O_NONBLOCK usage allowed... yes checking if fcntl O_NONBLOCK might be used... yes checking whether build target is a native Windows one... (cached) no checking for sys/types.h... (cached) yes checking for netdb.h... (cached) yes checking if freeaddrinfo can be linked... yes checking if freeaddrinfo is prototyped... yes checking if freeaddrinfo is compilable... yes checking if freeaddrinfo usage allowed... yes checking if freeaddrinfo might be used... yes checking for sys/types.h... (cached) yes checking for sys/xattr.h... yes checking if fsetxattr can be linked... yes checking if fsetxattr is prototyped... yes checking if fsetxattr takes 5 args.... yes checking if fsetxattr is compilable... yes checking if fsetxattr usage allowed... yes checking if fsetxattr might be used... yes checking if ftruncate can be linked... yes checking if ftruncate is prototyped... yes checking if ftruncate is compilable... yes checking if ftruncate usage allowed... yes checking if ftruncate might be used... yes checking for sys/types.h... (cached) yes checking if getaddrinfo can be linked... yes checking if getaddrinfo is prototyped... yes checking if getaddrinfo is compilable... yes checking if getaddrinfo seems to work... yes checking if getaddrinfo usage allowed... yes checking if getaddrinfo might be used... yes checking if getaddrinfo is threadsafe... yes checking if gethostbyname_r can be linked... yes checking if gethostbyname_r is prototyped... yes checking if gethostbyname_r takes 3 args.... no checking if gethostbyname_r takes 5 args.... no checking if gethostbyname_r takes 6 args.... yes checking if gethostbyname_r is compilable... yes checking if gethostbyname_r usage allowed... yes checking if gethostbyname_r might be used... yes checking if gethostname can be linked... yes checking if gethostname is prototyped... yes checking if gethostname is compilable... yes checking for gethostname arg 2 data type... size_t checking if gethostname usage allowed... yes checking if gethostname might be used... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for ifaddrs.h... yes checking if getifaddrs can be linked... yes checking if getifaddrs is prototyped... yes checking if getifaddrs is compilable... yes checking if getifaddrs seems to work... yes checking if getifaddrs usage allowed... yes checking if getifaddrs might be used... yes checking if getpeername can be linked... yes checking if getpeername is prototyped... yes checking if getpeername is compilable... yes checking if getpeername usage allowed... yes checking if getpeername might be used... yes checking if getsockname can be linked... yes checking if getsockname is prototyped... yes checking if getsockname is compilable... yes checking if getsockname usage allowed... yes checking if getsockname might be used... yes checking for sys/types.h... (cached) yes checking if gmtime_r can be linked... yes checking if gmtime_r is prototyped... yes checking if gmtime_r is compilable... yes checking if gmtime_r seems to work... yes checking if gmtime_r usage allowed... yes checking if gmtime_r might be used... yes checking for sys/types.h... (cached) yes checking for unistd.h... (cached) yes checking for sys/ioctl.h... (cached) yes checking for stropts.h... no checking if ioctl can be linked... yes checking if ioctl is prototyped... yes checking if ioctl is compilable... yes checking if ioctl usage allowed... yes checking if ioctl might be used... yes checking if ioctl FIONBIO is compilable... yes checking if ioctl FIONBIO usage allowed... yes checking if ioctl FIONBIO might be used... yes checking if ioctl SIOCGIFADDR is compilable... yes checking if ioctl SIOCGIFADDR usage allowed... yes checking if ioctl SIOCGIFADDR might be used... yes checking if ioctlsocket can be linked... no checking if ioctlsocket might be used... no checking if IoctlSocket can be linked... no checking if IoctlSocket might be used... no checking if memrchr can be linked... yes checking if memrchr is prototyped... yes checking if memrchr is compilable... yes checking if memrchr usage allowed... yes checking if memrchr might be used... yes checking for sys/types.h... (cached) yes checking if sigaction can be linked... yes checking if sigaction is prototyped... yes checking if sigaction is compilable... yes checking if sigaction usage allowed... yes checking if sigaction might be used... yes checking if siginterrupt can be linked... yes checking if siginterrupt is prototyped... yes checking if siginterrupt is compilable... yes checking if siginterrupt usage allowed... yes checking if siginterrupt might be used... yes checking if signal can be linked... yes checking if signal is prototyped... yes checking if signal is compilable... yes checking if signal usage allowed... yes checking if signal might be used... yes checking for sys/types.h... (cached) yes checking if sigsetjmp can be linked... no checking if sigsetjmp seems a macro... yes checking if sigsetjmp is compilable... yes checking if sigsetjmp usage allowed... yes checking if sigsetjmp might be used... yes checking if socket can be linked... yes checking if socket is prototyped... yes checking if socket is compilable... yes checking if socket usage allowed... yes checking if socket might be used... yes checking if socketpair can be linked... yes checking if socketpair is prototyped... yes checking if socketpair is compilable... yes checking if socketpair usage allowed... yes checking if socketpair might be used... yes checking if strdup can be linked... yes checking if strdup is prototyped... yes checking if strdup is compilable... yes checking if strdup usage allowed... yes checking if strdup might be used... yes checking if strerror_r can be linked... yes checking if strerror_r is prototyped... yes checking if strerror_r is compilable... yes checking if strerror_r is glibc like... yes checking if strerror_r seems to work... yes checking if strerror_r usage allowed... yes checking if strerror_r might be used... yes checking for accept4... yes checking for eventfd... yes checking for fnmatch... yes checking for geteuid... yes checking for getpass_r... no checking for getppid... yes checking for getpwuid... yes checking for getpwuid_r... yes checking for getrlimit... yes checking for gettimeofday... yes checking for if_nametoindex... yes checking for mach_absolute_time... no checking for pipe... yes checking for pipe2... yes checking for poll... yes checking for sendmmsg... yes checking for sendmsg... yes checking for setlocale... yes checking for setrlimit... yes checking for snprintf... yes checking for utime... yes checking for utimes... yes checking for realpath... yes checking for sched_yield... yes checking for sys/types.h... (cached) yes checking for netinet/in.h... (cached) yes checking for arpa/inet.h... (cached) yes checking if inet_ntop can be linked... yes checking if inet_ntop is prototyped... yes checking if inet_ntop is compilable... yes checking if inet_ntop seems to work... yes checking if inet_ntop usage allowed... yes checking if inet_ntop might be used... yes checking if inet_pton can be linked... yes checking if inet_pton is prototyped... yes checking if inet_pton is compilable... yes checking if inet_pton seems to work... yes checking if inet_pton usage allowed... yes checking if inet_pton might be used... yes checking if strcasecmp can be linked... yes checking if strcasecmp is prototyped... yes checking if strcasecmp is compilable... yes checking if strcasecmp usage allowed... yes checking if strcasecmp might be used... yes checking if strcmpi can be linked... no checking if strcmpi might be used... no checking if stricmp can be linked... no checking if stricmp might be used... no checking for setmode... no checking for fseeko... yes checking for gcc options needed to detect all undeclared functions... none needed checking whether fseeko is declared... yes checking how to set a socket into non-blocking mode... fcntl O_NONBLOCK checking for perl... /usr/bin/perl checking whether to enable the threaded resolver... yes checking for pthread.h... yes checking for pthread_create... yes checking for dirent.h... yes checking for opendir... yes checking convert -I options to -isystem... yes checking whether to enable verbose strings... yes checking whether to enable SSPI support (Windows native builds only)... no checking whether to enable basic authentication method... yes checking whether to enable bearer authentication method... yes checking whether to enable digest authentication method... yes checking whether to enable kerberos authentication method... yes checking whether to enable negotiate authentication method... yes checking whether to enable aws sig methods... yes checking whether to support NTLM... yes checking whether to enable TLS-SRP authentication... yes checking whether to enable Unix domain sockets... auto checking for struct sockaddr_un.sun_path... yes checking whether to support cookies... yes checking whether to support socketpair... yes checking whether to support HTTP authentication... yes checking whether to support DoH... yes checking whether to support the MIME API... yes checking whether to support binding connections locally... yes checking whether to support the form API... yes checking whether to support date parsing... yes checking whether to support netrc parsing... yes checking whether to support progress-meter... yes checking whether to support the SHA-512/256 hash algorithm... yes checking whether to support DNS shuffling... yes checking whether to support curl_easy_option*... yes checking whether to support alt-svc... yes checking whether to support headers-api... yes checking whether to support HSTS... yes checking whether to enable HTTPS-RR support... no checking whether to support WebSockets... yes checking whether hiding of library internal symbols will actually happen... yes checking if this build supports HTTPS-proxy... yes checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating Makefile config.status: creating docs/Makefile config.status: creating docs/examples/Makefile config.status: creating docs/libcurl/Makefile config.status: creating docs/libcurl/opts/Makefile config.status: creating docs/cmdline-opts/Makefile config.status: creating include/Makefile config.status: creating include/curl/Makefile config.status: creating src/Makefile config.status: creating lib/Makefile config.status: creating scripts/Makefile config.status: creating lib/libcurl.vers config.status: creating tests/Makefile config.status: creating tests/config config.status: creating tests/configurehelp.pm config.status: creating tests/certs/Makefile config.status: creating tests/data/Makefile config.status: creating tests/server/Makefile config.status: creating tests/libtest/Makefile config.status: creating tests/unit/Makefile config.status: creating tests/tunit/Makefile config.status: creating tests/client/Makefile config.status: creating tests/http/config.ini config.status: creating tests/http/Makefile config.status: creating packages/Makefile config.status: creating packages/vms/Makefile config.status: creating curl-config config.status: creating libcurl.pc config.status: creating lib/curl_config.h config.status: executing depfiles commands config.status: executing libtool commands configure: Configured to build curl/libcurl: Host setup: riscv64-unknown-linux-gnu Install prefix: /usr Compiler: gcc CFLAGS: -march=rv64gc -mabi=lp64d -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fno-omit-frame-pointer -g -ffile-prefix-map=/build/curl/src=/usr/src/debug/curl -flto=auto -Werror-implicit-function-declaration -Wno-system-headers CFLAGS extras: CPPFLAGS: -D_GNU_SOURCE -isystem /usr/include/p11-kit-1 LDFLAGS: -Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -flto=auto curl-config: LIBS: -lnghttp2 -lidn2 -lssh2 -lssh2 -lpsl -lnettle -lgnutls -lgssapi_krb5 -lzstd -lbrotlidec -lz curl version: 8.15.0 SSL: enabled (GnuTLS) SSH: enabled (libssh2) zlib: enabled brotli: enabled (libbrotlidec) zstd: enabled (libzstd) GSS-API: enabled (MIT Kerberos/Heimdal) GSASL: no (libgsasl not found) TLS-SRP: enabled resolver: POSIX threaded IPv6: enabled Unix sockets: enabled IDN: enabled (libidn2) Build docs: enabled (--disable-docs) Build libcurl: Shared=yes, Static=yes Built-in manual: no (--enable-manual) --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) Code coverage: disabled SSPI: no (--enable-sspi) ca cert bundle: /etc/ssl/certs/ca-certificates.crt ca cert path: no ca cert embed: no ca fallback: no LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS: no (--enable-ldaps) IPFS/IPNS: enabled RTSP: enabled RTMP: no (--with-librtmp) PSL: enabled Alt-svc: enabled (--disable-alt-svc) Headers API: enabled (--disable-headers-api) HSTS: enabled (--disable-hsts) HTTP1: enabled (internal) HTTP2: enabled (nghttp2) HTTP3: no (--with-ngtcp2 --with-nghttp3, --with-quiche, --with-openssl-quic, --with-msh3) ECH: no (--enable-ech) HTTPS RR: no (--enable-httpsrr) SSLS-EXPORT: no (--enable-ssls-export) Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd make: Entering directory '/build/curl/src/build-curl-gnutls/lib' make all-am make[1]: Entering directory '/build/curl/src/build-curl-gnutls/lib' CC libcurl_la-altsvc.lo CC libcurl_la-amigaos.lo CC libcurl_la-asyn-ares.lo CC libcurl_la-asyn-base.lo CC libcurl_la-asyn-thrdd.lo CC libcurl_la-cf-h1-proxy.lo CC libcurl_la-bufq.lo CC libcurl_la-cf-h2-proxy.lo CC libcurl_la-bufref.lo CC libcurl_la-cf-https-connect.lo CC libcurl_la-cf-haproxy.lo CC libcurl_la-cf-socket.lo CC libcurl_la-cfilters.lo CC libcurl_la-content_encoding.lo CC libcurl_la-conncache.lo CC libcurl_la-connect.lo CC libcurl_la-cookie.lo CC libcurl_la-cshutdn.lo CC libcurl_la-curl_addrinfo.lo CC libcurl_la-curl_des.lo CC libcurl_la-curl_endian.lo CC libcurl_la-curl_fnmatch.lo CC libcurl_la-curl_get_line.lo CC libcurl_la-curl_gethostname.lo CC libcurl_la-curl_gssapi.lo CC libcurl_la-curl_memrchr.lo CC libcurl_la-curl_range.lo CC libcurl_la-curl_ntlm_core.lo CC libcurl_la-curl_rtmp.lo CC libcurl_la-curl_sasl.lo CC libcurl_la-curl_sha512_256.lo CC libcurl_la-curl_sspi.lo CC libcurl_la-curl_threads.lo CC libcurl_la-curl_trc.lo CC libcurl_la-cw-out.lo CC libcurl_la-cw-pause.lo CC libcurl_la-dict.lo CC libcurl_la-doh.lo CC libcurl_la-dynhds.lo CC libcurl_la-easy.lo CC libcurl_la-easygetopt.lo CC libcurl_la-easyoptions.lo CC libcurl_la-escape.lo CC libcurl_la-fake_addrinfo.lo CC libcurl_la-file.lo CC libcurl_la-fileinfo.lo CC libcurl_la-fopen.lo CC libcurl_la-formdata.lo CC libcurl_la-ftp.lo CC libcurl_la-ftplistparser.lo CC libcurl_la-getenv.lo CC libcurl_la-getinfo.lo CC libcurl_la-hash.lo CC libcurl_la-gopher.lo CC libcurl_la-headers.lo CC libcurl_la-hmac.lo CC libcurl_la-hostip.lo CC libcurl_la-hostip4.lo CC libcurl_la-hostip6.lo CC libcurl_la-hsts.lo CC libcurl_la-http.lo CC libcurl_la-http1.lo CC libcurl_la-http2.lo CC libcurl_la-http_aws_sigv4.lo CC libcurl_la-http_chunks.lo CC libcurl_la-http_digest.lo CC libcurl_la-http_negotiate.lo CC libcurl_la-http_ntlm.lo CC libcurl_la-http_proxy.lo CC libcurl_la-httpsrr.lo CC libcurl_la-idn.lo CC libcurl_la-if2ip.lo CC libcurl_la-imap.lo CC libcurl_la-krb5.lo CC libcurl_la-ldap.lo CC libcurl_la-llist.lo CC libcurl_la-macos.lo CC libcurl_la-md4.lo CC libcurl_la-md5.lo CC libcurl_la-memdebug.lo CC libcurl_la-mime.lo CC libcurl_la-mprintf.lo CC libcurl_la-mqtt.lo CC libcurl_la-multi.lo CC libcurl_la-multi_ev.lo CC libcurl_la-netrc.lo CC libcurl_la-noproxy.lo CC libcurl_la-openldap.lo CC libcurl_la-parsedate.lo CC libcurl_la-pingpong.lo CC libcurl_la-pop3.lo CC libcurl_la-progress.lo CC libcurl_la-psl.lo CC libcurl_la-rand.lo CC libcurl_la-rename.lo CC libcurl_la-request.lo CC libcurl_la-rtsp.lo CC libcurl_la-select.lo CC libcurl_la-sendf.lo CC libcurl_la-setopt.lo CC libcurl_la-sha256.lo CC libcurl_la-share.lo CC libcurl_la-slist.lo CC libcurl_la-smb.lo CC libcurl_la-smtp.lo CC libcurl_la-socketpair.lo CC libcurl_la-socks.lo CC libcurl_la-socks_gssapi.lo CC libcurl_la-socks_sspi.lo CC libcurl_la-speedcheck.lo CC libcurl_la-splay.lo CC libcurl_la-strcase.lo CC libcurl_la-strdup.lo CC libcurl_la-strequal.lo CC libcurl_la-system_win32.lo CC libcurl_la-strerror.lo CC libcurl_la-telnet.lo CC libcurl_la-tftp.lo CC libcurl_la-transfer.lo CC libcurl_la-uint-bset.lo CC libcurl_la-uint-hash.lo CC libcurl_la-uint-spbset.lo CC libcurl_la-uint-table.lo CC libcurl_la-url.lo CC libcurl_la-urlapi.lo CC libcurl_la-version.lo CC libcurl_la-ws.lo CC libcurlu_la-altsvc.lo CC libcurlu_la-amigaos.lo CC libcurlu_la-asyn-ares.lo CC libcurlu_la-asyn-base.lo CC libcurlu_la-asyn-thrdd.lo CC libcurlu_la-bufq.lo CC libcurlu_la-bufref.lo CC libcurlu_la-cf-h1-proxy.lo CC libcurlu_la-cf-h2-proxy.lo CC libcurlu_la-cf-haproxy.lo CC libcurlu_la-cf-https-connect.lo CC libcurlu_la-cf-socket.lo CC libcurlu_la-cfilters.lo CC libcurlu_la-conncache.lo CC libcurlu_la-connect.lo CC libcurlu_la-content_encoding.lo CC libcurlu_la-cookie.lo CC libcurlu_la-cshutdn.lo CC libcurlu_la-curl_addrinfo.lo CC libcurlu_la-curl_des.lo CC libcurlu_la-curl_endian.lo CC libcurlu_la-curl_fnmatch.lo CC libcurlu_la-curl_get_line.lo CC libcurlu_la-curl_gethostname.lo CC libcurlu_la-curl_gssapi.lo CC libcurlu_la-curl_memrchr.lo CC libcurlu_la-curl_ntlm_core.lo CC libcurlu_la-curl_range.lo CC libcurlu_la-curl_rtmp.lo CC libcurlu_la-curl_sasl.lo CC libcurlu_la-curl_sha512_256.lo CC libcurlu_la-curl_sspi.lo CC libcurlu_la-curl_threads.lo CC libcurlu_la-curl_trc.lo CC libcurlu_la-cw-out.lo CC libcurlu_la-cw-pause.lo CC libcurlu_la-dict.lo CC libcurlu_la-doh.lo CC libcurlu_la-easy.lo CC libcurlu_la-dynhds.lo CC libcurlu_la-easygetopt.lo CC libcurlu_la-easyoptions.lo CC libcurlu_la-escape.lo CC libcurlu_la-fake_addrinfo.lo CC libcurlu_la-file.lo CC libcurlu_la-fileinfo.lo CC libcurlu_la-fopen.lo CC libcurlu_la-formdata.lo CC libcurlu_la-ftp.lo CC libcurlu_la-ftplistparser.lo CC libcurlu_la-getenv.lo CC libcurlu_la-getinfo.lo CC libcurlu_la-gopher.lo CC libcurlu_la-hash.lo CC libcurlu_la-headers.lo CC libcurlu_la-hmac.lo CC libcurlu_la-hostip.lo CC libcurlu_la-hostip4.lo CC libcurlu_la-hostip6.lo CC libcurlu_la-http.lo CC libcurlu_la-hsts.lo CC libcurlu_la-http1.lo CC libcurlu_la-http2.lo CC libcurlu_la-http_aws_sigv4.lo CC libcurlu_la-http_chunks.lo CC libcurlu_la-http_digest.lo CC libcurlu_la-http_negotiate.lo CC libcurlu_la-http_ntlm.lo CC libcurlu_la-http_proxy.lo CC libcurlu_la-httpsrr.lo CC libcurlu_la-idn.lo CC libcurlu_la-if2ip.lo CC libcurlu_la-imap.lo CC libcurlu_la-krb5.lo CC libcurlu_la-ldap.lo CC libcurlu_la-llist.lo CC libcurlu_la-macos.lo CC libcurlu_la-md4.lo CC libcurlu_la-md5.lo CC libcurlu_la-memdebug.lo CC libcurlu_la-mime.lo CC libcurlu_la-mprintf.lo CC libcurlu_la-mqtt.lo CC libcurlu_la-multi.lo CC libcurlu_la-multi_ev.lo CC libcurlu_la-netrc.lo CC libcurlu_la-noproxy.lo CC libcurlu_la-openldap.lo CC libcurlu_la-parsedate.lo CC libcurlu_la-pingpong.lo CC libcurlu_la-pop3.lo CC libcurlu_la-progress.lo CC libcurlu_la-psl.lo CC libcurlu_la-rand.lo CC libcurlu_la-rename.lo CC libcurlu_la-request.lo CC libcurlu_la-rtsp.lo CC libcurlu_la-select.lo CC libcurlu_la-sendf.lo CC libcurlu_la-setopt.lo CC libcurlu_la-sha256.lo CC libcurlu_la-share.lo CC libcurlu_la-slist.lo CC libcurlu_la-smtp.lo CC libcurlu_la-smb.lo CC libcurlu_la-socketpair.lo CC libcurlu_la-socks.lo CC libcurlu_la-socks_gssapi.lo CC libcurlu_la-socks_sspi.lo CC libcurlu_la-speedcheck.lo CC libcurlu_la-splay.lo CC libcurlu_la-strcase.lo CC libcurlu_la-strdup.lo CC libcurlu_la-strequal.lo CC libcurlu_la-strerror.lo CC libcurlu_la-system_win32.lo CC libcurlu_la-telnet.lo CC libcurlu_la-tftp.lo CC libcurlu_la-transfer.lo CC libcurlu_la-uint-bset.lo CC libcurlu_la-uint-hash.lo CC libcurlu_la-uint-spbset.lo CC libcurlu_la-uint-table.lo CC libcurlu_la-url.lo CC libcurlu_la-urlapi.lo CC libcurlu_la-version.lo CC libcurlu_la-ws.lo CC vauth/libcurlu_la-cleartext.lo CC vauth/libcurlu_la-cram.lo CC vauth/libcurlu_la-digest.lo CC vauth/libcurlu_la-digest_sspi.lo CC vauth/libcurlu_la-gsasl.lo CC vauth/libcurlu_la-krb5_gssapi.lo CC vauth/libcurlu_la-krb5_sspi.lo CC vauth/libcurlu_la-ntlm.lo CC vauth/libcurlu_la-ntlm_sspi.lo CC vauth/libcurlu_la-oauth2.lo CC vauth/libcurlu_la-spnego_gssapi.lo CC vauth/libcurlu_la-spnego_sspi.lo CC vauth/libcurlu_la-vauth.lo CC vtls/libcurlu_la-cipher_suite.lo CC vtls/libcurlu_la-gtls.lo CC vtls/libcurlu_la-hostcheck.lo CC vtls/libcurlu_la-keylog.lo CC vtls/libcurlu_la-mbedtls.lo CC vtls/libcurlu_la-mbedtls_threadlock.lo CC vtls/libcurlu_la-openssl.lo CC vtls/libcurlu_la-rustls.lo CC vtls/libcurlu_la-schannel.lo CC vtls/libcurlu_la-schannel_verify.lo CC vtls/libcurlu_la-vtls.lo CC vtls/libcurlu_la-vtls_spack.lo CC vtls/libcurlu_la-vtls_scache.lo CC vtls/libcurlu_la-wolfssl.lo CC vtls/libcurlu_la-x509asn1.lo CC vquic/libcurlu_la-curl_msh3.lo CC vquic/libcurlu_la-curl_ngtcp2.lo CC vquic/libcurlu_la-curl_osslq.lo CC vquic/libcurlu_la-curl_quiche.lo CC vquic/libcurlu_la-vquic.lo CC vquic/libcurlu_la-vquic-tls.lo CC vssh/libcurlu_la-libssh.lo CC vssh/libcurlu_la-libssh2.lo CC vssh/libcurlu_la-curl_path.lo CC vssh/libcurlu_la-wolfssh.lo CC curlx/libcurlu_la-base64.lo CC curlx/libcurlu_la-dynbuf.lo CC curlx/libcurlu_la-inet_ntop.lo CC curlx/libcurlu_la-inet_pton.lo CC curlx/libcurlu_la-multibyte.lo CC curlx/libcurlu_la-nonblock.lo CC curlx/libcurlu_la-strparse.lo CC curlx/libcurlu_la-timediff.lo CC curlx/libcurlu_la-timeval.lo CC curlx/libcurlu_la-version_win32.lo CC curlx/libcurlu_la-wait.lo CC curlx/libcurlu_la-warnless.lo CC curlx/libcurlu_la-winapi.lo CC vauth/libcurl_la-cleartext.lo CC vauth/libcurl_la-cram.lo CC vauth/libcurl_la-digest.lo CC vauth/libcurl_la-digest_sspi.lo CC vauth/libcurl_la-gsasl.lo CC vauth/libcurl_la-krb5_gssapi.lo CC vauth/libcurl_la-krb5_sspi.lo CC vauth/libcurl_la-ntlm.lo CC vauth/libcurl_la-ntlm_sspi.lo CC vauth/libcurl_la-oauth2.lo CC vauth/libcurl_la-spnego_gssapi.lo CC vauth/libcurl_la-vauth.lo CC vauth/libcurl_la-spnego_sspi.lo CC vtls/libcurl_la-cipher_suite.lo CC vtls/libcurl_la-gtls.lo CC vtls/libcurl_la-hostcheck.lo CC vtls/libcurl_la-keylog.lo CC vtls/libcurl_la-mbedtls.lo CC vtls/libcurl_la-mbedtls_threadlock.lo CC vtls/libcurl_la-openssl.lo CC vtls/libcurl_la-rustls.lo CC vtls/libcurl_la-schannel.lo CC vtls/libcurl_la-schannel_verify.lo CC vtls/libcurl_la-vtls.lo CC vtls/libcurl_la-vtls_scache.lo CC vtls/libcurl_la-vtls_spack.lo CC vtls/libcurl_la-wolfssl.lo CC vtls/libcurl_la-x509asn1.lo CC vquic/libcurl_la-curl_msh3.lo CC vquic/libcurl_la-curl_ngtcp2.lo CC vquic/libcurl_la-curl_osslq.lo CC vquic/libcurl_la-curl_quiche.lo CC vquic/libcurl_la-vquic.lo CC vquic/libcurl_la-vquic-tls.lo CC vssh/libcurl_la-libssh.lo CC vssh/libcurl_la-libssh2.lo CC vssh/libcurl_la-curl_path.lo CC vssh/libcurl_la-wolfssh.lo CC curlx/libcurl_la-base64.lo CC curlx/libcurl_la-dynbuf.lo CC curlx/libcurl_la-inet_ntop.lo CC curlx/libcurl_la-inet_pton.lo CC curlx/libcurl_la-multibyte.lo CC curlx/libcurl_la-nonblock.lo CC curlx/libcurl_la-strparse.lo CC curlx/libcurl_la-timediff.lo CC curlx/libcurl_la-timeval.lo CC curlx/libcurl_la-version_win32.lo CC curlx/libcurl_la-wait.lo CC curlx/libcurl_la-warnless.lo CC curlx/libcurl_la-winapi.lo CCLD libcurlu.la CCLD libcurl.la /usr/bin/nm: .libs/libcurl_la-amigaos.o: no symbols /usr/bin/nm: .libs/libcurl_la-asyn-ares.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_memrchr.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_rtmp.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_sspi.o: no symbols /usr/bin/nm: .libs/libcurl_la-fake_addrinfo.o: no symbols /usr/bin/nm: .libs/libcurl_la-hostip4.o: no symbols /usr/bin/nm: .libs/libcurl_la-hostip6.o: no symbols /usr/bin/nm: .libs/libcurl_la-httpsrr.o: no symbols /usr/bin/nm: .libs/libcurl_la-ldap.o: no symbols /usr/bin/nm: .libs/libcurl_la-macos.o: no symbols /usr/bin/nm: .libs/libcurl_la-memdebug.o: no symbols /usr/bin/nm: .libs/libcurl_la-openldap.o: no symbols /usr/bin/nm: .libs/libcurl_la-socks_sspi.o: no symbols /usr/bin/nm: .libs/libcurl_la-system_win32.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-digest_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-gsasl.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-krb5_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-ntlm_sspi.o: no symbols /usr/bin/nm: vauth/.libs/libcurl_la-spnego_sspi.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-cipher_suite.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-hostcheck.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-mbedtls.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-mbedtls_threadlock.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-openssl.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-rustls.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-schannel.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-schannel_verify.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-vtls_spack.o: no symbols /usr/bin/nm: vtls/.libs/libcurl_la-wolfssl.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_msh3.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_ngtcp2.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_osslq.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-curl_quiche.o: no symbols /usr/bin/nm: vquic/.libs/libcurl_la-vquic-tls.o: no symbols /usr/bin/nm: vssh/.libs/libcurl_la-libssh.o: no symbols /usr/bin/nm: vssh/.libs/libcurl_la-wolfssh.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-inet_ntop.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-inet_pton.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-multibyte.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-version_win32.o: no symbols /usr/bin/nm: curlx/.libs/libcurl_la-winapi.o: no symbols make[1]: Leaving directory '/build/curl/src/build-curl-gnutls/lib' make: Leaving directory '/build/curl/src/build-curl-gnutls/lib' ==> Starting check()... make[1]: Entering directory '/build/curl/src/build-curl/tests' Making all in certs make[2]: Entering directory '/build/curl/src/build-curl/tests/certs' /usr/bin/perl /build/curl/src/curl/tests/certs/genserv.pl test test-localhost.prm test-localhost.nn.prm test-localhost0h.prm test-localhost-san-first.prm test-localhost-san-last.prm test-client-cert.prm test-client-eku-only.prm /usr/bin/openssl OpenSSL 3.5.1 1 Jul 2025 (Library: OpenSSL 3.5.1 1 Jul 2025) Certificate request self-signature ok subject=C=NN, O=Edel Curl Arctic Illudium Research Cloud, CN=Northern Nowhere Trust Anchor CA root generated: test 6000 days prime256v1 Certificate generated: CA=test 300days prime256v1 test-localhost Certificate generated: CA=test 300days prime256v1 test-localhost.nn Certificate generated: CA=test 300days prime256v1 test-localhost0h Certificate generated: CA=test 300days prime256v1 test-localhost-san-first Certificate generated: CA=test 300days prime256v1 test-localhost-san-last Certificate generated: CA=test 300days prime256v1 test-client-cert Certificate generated: CA=test 300days prime256v1 test-client-eku-only make[2]: Leaving directory '/build/curl/src/build-curl/tests/certs' Making all in data make[2]: Entering directory '/build/curl/src/build-curl/tests/data' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/build/curl/src/build-curl/tests/data' Making all in server make[2]: Entering directory '/build/curl/src/build-curl/tests/server' /usr/bin/perl /build/curl/src/curl/scripts/mk-unity.pl --include memptr.c getpart.c util.c ../../lib/curlx/base64.c ../../lib/curlx/inet_pton.c ../../lib/curlx/inet_ntop.c ../../lib/curlx/multibyte.c ../../lib/curlx/nonblock.c ../../lib/curlx/strparse.c ../../lib/curlx/timediff.c ../../lib/curlx/timeval.c ../../lib/curlx/version_win32.c ../../lib/curlx/wait.c ../../lib/curlx/warnless.c ../../lib/curlx/winapi.c --test dnsd.c mqttd.c resolve.c rtspd.c sockfilt.c socksd.c sws.c tftpd.c > servers.c RUN checksrc CC servers.o CCLD servers make[2]: Leaving directory '/build/curl/src/build-curl/tests/server' Making all in libtest make[2]: Entering directory '/build/curl/src/build-curl/tests/libtest' /usr/bin/perl /build/curl/src/curl/tests/libtest/mk-lib1521.pl < /build/curl/src/curl/include/curl/curl.h lib1521.c /usr/bin/perl /build/curl/src/curl/scripts/mk-unity.pl --include memptr.c testutil.c testtrace.c ../../lib/curlx/warnless.c ../../lib/curlx/multibyte.c ../../lib/curlx/timediff.c ../../lib/curlx/timeval.c ../../lib/curl_threads.c ../../lib/curlx/version_win32.c ../../lib/curlx/wait.c --test lib500.c lib501.c lib502.c lib503.c lib504.c lib505.c lib506.c lib507.c lib508.c lib509.c lib510.c lib511.c lib512.c lib513.c lib514.c lib515.c lib516.c lib517.c lib518.c lib519.c lib520.c lib521.c lib523.c lib524.c lib525.c lib526.c lib530.c lib533.c lib536.c lib537.c lib539.c lib540.c lib541.c lib542.c lib543.c lib544.c lib547.c lib549.c lib552.c lib553.c lib554.c lib555.c lib556.c lib557.c lib558.c lib559.c lib560.c lib562.c lib564.c lib566.c lib567.c lib568.c lib569.c lib570.c lib571.c lib572.c lib573.c lib574.c lib575.c lib576.c lib578.c lib579.c lib582.c lib583.c lib586.c lib589.c lib590.c lib591.c lib597.c lib598.c lib599.c lib643.c lib650.c lib651.c lib652.c lib653.c lib654.c lib655.c lib658.c lib659.c lib661.c lib666.c lib667.c lib668.c lib670.c lib674.c lib676.c lib677.c lib678.c lib694.c lib695.c lib751.c lib753.c lib1156.c lib1301.c lib1308.c lib1485.c lib1500.c lib1501.c lib1502.c lib1506.c lib1507.c lib1508.c lib1509.c lib1510.c lib1511.c lib1512.c lib1513.c lib1514.c lib1515.c lib1517.c lib1518.c lib1520.c lib1522.c lib1523.c lib1525.c lib1526.c lib1527.c lib1528.c lib1529.c lib1530.c lib1531.c lib1532.c lib1533.c lib1534.c lib1535.c lib1536.c lib1537.c lib1538.c lib1540.c lib1541.c lib1542.c lib1545.c lib1550.c lib1551.c lib1552.c lib1553.c lib1554.c lib1555.c lib1556.c lib1557.c lib1558.c lib1559.c lib1560.c lib1564.c lib1565.c lib1567.c lib1568.c lib1569.c lib1571.c lib1576.c lib1591.c lib1592.c lib1593.c lib1594.c lib1597.c lib1598.c lib1599.c lib1662.c lib1900.c lib1901.c lib1903.c lib1905.c lib1906.c lib1907.c lib1908.c lib1910.c lib1911.c lib1912.c lib1913.c lib1915.c lib1916.c lib1918.c lib1919.c lib1933.c lib1934.c lib1935.c lib1936.c lib1937.c lib1938.c lib1939.c lib1940.c lib1945.c lib1947.c lib1948.c lib1955.c lib1956.c lib1957.c lib1958.c lib1959.c lib1960.c lib1964.c lib1970.c lib1971.c lib1972.c lib1973.c lib1974.c lib1975.c lib1977.c lib1978.c lib2023.c lib2032.c lib2082.c lib2301.c lib2302.c lib2304.c lib2306.c lib2308.c lib2309.c lib2402.c lib2404.c lib2405.c lib2502.c lib2700.c lib3010.c lib3025.c lib3026.c lib3027.c lib3100.c lib3101.c lib3102.c lib3103.c lib3104.c lib3105.c lib3207.c lib3208.c lib1521.c > libtests.c RUN checksrc CC libtests.o CCLD libtests make[2]: Leaving directory '/build/curl/src/build-curl/tests/libtest' Making all in client make[2]: Entering directory '/build/curl/src/build-curl/tests/client' /usr/bin/perl /build/curl/src/curl/scripts/mk-unity.pl --include ../../lib/curlx/multibyte.c ../../lib/curlx/timediff.c ../../lib/curlx/wait.c --test h2_pausing.c h2_serverpush.c h2_upgrade_extreme.c hx_download.c hx_upload.c tls_session_reuse.c upload_pausing.c ws_data.c ws_pingpong.c > clients.c RUN checksrc CC clients.o CCLD clients make[2]: Leaving directory '/build/curl/src/build-curl/tests/client' Making all in http make[2]: Entering directory '/build/curl/src/build-curl/tests/http' make[2]: Nothing to be done for 'all'. make[2]: Leaving directory '/build/curl/src/build-curl/tests/http' Making all in unit make[2]: Entering directory '/build/curl/src/build-curl/tests/unit' /usr/bin/perl /build/curl/src/curl/scripts/mk-unity.pl --test unit1300.c unit1302.c unit1303.c unit1304.c unit1305.c unit1307.c unit1309.c unit1323.c unit1330.c unit1395.c unit1396.c unit1397.c unit1398.c unit1399.c unit1600.c unit1601.c unit1602.c unit1603.c unit1605.c unit1606.c unit1607.c unit1608.c unit1609.c unit1610.c unit1611.c unit1612.c unit1614.c unit1615.c unit1616.c unit1620.c unit1650.c unit1651.c unit1652.c unit1653.c unit1654.c unit1655.c unit1656.c unit1657.c unit1658.c unit1660.c unit1661.c unit1663.c unit1664.c unit1979.c unit1980.c unit2600.c unit2601.c unit2602.c unit2603.c unit2604.c unit3200.c unit3205.c unit3211.c unit3212.c unit3213.c unit3214.c > units.c RUN checksrc CC units.o CCLD units make[2]: Leaving directory '/build/curl/src/build-curl/tests/unit' Making all in tunit make[2]: Entering directory '/build/curl/src/build-curl/tests/tunit' /usr/bin/perl /build/curl/src/curl/scripts/mk-unity.pl --test tool1394.c tool1604.c tool1621.c > tunits.c RUN checksrc CC tunits.o CCLD tunits make[2]: Leaving directory '/build/curl/src/build-curl/tests/tunit' make[2]: Entering directory '/build/curl/src/build-curl/tests' (cd certs && make) make[3]: Entering directory '/build/curl/src/build-curl/tests/certs' make[3]: Nothing to be done for 'all'. make[3]: Leaving directory '/build/curl/src/build-curl/tests/certs' make[2]: Leaving directory '/build/curl/src/build-curl/tests' srcdir=/build/curl/src/curl/tests /usr/bin/perl -I/build/curl/src/curl/tests /build/curl/src/curl/tests/runtests.pl -a -p ~flaky ~timing-dependent -v -a -k -p -j64 !433 Using curl: ../src/curl CMD (256): valgrind >/dev/null 2>&1 CMD (0): valgrind --help 2>&1 | grep -- --tool >/dev/null 2>&1 CMD (0): ../src/curl --version 1>log/curlverout.log 2>log/curlvererr.log ********* System characteristics ******** * curl 8.15.0 (riscv64-unknown-linux-gnu) * libcurl/8.15.0 OpenSSL/3.5.1 zlib/1.3.1 brotli/1.1.0 zstd/1.5.7 libidn2/2.3.7 libpsl/0.21.5 libssh2/1.11.1 nghttp2/1.66.0 nghttp3/1.10.1 * Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss * Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets zstd * Disabled: win32-ca-searchpath, win32-ca-search-safe, override-dns * Host: * System: Linux arch-nspawn-402956 6.15.1-1-sophgo-g40031e56817d #1 SMP PREEMPT_DYNAMIC Fri, 13 Jun 2025 05:18:17 +0000 riscv64 GNU/Linux * OS: linux * Perl: v5.42.0 (/usr/bin/perl) * diff: available * Args: -a -p ~flaky ~timing-dependent -v -a -k -p -j64 !433 * Jobs: 64 * Env: Valgrind * Seed: 216255 * buildinfo.configure.tool: configure * buildinfo.configure.args: '--prefix=/usr' '--mandir=/usr/share/man' '--disable-ldap' '--disable-ldaps' '--disable-manual' '--enable-ipv6' '--enable-threaded-resolver' '--enable-websockets' '--with-gssapi' '--with-libssh2' '--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt' '--enable-versioned-symbols' '--with-fish-functions-dir=/usr/share/fish/vendor_completions.d/' '--with-openssl' '--with-openssl-quic' '--with-zsh-functions-dir=/usr/share/zsh/site-functions/' 'CFLAGS=-march=rv64gc -mabi=lp64d -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=3 -Wformat -Werror=format-security -fstack-clash-protection -fno-omit-frame-pointer -g -ffile-prefix-map=/build/curl/src=/usr/src/debug/curl -flto=auto' 'LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -flto=auto' * buildinfo.host: riscv64-unknown-linux-gnu * buildinfo.host.cpu: riscv64 * buildinfo.host.os: linux-gnu * buildinfo.target: riscv64-unknown-linux-gnu * buildinfo.target.cpu: riscv64 * buildinfo.target.os: linux-gnu * buildinfo.target.flags: UNIX UNIX GCC * buildinfo.compiler: GNU_C * buildinfo.compiler.version: 15.1.1 * buildinfo.sysroot: * Servers: HTTP-IPv6 HTTP-unix FTP-IPv6 ***************************************** DISABLED: test 323 DISABLED: test 594 DISABLED: test 836 DISABLED: test 882 DISABLED: test 938 DISABLED: test 1182 DISABLED: test 1184 DISABLED: test 1209 DISABLED: test 1211 DISABLED: test 1307 DISABLED: test 1316 DISABLED: test 1512 DISABLED: test 1801 DISABLED: test 2043 test 0096 SKIPPED: curl lacks TrackMemory support test 0159 SKIPPED: curl lacks Debug support test 0356 SKIPPED: curl lacks Debug support test 0358 SKIPPED: curl lacks Debug support test 0375 SKIPPED: curl has proxy support test 0445 SKIPPED: curl lacks ldap support test 0506 SKIPPED: curl has threaded-resolver support test 0558 SKIPPED: curl lacks TrackMemory support Warning: test573 result is ignored due to flaky Warning: test587 result is ignored due to flaky test 0959 SKIPPED: curl has IDN support test 0960 SKIPPED: curl has IDN support test 0961 SKIPPED: curl has IDN support test 1026 SKIPPED: curl lacks manual support Warning: test1086 result is ignored due to flaky Warning: test1086 result is ignored due to timing-dependent Warning: test1112 result is ignored due to timing-dependent Warning: test1113 result is ignored due to flaky Warning: test1162 result is ignored due to flaky Warning: test1163 result is ignored due to flaky test 1179 SKIPPED: curl lacks manual support Warning: test1208 result is ignored due to flaky Warning: test1208 result is ignored due to timing-dependent test 1330 SKIPPED: curl lacks TrackMemory support test 1454 SKIPPED: curl has IPv6 support test 1461 SKIPPED: curl lacks manual support Warning: test1510 result is ignored due to flaky test 1560 SKIPPED: curl lacks ldap support Warning: test1592 result is ignored due to flaky Warning: test1592 result is ignored due to timing-dependent Warning: test1631 result is ignored due to flaky Warning: test1632 result is ignored due to flaky test 1703 SKIPPED: curl lacks Unicode support Warning: test2032 result is ignored due to flaky Warning: test2032 result is ignored due to timing-dependent test 2033 SKIPPED: curl lacks Schannel support test 2070 SKIPPED: curl lacks Schannel support test 2079 SKIPPED: curl lacks Schannel support test 2102 SKIPPED: curl lacks override-dns support test 2103 SKIPPED: curl lacks override-dns support test 2500 SKIPPED: curl lacks nghttpx-h3 support test 2503 SKIPPED: curl lacks nghttpx-h3 support test 4000 SKIPPED: curl lacks ECH support test 4001 SKIPPED: curl lacks ECH support Runner 73746 starting Runner 73742 starting Runner 73745 starting Runner 73744 starting Runner 73743 starting Runner 73741 starting Runner 73739 starting Runner 73738 starting Runner 73740 starting Runner 73736 starting Runner 73737 starting Runner 73734 starting Runner 73732 starting Runner 73735 starting Runner 73731 starting Runner 73733 starting Runner 73729 starting Runner 73730 starting Runner 73725 starting Runner 73722 starting Runner 73724 starting Runner 73726 starting Runner 73721 starting Runner 73723 starting Runner 73717 starting Runner 73719 starting Runner 73715 starting Runner 73718 starting Runner 73720 starting Runner 73713 starting Runner 73714 starting Runner 73716 starting Runner 73712 starting Runner 73710 starting Runner 73711 starting Runner 73708 starting Runner 73709 starting Runner 73707 starting Runner 73706 starting Runner 73704 starting Runner 73702 starting Runner 73705 starting Runner 73703 starting Runner 73701 starting Runner 73700 starting Runner 73699 starting Runner 73698 starting Runner 73697 starting Runner 73696 starting Runner 73695 starting Runner 73692 starting Runner 73694 starting Runner 73689 starting Runner 73690 starting Runner 73691 starting Runner 73727 starting Runner 73687 starting Runner 73693 starting Runner 73685 starting Runner 73688 starting Runner 73686 starting Runner 73683 starting Runner 73684 starting Runner 73728 starting CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind20 ../src/curl -q --output log/45/curl20.out --include --trace-ascii log/45/trace20 --trace-config all --trace-time --ipv4 non-existing-host.haxx.se. > log/45/stdout20 2> log/45/stderr20 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind19 ../src/curl -q --output log/46/curl19.out --include --trace-ascii log/46/trace19 --trace-config all --trace-time --trace-config all 127.0.0.1:47 > log/46/stdout19 2> log/46/stderr19 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind15 ../src/curl -q --include --trace-ascii log/50/trace15 --trace-config all --trace-time http://127.0.0.1:45651/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/50/stdout15 2> log/50/stderr15 * starts no server test 0020...[attempt connect to non-existing host name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind20 ../src/curl -q --output log/45/curl20.out --include --trace-ascii log/45/trace20 --trace-config all --trace-time --ipv4 non-existing-host.haxx.se. > log/45/stdout20 2> log/45/stderr20 curl returned 1, when expecting 6 20: exit FAILED == Contents of files in the log/45/ dir after test 20 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind20 ../src/curl -q --output log/45/curl20.out --include --trace-ascii log/45/trace20 --trace-config all --trace-time --ipv4 non-existing-host.haxx.se. > log/45/stdout20 2> log/45/stderr20 === End of file commands.log === Start of file server.cmd Testnum 20 === End of file server.cmd === Start of file valgrind20 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind20 * starts no server test 0019...[attempt connect to non-listening socket] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind19 ../src/curl -q --output log/46/curl19.out --include --trace-ascii log/46/trace19 --trace-config all --trace-time --trace-config all 127.0.0.1:47 > log/46/stdout19 2> log/46/stderr19 curl returned 1, when expecting 7 19: exit FAILED == Contents of files in the log/46/ dir after test 19 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind19 ../src/curl -q --output log/46/curl19.out --include --trace-ascii log/46/trace19 --trace-config all --trace-time --trace-config all 127.0.0.1:47 > log/46/stdout19 2> log/46/stderr19 === End of file commands.log === Start of file server.cmd Testnum 19 === End of file server.cmd === Start of file valgrind19 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind19 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind11 ../src/curl -q --output log/54/curl11.out --include --trace-ascii log/54/trace11 --trace-config all --trace-time http://127.0.0.1:44921/want/11 -L > log/54/stdout11 2> log/54/stderr11 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind59 ../src/curl -q --output log/6/curl59.out --include --trace-ascii log/6/trace59 --trace-config all --trace-time "http://127.0.0.1:37181?mooo/59" > log/6/stdout59 2> log/6/stderr59 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind14 ../src/curl -q --output log/51/curl14.out --include --trace-ascii log/51/trace14 --trace-config all --trace-time http://127.0.0.1:34903/want/14 -i --head > log/51/stdout14 2> log/51/stderr14 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind6 ../src/curl -q --output log/59/curl6.out --include --trace-ascii log/59/trace6 --trace-config all --trace-time http://127.0.0.1:43695/we/want/that/page/6 -b "name=contents;name2=content2" -b name3=content3 > log/59/stdout6 2> log/59/stderr6 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/50/server/http_server.pid" --logfile "log/50/http_server.log" --logdir "log/50" --portfile log/50/server/http_server.port --config log/50/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73759 port 45651 * pid http => 73759 73759 test 0015...[--write-out test] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind15 ../src/curl -q --include --trace-ascii log/50/trace15 --trace-config all --trace-time http://127.0.0.1:45651/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/50/stdout15 2> log/50/stderr15 15: stdout FAILED: --- log/50/check-expected 2025-07-18 09:40:32.028612580 +0000 +++ log/50/check-generated 2025-07-18 09:40:32.027612581 +0000 @@ -1,8 +0,0 @@ -HTTP/1.1 200 OK[CR][LF] -Fake: yes[CR][LF] -Fake: yes[CR][LF] -Fake: yes[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -Repeated nonsense-headers[LF] -http://127.0.0.1:45651/want/15 200 26[LF] == Contents of files in the log/50/ dir after test 15 === Start of file check-expected HTTP/1.1 200 OK[CR][LF] Fake: yes[CR][LF] Fake: yes[CR][LF] Fake: yes[CR][LF] Content-Length: 26[CR][LF] [CR][LF] Repeated nonsense-headers[LF] http://127.0.0.1:45651/want/15 200 26[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind15 ../src/curl -q --include --trace-ascii log/50/trace15 --trace-config all --trace-time http://127.0.0.1:45651/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/50/stdout15 2> log/50/stderr15 === End of file commands.log === Start of file http_server.log 09:40:30.656054 Running HTTP IPv4 version on port 45651 09:40:30.656891 Wrote pid 73759 to log/50/server/http_server.pid 09:40:30.657250 Wrote port 45651 to log/50/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 15 === End of file server.cmd === Start of file valgrind15 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind15 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/6/server/http_server.pid" --logfile "log/6/http_server.log" --logdir "log/6" --portfile log/6/server/http_server.port --config log/6/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73803 port 37181 * pid http => 73803 73803 test 0059...[HTTP URL with slash but with "parameter"] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind59 ../src/curl -q --output log/6/curl59.out --include --trace-ascii log/6/trace59 --trace-config all --trace-time "http://127.0.0.1:37181?mooo/59" > log/6/stdout59 2> log/6/stderr59 59: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 59 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind59 ../src/curl -q --output log/6/curl59.out --include --trace-ascii log/6/trace59 --trace-config all --trace-time "http://127.0.0.1:37181?mooo/59" > log/6/stdout59 2> log/6/stderr59 === End of file commands.log === Start of file http_server.log 09:40:30.718400 Running HTTP IPv4 version on port 37181 09:40:30.722256 Wrote pid 73803 to log/6/server/http_server.pid 09:40:30.722713 Wrote port 37181 to log/6/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 59 === End of file server.cmd === Start of file valgrind59 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind59 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/54/server/http_server.pid" --logfile "log/54/http_server.log" --logdir "log/54" --portfile log/54/server/http_server.port --config log/54/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73756 port 44921 * pid http => 73756 73756 test 0011...[simple HTTP Location: following] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind11 ../src/curl -q --output log/54/curl11.out --include --trace-ascii log/54/trace11 --trace-config all --trace-time http://127.0.0.1:44921/want/11 -L > log/54/stdout11 2> log/54/stderr11 11: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 11 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind11 ../src/curl -q --output log/54/curl1CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind58 ../src/curl -q --output log/7/curl58.out --include --trace-ascii log/7/trace58 --trace-config all --trace-time http://127.0.0.1:44647/we/want/ -T log/7/58te[]st.txt -g > log/7/stdout58 2> log/7/stderr58 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind17 ../src/curl -q --output log/48/curl17.out --include --trace-ascii log/48/trace17 --trace-config all --trace-time -K - 127.0.0.1:46339/that.site.com/17 log/48/stdout17 2> log/48/stderr17 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind7 ../src/curl -q --output log/58/curl7.out --include --trace-ascii log/58/trace7 --trace-config all --trace-time http://127.0.0.1:46727/we/want/7 -b none -D log/58/heads7.txt > log/58/stdout7 2> log/58/stderr7 1.out --include --trace-ascii log/54/trace11 --trace-config all --trace-time http://127.0.0.1:44921/want/11 -L > log/54/stdout11 2> log/54/stderr11 === End of file commands.log === Start of file http_server.log 09:40:30.489380 Running HTTP IPv4 version on port 44921 09:40:30.490220 Wrote pid 73756 to log/54/server/http_server.pid 09:40:30.493768 Wrote port 44921 to log/54/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 11 === End of file server.cmd === Start of file valgrind11 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind11 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/51/server/http_server.pid" --logfile "log/51/http_server.log" --logdir "log/51" --portfile log/51/server/http_server.port --config log/51/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73763 port 34903 * pid http => 73763 73763 test 0014...[HTTP HEAD with Connection: close] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind14 ../src/curl -q --output log/51/curl14.out --include --trace-ascii log/51/trace14 --trace-config all --trace-time http://127.0.0.1:34903/want/14 -i --head > log/51/stdout14 2> log/51/stderr14 14: protocol FAILED! There was no content at all in the file log/51/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/51/ dir after test 14 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind14 ../src/curl -q --output log/51/curl14.out --include --trace-ascii log/51/trace14 --trace-config all --trace-time http://127.0.0.1:34903/want/14 -i --head > log/51/stdout14 2> log/51/stderr14 === End of file commands.log === Start of file http_server.log 09:40:30.694788 Running HTTP IPv4 version on port 34903 09:40:30.695818 Wrote pid 73763 to log/51/server/http_server.pid 09:40:30.696353 Wrote port 34903 to log/51/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 14 === End of file server.cmd === Start of file valgrind14 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind14 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/59/server/http_server.pid" --logfile "log/59/http_server.log" --logdir "log/59" --portfile log/59/server/http_server.port --config log/59/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73752 port 43695 * pid http => 73752 73752 test 0006...[HTTP with simple cookie send] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind6 ../src/curl -q --output log/59/curl6.out --include --trace-ascii log/59/trace6 --trace-config all --trace-time http://127.0.0.1:43695/we/want/that/page/6 -b "name=contents;name2=content2" -b name3=content3 > log/59/stdout6 2> log/59/stderr6 6: protocol FAILED! There was no content at all in the file log/59/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/59/ dir after test 6 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind6 ../src/curl -q --output log/59/curl6.out --include --trace-ascii log/59/trace6 --trace-config all --trace-time http://127.0.0.1:43695/we/want/that/page/6 -b "name=contents;name2=content2" -b name3=content3 > log/59/stdout6 2> log/59/stderr6 === End of file commands.log === Start of file http_server.log 09:40:30.333928 Running HTTP IPv4 version on port 43695 09:40:30.340906 Wrote pid 73752 to log/59/server/http_server.pid 09:40:30.341309 Wrote port 43695 to log/59/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 6 === End of file server.cmd === Start of file valgrind6 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo vaCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind12 ../src/curl -q --output log/53/curl12.out --include --trace-ascii log/53/trace12 --trace-config all --trace-time http://127.0.0.1:34639/want/12 -r 100-200 > log/53/stdout12 2> log/53/stderr12 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind3 ../src/curl -q --output log/62/curl3.out --include --trace-ascii log/62/trace3 --trace-config all --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:38899/3 > log/62/stdout3 2> log/62/stderr3 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind10 ../src/curl -q --output log/55/curl10.out --include --trace-ascii log/55/trace10 --trace-config all --trace-time http://127.0.0.1:33071/we/want/10 -T log/55/test10.txt > log/55/stdout10 2> log/55/stderr10 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind13 ../src/curl -q --output log/52/curl13.out --include --trace-ascii log/52/trace13 --trace-config all --trace-time http://127.0.0.1:40089/want/13 -X DELETE > log/52/stdout13 2> log/52/stderr13 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind18 ../src/curl -q --include --trace-ascii log/47/trace18 --trace-config all --trace-time "127.0.0.1:41103/{18,180002,180003}" > log/47/stdout18 2> log/47/stderr18 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind26 ../src/curl -q --output log/39/curl26.out --include --trace-ascii log/39/trace26 --trace-config all --trace-time http://127.0.0.1:42899/want/26 -o - -o - > log/39/stdout26 2> log/39/stderr26 lgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind6 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/48/server/http_server.pid" --logfile "log/48/http_server.log" --logdir "log/48" --portfile log/48/server/http_server.port --config log/48/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73764 port 46339 * pid http => 73764 73764 test 0017...[HTTP with config file on stdin] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind17 ../src/curl -q --output log/48/curl17.out --include --trace-ascii log/48/trace17 --trace-config all --trace-time -K - 127.0.0.1:46339/that.site.com/17 log/48/stdout17 2> log/48/stderr17 17: protocol FAILED! There was no content at all in the file log/48/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/48/ dir after test 17 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind17 ../src/curl -q --output log/48/curl17.out --include --trace-ascii log/48/trace17 --trace-config all --trace-time -K - 127.0.0.1:46339/that.site.com/17 log/48/stdout17 2> log/48/stderr17 === End of file commands.log === Start of file http_server.log 09:40:30.530054 Running HTTP IPv4 version on port 46339 09:40:30.533025 Wrote pid 73764 to log/48/server/http_server.pid 09:40:30.533413 Wrote port 46339 to log/48/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 17 === End of file server.cmd === Start of file stdin-for-17 # # Use a silly request without '--': request MOOO # # Set the user-agent using a short-option: -A "agent007 license to drill\t" # # long option *with* '--': --max-time 180 === End of file stdin-for-17 === Start of file valgrind17 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind17 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/58/server/http_server.pid" --logfile "log/58/http_server.log" --logdir "log/58" --portfile log/58/server/http_server.port --config log/58/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73755 port 46727 * pid http => 73755 73755 test 0007...[HTTP with cookie parser and header recording] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind7 ../src/curl -q --output log/58/curl7.out --include --trace-ascii log/58/trace7 --trace-config all --trace-time http://127.0.0.1:46727/we/want/7 -b none -D log/58/heads7.txt > log/58/stdout7 2> log/58/stderr7 7: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 7 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind7 ../src/curl -q --output log/58/curl7.out --include --trace-ascii log/58/trace7 --trace-config all --trace-time http://127.0.0.1:46727/we/want/7 -b none -D log/58/heads7.txt > log/58/stdout7 2> log/58/stderr7 === End of file commands.log === Start of file http_server.log 09:40:30.764629 Running HTTP IPv4 version on port 46727 09:40:30.765831 Wrote pid 73755 to log/58/server/http_server.pid 09:40:30.766286 Wrote port 46727 to log/58/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 7 === End of file server.cmd === Start of file valgrind7 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind7 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/7/server/http_server.pid" --logfile "log/7/http_server.log" --logdir "log/7" --portfile log/7/server/http_server.port --config log/7/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73801 port 44647 * pid http => 73801 73801 test 0058...[HTTP PUT from file with weird letters] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind58 ../src/curl -q --output log/7/curl58.out --include --trace-ascii log/7/trace58 --trace-config all --trace-time http://127.0.0.1:44647/we/want/ -T log/7/58te[]st.txt -g > log/7/stdout58 2> log/7/stderr58 58: protocol FAILED! There was no content at all in the file log/7/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/7/ dir after test 58 === Start of file 58te[]st.txt a few bytes === End of file 58te[]st.txt === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind58 ../src/curl -q --output log/7/curl58.out --include --trace-ascii log/7/trace58 --trace-config all --trace-time http://127.0.0.1:44647/we/want/ -T log/7/58te[]st.txt -g > log/7/stdout58 2> log/7/stderr58 === End of file commands.log === Start of file http_server.log 09:40:30.851706 Running HTTP IPv4 version on port 44647 09:40:30.852407 Wrote pid 73801 to log/7/server/http_server.pid 09:40:30.852824 Wrote port 44647 to log/7/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 58 === End of file server.cmd === Start of file valgrind58 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind58 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/53/server/http_server.pid" --logfile "log/53/http_server.log" --logdir "log/53" --portfile log/53/server/http_server.port --config log/53/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73761 port 34639 * pid http => 73761 73761 test 0012...[HTTP range support] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind12 ../src/curl -q --output log/53/curl12.out --include --trace-ascii log/53/trace12 --trace-config all --trace-time http://127.0.0.1:34639/want/12 -r 100-200 > log/53/stdout12 2> log/53/stderr12 12: protocol FAILED! There was no content at all in the file log/53/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/53/ dir after test 12 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind12 ../src/curl -q --output log/53/curl12.out --include --trace-ascii log/53/trace12 --trace-config all --trace-time http://127.0.0.1:34639/want/12 -r 100-200 > log/53/stdout12 2> log/53/stderr12 === End of file commands.log === Start of file http_server.log 09:40:30.654022 Running HTTP IPv4 version on port 34639 09:40:30.665871 Wrote pid 73761 to log/53/server/http_server.pid 09:40:30.666200 Wrote port 34639 to log/53/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 12 === End of file server.cmd === Start of file valgrind12 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind12 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/55/server/http_server.pid" --logfile "log/55/http_server.log" --logdir "log/55" --portfile log/55/server/http_server.port --config log/55/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73757 port 33071 * pid http => 73757 73757 test 0010...[simple HTTP PUT from file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind10 ../src/curl -q --output log/55/curl10.out --include --trace-ascii log/55/trace10 --trace-config all --trace-time http://127.0.0.1:33071/we/want/10 -T log/55/test10.txt > log/55/stdout10 2> log/55/stderr10 10: protocol FAILED! There was no content at all in the file log/55/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/55/ dir after test 10 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind10 ../src/curl -q --output log/55/curl10.out --include --trace-ascii log/55/trace10 --trace-config all --trace-time http://127.0.0.1:33071/we/want/10 -T log/55/test10.txt > log/55/stdout10 2> log/55/stderr10 === End of file commands.log === Start of file http_server.log 09:40:30.495349 Running HTTP IPv4 version on port 33071 09:40:30.496236 Wrote pid 73757 to log/55/server/http_server.pid 09:40:30.500013 Wrote port 33071 to log/55/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 10 === End of file server.cmd === Start of file test10.txt Weird file to upload for testing the PUT feature === End of file test10.txt === Start of file valgrind10 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named functionCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind5 ../src/curl -q --output log/60/curl5.out --include --trace-ascii log/60/trace5 --trace-config all --trace-time http://127.0.0.1:38843/we/want/that/page/5#5 -x 127.0.0.1:38843 > log/60/stdout5 2> log/60/stderr5 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind21 ../src/curl -q --output log/44/curl21.out --include --trace-ascii log/44/trace21 --trace-config all --trace-time -I -d FOOO -F moo=moo localhost > log/44/stdout21 2> log/44/stderr21 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind33 ../src/curl -q --output log/32/curl33.out --include --trace-ascii log/32/trace33 --trace-config all --trace-time http://127.0.0.1:45607/33 -Tlog/32/test33.txt -C 50 > log/32/stdout33 2> log/32/stderr33 using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind10 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/62/server/http_server.pid" --logfile "log/62/http_server.log" --logdir "log/62" --portfile log/62/server/http_server.port --config log/62/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73749 port 38899 * pid http => 73749 73749 test 0003...[HTTP POST with auth and contents but with content-length set to 0] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind3 ../src/curl -q --output log/62/curl3.out --include --trace-ascii log/62/trace3 --trace-config all --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:38899/3 > log/62/stdout3 2> log/62/stderr3 3: protocol FAILED! There was no content at all in the file log/62/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/62/ dir after test 3 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind3 ../src/curl -q --output log/62/curl3.out --include --trace-ascii log/62/trace3 --trace-config all --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:38899/3 > log/62/stdout3 2> log/62/stderr3 === End of file commands.log === Start of file http_server.log 09:40:30.749992 Running HTTP IPv4 version on port 38899 09:40:30.750823 Wrote pid 73749 to log/62/server/http_server.pid 09:40:30.751204 Wrote port 38899 to log/62/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 3 === End of file server.cmd === Start of file valgrind3 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind3 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/39/server/http_server.pid" --logfile "log/39/http_server.log" --logdir "log/39" --portfile log/39/server/http_server.port --config log/39/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73769 port 42899 * pid http => 73769 73769 test 0026...[specify more -o than URLs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind26 ../src/curl -q --output log/39/curl26.out --include --trace-ascii log/39/trace26 --trace-config all --trace-time http://127.0.0.1:42899/want/26 -o - -o - > log/39/stdout26 2> log/39/stderr26 26: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 26 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind26 ../src/curl -q --output log/39/curl26.out --include --trace-ascii log/39/trace26 --trace-config all --trace-time http://127.0.0.1:42899/want/26 -o - -o - > log/39/stdout26 2> log/39/stderr26 === End of file commands.log === Start of file http_server.log 09:40:30.730317 Running HTTP IPv4 version on port 42899 09:40:30.735206 Wrote pid 73769 to log/39/server/http_server.pid 09:40:30.735676 Wrote port 42899 to log/39/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 26 === End of file server.cmd === Start of file valgrind26 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind26 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind41 ../src/curl -q --output log/24/curl41.out --include --trace-ascii log/24/trace41 --trace-config all --trace-time http://127.0.0.1:39259/want/41 -F moo=@boo > log/24/stdout41 2> log/24/stderr41 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind37 ../src/curl -q --output log/28/curl37.out --include --trace-ascii log/28/trace37 --trace-config all --trace-time http://127.0.0.1:37545/37 > log/28/stdout37 2> log/28/stderr37 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind1 ../src/curl -q --output log/64/curl1.out --include --trace-ascii log/64/trace1 --trace-config all --trace-time http://127.0.0.1:33073/1 > log/64/stdout1 2> log/64/stderr1 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind57 ../src/curl -q --include --trace-ascii log/8/trace57 --trace-config all --trace-time -w "%{content_type}\n" http://127.0.0.1:46129/57 -o log/8/out57 > log/8/stdout57 2> log/8/stderr57 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind16 ../src/curl -q --output log/49/curl16.out --include --trace-ascii log/49/trace16 --trace-config all --trace-time -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:42667 http://we.want.that.site.com/16 > log/49/stdout16 2> log/49/stderr16 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind24 ../src/curl -q --output log/41/curl24.out --include --trace-ascii log/41/trace24 --trace-config all --trace-time http://127.0.0.1:35093/24 --fail --silent --show-error > log/41/stdout24 2> log/41/stderr24 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind42 ../src/curl -q --output log/23/curl42.out --include --trace-ascii log/23/trace42 --trace-config all --trace-time http://127.0.0.1:42467/we/are/all/twits/42 -L > log/23/stdout42 2> log/23/stderr42 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind35 ../src/curl -q --output log/30/curl35.out --include --trace-ascii log/30/trace35 --trace-config all --trace-time http://127.0.0.1:43913/we/want/35 --data-binary @log/30/test35.txt > log/30/stdout35 2> log/30/stderr35 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind54 ../src/curl -q --output log/11/curl54.out --include --trace-ascii log/11/trace54 --trace-config all --trace-time http://127.0.0.1:41387/want/54 -L > log/11/stdout54 2> log/11/stderr54 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind43 ../src/curl -q --output log/22/curl43.out --include --trace-ascii log/22/trace43 --trace-config all --trace-time http://127.0.0.1:40073/want/43 -L -x 127.0.0.1:40073 > log/22/stdout43 2> log/22/stderr43 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind2 ../src/curl -q --output log/63/curl2.out --include --trace-ascii log/63/trace2 --trace-config all --trace-time -u fake:user http://127.0.0.1:38797/2 > log/63/stdout2 2> log/63/stderr2 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind53 ../src/curl -q --output log/12/curl53.out --include --trace-ascii log/12/trace53 --trace-config all --trace-time 127.0.0.1:45579/want/53 -b log/12/injar53 -j > log/12/stdout53 2> log/12/stderr53 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind9 ../src/curl -q --output log/56/curl9.out --include --trace-ascii log/56/trace9 --trace-config all --trace-time http://127.0.0.1:43265/we/want/9 -F name=daniel -F tool=curl -F file=@log/56/test9.txt > log/56/stdout9 2> log/56/stderr9 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/47/server/http_server.pid" --logfile "log/47/http_server.log" --logdir "log/47" --portfile log/47/server/http_server.port --config log/47/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73762 port 41103 * pid http => 73762 73762 test 0018...[multiple requests using {} in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind18 ../src/curl -q --include --trace-ascii log/47/trace18 --trace-config all --trace-time "127.0.0.1:41103/{18,180002,180003}" > log/47/stdout18 2> log/47/stderr18 18: stdout FAILED: --- log/47/check-expected 2025-07-18 09:40:32.518612332 +0000 +++ log/47/check-generated 2025-07-18 09:40:32.517612333 +0000 @@ -1,15 +0,0 @@ -HTTP/1.1 200 OK[CR][LF] -Funny-head: yesyes[CR][LF] -Content-Length: 4[CR][LF] -[CR][LF] -moo[LF] -HTTP/1.1 200 OK[CR][LF] -Funny-head: yesyes[CR][LF] -Content-Length: 4[CR][LF] -[CR][LF] -foo[LF] -HTTP/1.1 200 OK[CR][LF] -Funny-head: yesyes[CR][LF] -Content-Length: 4[CR][LF] -[CR][LF] -hoo[LF] == Contents of files in the log/47/ dir after test 18 === Start of file check-expected HTTP/1.1 200 OK[CR][LF] Funny-head: yesyes[CR][LF] Content-Length: 4[CR][LF] [CR][LF] moo[LF] HTTP/1.1 200 OK[CR][LF] Funny-head: yesyes[CR][LF] Content-Length: 4[CR][LF] [CR][LF] foo[LF] HTTP/1.1 200 OK[CR][LF] Funny-head: yesyes[CR][LF] Content-Length: 4[CR][LF] [CR][LF] hoo[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind18 ../src/curl -q --include --trace-ascii log/47/trace18 --trace-config all --trace-time "127.0.0.1:41103/{18,180002,180003}" > log/47/stdout18 2> log/47/stderr18 === End of file commands.log === Start of file http_server.log 09:40:30.595164 Running HTTP IPv4 version on port 41103 09:40:30.599036 Wrote pid 73762 to log/47/server/http_server.pid 09:40:30.599375 Wrote port 41103 to log/47/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 18 === End of file server.cmd === Start of file valgrind18 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind18 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/52/server/http_server.pid" --logfile "log/52/http_server.log" --logdir "log/52" --portfile log/52/server/http_server.port --config log/52/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73758 port 40089 * pid http => 73758 73758 test 0013...[HTTP custom request 'DELETE'] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind13 ../src/curl -q --output log/52/curl13.out --include --trace-ascii log/52/trace13 --trace-config all --trace-time http://127.0.0.1:40089/want/13 -X DELETE > log/52/stdout13 2> log/52/stderr13 13: protocol FAILED! There was no content at all in the file log/52/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/52/ dir after test 13 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind13 ../src/curl -q --output log/52/curl13.out --include --trace-ascii log/52/trace13 --trace-config all --trace-time http://127.0.0.1:40089/want/13 -X DELETE > log/52/stdout13 2> log/52/stderr13 === End of file commands.log === Start of file http_server.log 09:40:30.567252 Running HTTP IPv4 version on port 40089 09:40:30.568120 Wrote pid 73758 to log/52/server/http_server.pid 09:40:30.568544 Wrote port 40089 to log/52/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 13 === End of file server.cmd === Start of file valgrind13 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind13 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/60/server/http_server.pid" --logfile "log/60/http_server.log" --logdir "log/60" --portfile log/60/server/http_server.port --config log/60/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73750 port 38843 * pid http => 73750 73750 test 0005...[HTTP over proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind5 ../src/curl -q --output log/60/curl5.out --include --trace-ascii log/60/trace5 --trace-config all --trace-time http://127.0.0.1:38843/we/want/that/page/5#5 -x 127.0.0.1:38843 > log/60/stdout5 2> log/60/stderr5 5: protocol FAILED! There was no content at all in the file log/60/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/60/ dir after test 5 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yeCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind29 ../src/curl -q --output log/36/curl29.out --include --trace-ascii log/36/trace29 --trace-config all --trace-time http://127.0.0.1:46395/want/29 -m 2 > log/36/stdout29 2> log/36/stderr29 s --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind5 ../src/curl -q --output log/60/curl5.out --include --trace-ascii log/60/trace5 --trace-config all --trace-time http://127.0.0.1:38843/we/want/that/page/5#5 -x 127.0.0.1:38843 > log/60/stdout5 2> log/60/stderr5 === End of file commands.log === Start of file http_server.log 09:40:30.374665 Running HTTP IPv4 version on port 38843 09:40:30.375389 Wrote pid 73750 to log/60/server/http_server.pid 09:40:30.375838 Wrote port 38843 to log/60/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 5 === End of file server.cmd === Start of file valgrind5 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind5 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind38 ../src/curl -q --include --trace-ascii log/27/trace38 --trace-config all --trace-time http://127.0.0.1:42323/want/38 -C - --no-include -o log/27/fewl38.txt > log/27/stdout38 2> log/27/stderr38 RUN: Process with pid 73774 signalled to die CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind27 ../src/curl -q --output log/38/curl27.out --include --trace-ascii log/38/trace27 --trace-config all --trace-time "http://127.0.0.1:33511/want/{27,27,27}" -b none > log/38/stdout27 2> log/38/stderr27 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind8 ../src/curl -q --output log/57/curl8.out --include --trace-ascii log/57/trace8 --trace-config all --trace-time http://127.0.0.1:35945/we/want/8 -b log/57/heads8.txt > log/57/stdout8 2> log/57/stderr8 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind23 ../src/curl -q --output log/42/curl23.out --include --trace-ascii log/42/trace23 --trace-config all --trace-time htfp://127.0.0.1:42819/none.htfml > log/42/stdout23 2> log/42/stderr23 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind40 ../src/curl -q --output log/25/curl40.out --include --trace-ascii log/25/trace40 --trace-config all --trace-time http://127.0.0.1:41727/we/are/all/twits/40 -L > log/25/stdout40 2> log/25/stderr40 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind25 ../src/curl -q --output log/40/curl25.out --include --trace-ascii log/40/trace25 --trace-config all --trace-time http://127.0.0.1:42139/want/25 -L --max-redirs 5 > log/40/stdout25 2> log/40/stderr25 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind30 ../src/curl -q --output log/35/curl30.out --include --trace-ascii log/35/trace30 --trace-config all --trace-time http://127.0.0.1:43179/want/30 > log/35/stdout30 2> log/35/stderr30 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind4 ../src/curl -q --output log/61/curl4.out --include --trace-ascii log/61/trace4 --trace-config all --trace-time -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3: " -H "X-Test4; " -H "X-Test5;ignored" http://127.0.0.1:44381/4 http://127.0.0.1:44381/4 > log/61/stdout4 2> log/61/stderr4 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind55 ../src/curl -q --output log/10/curl55.out --include --trace-ascii log/10/trace55 --trace-config all --trace-time http://127.0.0.1:36913/55 -L > log/10/stdout55 2> log/10/stderr55 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind51 ../src/curl -q --output log/14/curl51.out --include --trace-ascii log/14/trace51 --trace-config all --trace-time http://127.0.0.1:43309/we/are/all/twits/51 -L > log/14/stdout51 2> log/14/stderr51 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/8/server/http_server.pid" --logfile "log/8/http_server.log" --logdir "log/8" --portfile log/8/server/http_server.port --config log/8/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73800 port 46129 * pid http => 73800 73800 test 0057...[HTTP content-type with spaces in] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind57 ../src/curl -q --include --trace-ascii log/8/trace57 --trace-config all --trace-time -w "%{content_type}\n" http://127.0.0.1:46129/57 -o log/8/out57 > log/8/stdout57 2> log/8/stderr57 57: stdout FAILED: --- log/8/check-expected 2025-07-18 09:40:32.631395215 +0000 +++ log/8/check-generated 2025-07-18 09:40:32.630612275 +0000 @@ -1 +0,0 @@ -text/html; charset=ISO-8859-4[CR][LF] == Contents of files in the log/8/ dir after test 57 === Start of file check-expected text/html; charset=ISO-8859-4[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind57 ../src/curl -q --include --trace-ascii log/8/trace57 --trace-config all --trace-time -w "%{content_type}\n" http://127.0.0.1:46129/57 -o log/8/out57 > log/8/stdout57 2> log/8/stderr57 === End of file commands.log === Start of file http_server.log 09:40:30.699360 Running HTTP IPv4 version on port 46129 09:40:30.700265 Wrote pid 73800 to log/8/server/http_server.pid 09:40:30.700774 Wrote port 46129 to log/8/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 57 === End of file server.cmd === Start of file valgrind57 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind57 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/11/server/http_server.pid" --logfile "log/11/http_server.log" --logdir "log/11" --portfile log/11/server/http_server.port --config log/11/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73809 port 41387 * pid http => 73809 73809 test 0054...[HTTP with blank Location:] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind54 ../src/curl -q --output log/11/curl54.out --include --trace-ascii log/11/trace54 --trace-config all --trace-time http://127.0.0.1:41387/want/54 -L > log/11/stdout54 2> log/11/stderr54 54: protocol FAILED! There was no content at all in the file log/11/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/11/ dir after test 54 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind54 ../src/curl -q --output log/11/curl54.out --include --trace-ascii log/11/trace54 --trace-config all --trace-time http://127.0.0.1:41387/want/54 -L > log/11/stdout54 2> log/11/stderr54 === End of file commands.log === Start of file http_server.log 09:40:30.845340 Running HTTP IPv4 version on port 41387 09:40:30.846168 Wrote pid 73809 to log/11/server/http_server.pid 09:40:30.846591 Wrote port 41387 to log/11/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 54 === End of file server.cmd === Start of file valgrind54 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind54 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/12/server/http_server.pid" --logfile "log/12/http_server.log" --logdir "log/12" --portfile log/12/server/http_server.port --config log/12/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73799 port 45579 * pid http => 73799 73799 test 0053...[HTTP, junk session cookies] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind53 ../src/curl -q --output log/12/curl53.out --include --trace-ascii log/12/trace53 --trace-config all --trace-time 127.0.0.1:45579/want/53 -b log/12/injar53 -j > log/12/stdout53 2> log/12/stderr53 53: protocol FAILED! There was no content at all in the file log/12/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/12/ dir after test 53 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind53 ../src/curl -q --output log/12/curl53.out --include --trace-ascii log/12/trace53 --trace-config all --trace-time 127.0.0.1:45579/want/53 -b log/12/injar53 -j > log/12/stdout53 2> log/12/stderr53 === End of file commands.log === Start of file http_server.log 09:40:30.664621 Running HTTP IPv4 version on port 45579 09:40:30.665320 Wrote pid 73799 to log/12/server/http_server.pid 09:40:30.665755RUN: Process with pid 73774 gracefully died Wrote port 45579 to log/12/server/http_server.port === End of file http_server.log === Start of file injar53 127.0.0.1 FALSE / FALSE 22139150993 mooo indeed 127.0.0.1 FALSE / FALSE 0 moo1 indeed 127.0.0.1 FALSE / FALSE 1 moo2 indeed === End of file injar53 === Start of file server.cmd Testnum 53 === End of file server.cmd === Start of file valgrind53 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind53 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/22/server/http_server.pid" --logfile "log/22/http_server.log" --logdir "log/22" --portfile log/22/server/http_server.port --config log/22/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73785 port 40073 * pid http => 73785 73785 test 0043...[HTTP Location: following over HTTP proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind43 ../src/curl -q --output log/22/curl43.out --include --trace-ascii log/22/trace43 --trace-config all --trace-time http://127.0.0.1:40073/want/43 -L -x 127.0.0.1:40073 > log/22/stdout43 2> log/22/stderr43 43: protocol FAILED! There was no content at all in the file log/22/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/22/ dir after test 43 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind43 ../src/curl -q --output log/22/curl43.out --include --trace-ascii log/22/trace43 --trace-config all --trace-time http://127.0.0.1:40073/want/43 -L -x 127.0.0.1:40073 > log/22/stdout43 2> log/22/stderr43 === End of file commands.log === Start of file http_server.log 09:40:30.648902 Running HTTP IPv4 version on port 40073 09:40:30.652994 Wrote pid 73785 to log/22/server/http_server.pid 09:40:30.653321 Wrote port 40073 to log/22/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 43 === End of file server.cmd === Start of file valgrind43 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind43 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/23/server/http_server.pid" --logfile "log/23/http_server.log" --logdir "log/23" --portfile log/23/server/http_server.port --config log/23/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73788 port 42467 * pid http => 73788 73788 test 0042...[HTTP redirect with whitespace in path (and conversion)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind42 ../src/curl -q --output log/23/curl42.out --include --trace-ascii log/23/trace42 --trace-config all --trace-time http://127.0.0.1:42467/we/are/all/twits/42 -L > log/23/stdout42 2> log/23/stderr42 42: protocol FAILED! There was no content at all in the file log/23/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/23/ dir after test 42 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind42 ../src/curl -q --output log/23/curl42.out --include --trace-ascii log/23/trace42 --trace-config all --trace-time http://127.0.0.1:42467/we/are/all/twits/42 -L > log/23/stdout42 2> log/23/stderr42 === End of file commands.log === Start of file http_server.log 09:40:30.825564 Running HTTP IPv4 version on port 42467 09:40:30.826339 Wrote pid 73788 to log/23/server/http_server.pid 09:40:30.826806 Wrote port 42467 to log/23/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 42 === End of file server.cmd === Start of file valgrind42 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind64 ../src/curl -q --output log/1/curl64.out --include --trace-ascii log/1/trace64 --trace-config all --trace-time http://127.0.0.1:40633/64 -u testuser:testpass --digest > log/1/stdout64 2> log/1/stderr64 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind56 ../src/curl -q --output log/9/curl56.out --include --trace-ascii log/9/trace56 --trace-config all --trace-time -K - 127.0.0.1:46607/that.site.com/56 log/9/stdout56 2> log/9/stderr56 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind28 ../src/curl -q --output log/37/curl28.out --include --trace-ascii log/37/trace28 --trace-config all --trace-time http://127.0.0.1:37551/want/28 -L > log/37/stdout28 2> log/37/stderr28 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind60 ../src/curl -q --output log/5/curl60.out --include --trace-ascii log/5/trace60 --trace-config all --trace-time http://127.0.0.1:33413/bzz/60 -T - -H "Content-Length: 1" log/5/stdout60 2> log/5/stderr60 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind47 ../src/curl -q --output log/18/curl47.out --include --trace-ascii log/18/trace47 --trace-config all --trace-time http://127.0.0.1:41285/47 -0 > log/18/stdout47 2> log/18/stderr47 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind45 ../src/curl -q --output log/20/curl45.out --include --trace-ascii log/20/trace45 --trace-config all --trace-time 127.0.0.1:45475/want/45 -L > log/20/stdout45 2> log/20/stderr45 ind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind42 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/24/server/http_server.pid" --logfile "log/24/http_server.log" --logdir "log/24" --portfile log/24/server/http_server.port --config log/24/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73787 port 39259 * pid http => 73787 73787 test 0041...[HTTP formpost with missing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind41 ../src/curl -q --output log/24/curl41.out --include --trace-ascii log/24/trace41 --trace-config all --trace-time http://127.0.0.1:39259/want/41 -F moo=@boo > log/24/stdout41 2> log/24/stderr41 curl returned 1, when expecting 26 41: exit FAILED == Contents of files in the log/24/ dir after test 41 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind41 ../src/curl -q --output log/24/curl41.out --include --trace-ascii log/24/trace41 --trace-config all --trace-time http://127.0.0.1:39259/want/41 -F moo=@boo > log/24/stdout41 2> log/24/stderr41 === End of file commands.log === Start of file http_server.log 09:40:30.772155 Running HTTP IPv4 version on port 39259 09:40:30.773058 Wrote pid 73787 to log/24/server/http_server.pid 09:40:30.773360 Wrote port 39259 to log/24/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 41 === End of file server.cmd === Start of file valgrind41 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind41 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/28/server/http_server.pid" --logfile "log/28/http_server.log" --logdir "log/28" --portfile log/28/server/http_server.port --config log/28/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73781 port 37545 * pid http => 73781 73781 test 0037...[HTTP GET with nothing returned from server] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind37 ../src/curl -q --output log/28/curl37.out --include --trace-ascii log/28/trace37 --trace-config all --trace-time http://127.0.0.1:37545/37 > log/28/stdout37 2> log/28/stderr37 37: protocol FAILED! There was no content at all in the file log/28/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/28/ dir after test 37 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind37 ../src/curl -q --output log/28/curl37.out --include --trace-ascii log/28/trace37 --trace-config all --trace-time http://127.0.0.1:37545/37 > log/28/stdout37 2> log/28/stderr37 === End of file commands.log === Start of file http_server.log 09:40:30.887609 Running HTTP IPv4 version on port 37545 09:40:30.888383 Wrote pid 73781 to log/28/server/http_server.pid 09:40:30.888857 Wrote port 37545 to log/28/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 37 === End of file server.cmd === Start of file valgrind37 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind37 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/30/server/http_server.pid" --logfile "log/30/http_server.log" --logdir "log/30" --portfile log/30/server/http_server.port --config log/30/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73779 port 43913 * pid http => 73779 73779 test 0035...[HTTP POST binary data with embedded NUL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind35 ../src/curl -q --output log/30/curl35.out --include --trace-ascii log/30/trace35 --trace-config all --trace-time http://127.0.0.1:43913/we/want/35 --data-binary @log/30/test35.txt > log/30/stdout35 2> log/30/stderr35 35: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 35 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind35 ../src/curl -q --output log/30/curl35.out --include --trace-ascii log/30/trace35 --trace-config all --trace-time http://127.0.0.1:43913/we/want/35 --data-binary @log/30/test35.txt > log/30/stdout35 2> log/30/stderr35 === End of file commands.log === Start of file http_server.log 09:40:30.829507 Running HTTP IPv4 version on port 43913 09:40:30.830266 Wrote pid 73779 to log/30/server/http_server.pid 09:40:30.830732 Wrote port 43913 to log/30/server/http_server.port === End of file http_sCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind32 ../src/curl -q --output log/33/curl32.out --include --trace-ascii log/33/trace32 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:36559/32 -G > log/33/stdout32 2> log/33/stderr32 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind61 ../src/curl -q --output log/4/curl61.out --include --trace-ascii log/4/trace61 --trace-config all --trace-time http://127.0.0.1:43013/we/want/61 -c log/4/jar61.txt -H "Host: www.host.foo.com" > log/4/stdout61 2> log/4/stderr61 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind63 ../src/curl -q --output log/2/curl63.out --include --trace-ascii log/2/trace63 --trace-config all --trace-time http://we.want.that.site.com/63 > log/2/stdout63 2> log/2/stderr63 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind22 ../src/curl -q --output log/43/curl22.out --include --trace-ascii log/43/trace22 --trace-config all --trace-time 127.0.0.1:41267/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/43/stdout22 2> log/43/stderr22 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind36 ../src/curl -q --output log/29/curl36.out --include --trace-ascii log/29/trace36 --trace-config all --trace-time http://127.0.0.1:36877/36 > log/29/stdout36 2> log/29/stderr36 erver.log === Start of file server.cmd Testnum 35 === End of file server.cmd === Start of file test35.txt This is binary data with an embedded NUL byte === End of file test35.txt === Start of file valgrind35 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind35 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/32/server/http_server.pid" --logfile "log/32/http_server.log" --logdir "log/32" --portfile log/32/server/http_server.port --config log/32/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73778 port 45607 * pid http => 73778 73778 test 0033...[HTTP PUT with resume] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind33 ../src/curl -q --output log/32/curl33.out --include --trace-ascii log/32/trace33 --trace-config all --trace-time http://127.0.0.1:45607/33 -Tlog/32/test33.txt -C 50 > log/32/stdout33 2> log/32/stderr33 33: protocol FAILED! There was no content at all in the file log/32/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/32/ dir after test 33 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind33 ../src/curl -q --output log/32/curl33.out --include --trace-ascii log/32/trace33 --trace-config all --trace-time http://127.0.0.1:45607/33 -Tlog/32/test33.txt -C 50 > log/32/stdout33 2> log/32/stderr33 === End of file commands.log === Start of file http_server.log 09:40:30.701855 Running HTTP IPv4 version on port 45607 09:40:30.704897 Wrote pid 73778 to log/32/server/http_server.pid 09:40:30.705409 Wrote port 45607 to log/32/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 33 === End of file server.cmd === Start of file test33.txt 012345678 012345678 012345678 012345678 012345678 012345678 012345678 012345678 012345678 012345678 === End of file test33.txt === Start of file valgrind33 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind33 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/41/server/http_server.pid" --logfile "log/41/http_server.log" --logdir "log/41" --portfile log/41/server/http_server.port --config log/41/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73770 port 35093 * pid http => 73770 73770 test 0024...[HTTP GET fail silently on HTTP error return] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind24 ../src/curl -q --output log/41/curl24.out --include --trace-ascii log/41/trace24 --trace-config all --trace-time http://127.0.0.1:35093/24 --fail --silent --show-error > log/41/stdout24 2> log/41/stderr24 24: protocol FAILED! There was no content at all in the file log/41/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/41/ dir after test 24 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind24 ../src/curl -q --output log/41/curl24.out --include --trace-ascii log/41/trace24 --trace-config all --trace-time http://127.0.0.1:35093/24 --fail --silent --show-error > log/41/stdout24 2> log/41/stderr24 === End of file commands.log === Start of file http_server.log 09:40:30.678261 Running HTTP IPv4 version on port 35093 09:40:30.679350 Wrote pid 73770 to log/41/server/http_server.pid 09:40:30.679839 Wrote port 35093 to log/41/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 24 === End of file server.cmd === Start of file valgrind24 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind49 ../src/curl -q --output log/16/curl49.out --include --trace-ascii log/16/trace49 --trace-config all --trace-time http://127.0.0.1:34829/we/are/all/twits/49 -L > log/16/stdout49 2> log/16/stderr49 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind50 ../src/curl -q --output log/15/curl50.out --include --trace-ascii log/15/trace50 --trace-config all --trace-time http://127.0.0.1:35435/we/are/all/twits/50 -L > log/15/stdout50 2> log/15/stderr50 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind31 ../src/curl -q --output log/34/curl31.out --include --trace-ascii log/34/trace31 --trace-config all --trace-time http://test31.curl:33117/we/want/31 -b none -c log/34/jar31.txt --resolve test31.curl:33117:127.0.0.1 > log/34/stdout31 2> log/34/stderr31 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind62 ../src/curl -q --output log/3/curl62.out --include --trace-ascii log/3/trace62 --trace-config all --trace-time http://127.0.0.1:42107/we/want/62 http://127.0.0.1:42107/we/want/62?hoge=fuga -b log/3/jar62.txt -H "Host: www.host.foo.com" > log/3/stdout62 2> log/3/stderr62 grind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind24 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/44/server/http_server.pid" --logfile "log/44/http_server.log" --logdir "log/44" --portfile log/44/server/http_server.port --config log/44/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73766 port 34655 * pid http => 73766 73766 test 0021...[use curl with multiple request methods] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind21 ../src/curl -q --output log/44/curl21.out --include --trace-ascii log/44/trace21 --trace-config all --trace-time -I -d FOOO -F moo=moo localhost > log/44/stdout21 2> log/44/stderr21 curl returned 1, when expecting 2 21: exit FAILED == Contents of files in the log/44/ dir after test 21 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind21 ../src/curl -q --output log/44/curl21.out --include --trace-ascii log/44/trace21 --trace-config all --trace-time -I -d FOOO -F moo=moo localhost > log/44/stdout21 2> log/44/stderr21 === End of file commands.log === Start of file http_server.log 09:40:30.822047 Running HTTP IPv4 version on port 34655 09:40:30.822942 Wrote pid 73766 to log/44/server/http_server.pid 09:40:30.823271 Wrote port 34655 to log/44/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 21 === End of file server.cmd === Start of file valgrind21 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind21 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/49/server/http_server.pid" --logfile "log/49/http_server.log" --logdir "log/49" --portfile log/49/server/http_server.port --config log/49/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73760 port 42667 * pid http => 73760 73760 test 0016...[HTTP with proxy authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind16 ../src/curl -q --output log/49/curl16.out --include --trace-ascii log/49/trace16 --trace-config all --trace-time -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:42667 http://we.want.that.site.com/16 > log/49/stdout16 2> log/49/stderr16 16: protocol FAILED! There was no content at all in the file log/49/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/49/ dir after test 16 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind16 ../src/curl -q --output log/49/curl16.out --include --trace-ascii log/49/trace16 --trace-config all --trace-time -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:42667 http://we.want.that.site.com/16 > log/49/stdout16 2> log/49/stderr16 === End of file commands.log === Start of file http_server.log 09:40:30.502639 Running HTTP IPv4 version on port 42667 09:40:30.503346 Wrote pid 73760 to log/49/server/http_server.pid 09:40:30.510873 Wrote port 42667 to log/49/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 16 === End of file server.cmd === Start of file valgrind16 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind16 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/56/server/http_server.pid" --logfile "log/56/http_server.log" --logdir "log/56" --portfile log/56/server/http_server.port --config log/56/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73754 port 43265 * pid http => 73754 73754 test 0009...[HTTP RFC1867-type formposting] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind9 ../src/curl -q --output log/56/curl9.out --include --trace-ascii log/56/trace9 --trace-config all --trace-time http://127.0.0.1:43265/we/want/9 -F name=daniel -F tool=curl -F file=@log/56/test9.txt > log/56/stdout9 2> log/56/stderr9 9: protocol FAILED! There was no content at all in the file log/56/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/56/ dir after test 9 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind9 ../src/curl -q --output log/56/curl9.out --include --trace-ascii log/56/trace9 --trace-config alCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind48 ../src/curl -q --output log/17/curl48.out --include --trace-ascii log/17/trace48 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:44383/48 -G -I http://127.0.0.1:44383/48 > log/17/stdout48 2> log/17/stderr48 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind34 ../src/curl -q --output log/31/curl34.out --include --trace-ascii log/31/trace34 --trace-config all --trace-time http://127.0.0.1:45557/34 > log/31/stdout34 2> log/31/stderr34 l --trace-time http://127.0.0.1:43265/we/want/9 -F name=daniel -F tool=curl -F file=@log/56/test9.txt > log/56/stdout9 2> log/56/stderr9 === End of file commands.log === Start of file http_server.log 09:40:30.618825 Running HTTP IPv4 version on port 43265 09:40:30.619691 Wrote pid 73754 to log/56/server/http_server.pid 09:40:30.620192 Wrote port 43265 to log/56/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 9 === End of file server.cmd === Start of file test9.txt foo- This is a moo- bar === End of file test9.txt === Start of file valgrind9 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind9 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/63/server/http_server.pid" --logfile "log/63/http_server.log" --logdir "log/63" --portfile log/63/server/http_server.port --config log/63/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73747 port 38797 * pid http => 73747 73747 test 0002...[HTTP GET with user and password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind2 ../src/curl -q --output log/63/curl2.out --include --trace-ascii log/63/trace2 --trace-config all --trace-time -u fake:user http://127.0.0.1:38797/2 > log/63/stdout2 2> log/63/stderr2 2: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 2 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind2 ../src/curl -q --output log/63/curl2.out --include --trace-ascii log/63/trace2 --trace-config all --trace-time -u fake:user http://127.0.0.1:38797/2 > log/63/stdout2 2> log/63/stderr2 === End of file commands.log === Start of file http_server.log 09:40:30.658989 Running HTTP IPv4 version on port 38797 09:40:30.659926 Wrote pid 73747 to log/63/server/http_server.pid 09:40:30.660295 Wrote port 38797 to log/63/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 2 === End of file server.cmd === Start of file valgrind2 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind2 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/64/server/http_server.pid" --logfile "log/64/http_server.log" --logdir "log/64" --portfile log/64/server/http_server.port --config log/64/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73748 port 33073 * pid http => 73748 73748 test 0001...[HTTP GET] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind1 ../src/curl -q --output log/64/curl1.out --include --trace-ascii log/64/trace1 --trace-config all --trace-time http://127.0.0.1:33073/1 > log/64/stdout1 2> log/64/stderr1 1: protocol FAILED! There was no content at all in the file log/64/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/64/ dir after test 1 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind1 ../src/curl -q --output log/64/curl1.out --include --trace-ascii log/64/trace1 --trace-config all --trace-time http://127.0.0.1:33073/1 > log/64/stdout1 2> log/64/stderr1 === End of file commands.log === Start of file http_server.log 09:40:30.435821 Running HTTP IPv4 version on port 33073 09:40:30.436672 Wrote pid 73748 to log/64/server/http_server.pid 09:40:30.437019 Wrote port 33073 to log/64/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 1 === End of file server.cmd === Start of file valgrind1 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will neeCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind52 ../src/curl -q --output log/13/curl52.out --include --trace-ascii log/13/trace52 --trace-config all --trace-time http://127.0.0.1:44087/we/are/all/twits/52 -L > log/13/stdout52 2> log/13/stderr52 d a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind1 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/1/server/http_server.pid" --logfile "log/1/http_server.log" --logdir "log/1" --portfile log/1/server/http_server.port --config log/1/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73806 port 40633 * pid http => 73806 73806 test 0064...[HTTP with Digest authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind64 ../src/curl -q --output log/1/curl64.out --include --trace-ascii log/1/trace64 --trace-config all --trace-time http://127.0.0.1:40633/64 -u testuser:testpass --digest > log/1/stdout64 2> log/1/stderr64 64: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 64 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind64 ../src/curl -q --output log/1/curl64.out --include --trace-ascii log/1/trace64 --trace-config all --trace-time http://127.0.0.1:40633/64 -u testuser:testpass --digest > log/1/stdout64 2> log/1/stderr64 === End of file commands.log === Start of file http_server.log 09:40:30.796022 Running HTTP IPv4 version on port 40633 09:40:30.796809 Wrote pid 73806 to log/1/server/http_server.pid 09:40:30.797119 Wrote port 40633 to log/1/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 64 === End of file server.cmd === Start of file valgrind64 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind64 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/2/server/http_server.pid" --logfile "log/2/http_server.log" --logdir "log/2" --portfile log/2/server/http_server.port --config log/2/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73807 port 39659 * pid http => 73807 73807 setenv http_proxy = http://fake:user@127.0.0.1:39659/ test 0063...[HTTP with proxy authorization set in environment] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind63 ../src/curl -q --output log/2/curl63.out --include --trace-ascii log/2/trace63 --trace-config all --trace-time http://we.want.that.site.com/63 > log/2/stdout63 2> log/2/stderr63 63: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 63 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind63 ../src/curl -q --output log/2/curl63.out --include --trace-ascii log/2/trace63 --trace-config all --trace-time http://we.want.that.site.com/63 > log/2/stdout63 2> log/2/stderr63 === End of file commands.log === Start of file http_server.log 09:40:30.763925 Running HTTP IPv4 version on port 39659 09:40:30.764722 Wrote pid 73807 to log/2/server/http_server.pid 09:40:30.765054 Wrote port 39659 to log/2/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 63 === End of file server.cmd === Start of file valgrind63 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind63 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/3/server/http_server.pid" --logfile "log/3/http_server.log" --logdir "log/3" --portfile log/3/server/http_server.port --config log/3/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73802 port 42107 * pid http => 73802 73802 test 0062...[HTTP, send cookies when using custom Host:] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind62 ../src/curl -q --output log/3/curl62.out --include --trace-ascii log/3/trace62 --trace-config all --trace-time http://127.0.0.1:42107/we/want/62 http://127.0.0.1:42107/we/want/62?hoge=fuga -b log/3/jar62.txt -H "Host: www.host.foo.com" > log/3/stdout62 2> log/3/stderr62 62: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 62 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind62 ../src/curl -q --output log/3/curl62.out --include --trace-ascii log/3/trace62 --trace-config all --trace-time http://127.0.0.1:42107/we/want/62 http://127.0.0.1:42107/we/want/62?hoge=fuga -b log/3/jar62.txt -H "Host: www.hCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind46 ../src/curl -q --output log/19/curl46.out --include --trace-ascii log/19/trace46 --trace-config all --trace-time domain..tld:35697/want/46 --resolve domain..tld:35697:127.0.0.1 -c log/19/jar46 -b log/19/injar46 > log/19/stdout46 2> log/19/stderr46 ost.foo.com" > log/3/stdout62 2> log/3/stderr62 === End of file commands.log === Start of file http_server.log 09:40:30.836688 Running HTTP IPv4 version on port 42107 09:40:30.837633 Wrote pid 73802 to log/3/server/http_server.pid 09:40:30.837976 Wrote port 42107 to log/3/server/http_server.port === End of file http_server.log === Start of file jar62.txt # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. #HttpOnly_.foo.com TRUE /we/want/ FALSE 22147483647 test yes .host.foo.com TRUE /we/want/ FALSE 22147483647 test2 yes .fake.host.foo.com TRUE /we/want/ FALSE 22147483647 test4 yes .foo.com TRUE /moo TRUE 0 test3 maybe === End of file jar62.txt === Start of file server.cmd Testnum 62 === End of file server.cmd === Start of file valgrind62 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind62 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/4/server/http_server.pid" --logfile "log/4/http_server.log" --logdir "log/4" --portfile log/4/server/http_server.port --config log/4/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73808 port 43013 * pid http => 73808 73808 setenv TZ = GMT test 0061...[HTTP with various cookies and custom Host:] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind61 ../src/curl -q --output log/4/curl61.out --include --trace-ascii log/4/trace61 --trace-config all --trace-time http://127.0.0.1:43013/we/want/61 -c log/4/jar61.txt -H "Host: www.host.foo.com" > log/4/stdout61 2> log/4/stderr61 61: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 61 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind61 ../src/curl -q --output log/4/curl61.out --include --trace-ascii log/4/trace61 --trace-config all --trace-time http://127.0.0.1:43013/we/want/61 -c log/4/jar61.txt -H "Host: www.host.foo.com" > log/4/stdout61 2> log/4/stderr61 === End of file commands.log === Start of file http_server.log 09:40:30.772908 Running HTTP IPv4 version on port 43013 09:40:30.773859 Wrote pid 73808 to log/4/server/http_server.pid 09:40:30.774242 Wrote port 43013 to log/4/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 61 === End of file server.cmd === Start of file valgrind61 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind61 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/5/server/http_server.pid" --logfile "log/5/http_server.log" --logdir "log/5" --portfile log/5/server/http_server.port --config log/5/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73798 port 33413 * pid http => 73798 73798 test 0060...[HTTP PUT from stdin with wrong content-length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind60 ../src/curl -q --output log/5/curl60.out --include --trace-ascii log/5/trace60 --trace-config all --trace-time http://127.0.0.1:33413/bzz/60 -T - -H "Content-Length: 1" log/5/stdout60 2> log/5/stderr60 60: protocol FAILED! There was no content at all in the file log/5/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/5/ dir after test 60 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind60 ../src/curl -q --output log/5/curl60.out --include --trace-ascii log/5/trace60 --trace-config all --trace-time http://127.0.0.1:33413/bzz/60 -T - -H "Content-Length: 1" log/5/stdout60 2> log/5/stderr60 === End of file commands.log === Start of file http_server.log 09:40:30.854180 Running HTTP IPv4 version on port 33413 09:40:30.855024 Wrote pid 73798 to log/5/server/http_server.pid 09:40:30.855345 Wrote port 33413 to log/5/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 60 === End of file server.cmd === Start of file stdin-for-60 more than one byte === End of file stdin-for-60 === Start of file valgrind60 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your LCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind39 ../src/curl -q --output log/26/curl39.out --include --trace-ascii log/26/trace39 --trace-config all --trace-time http://127.0.0.1:46481/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2= log/26/stdout39 2> log/26/stderr39 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind44 ../src/curl -q --output log/21/curl44.out --include --trace-ascii log/21/trace44 --trace-config all --trace-time http://127.0.0.1:34827/we/want/44 -F name=daniel -F tool=curl -F file=@log/21/test44.txt -H "Expect:" > log/21/stdout44 2> log/21/stderr44 inux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind60 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/9/server/http_server.pid" --logfile "log/9/http_server.log" --logdir "log/9" --portfile log/9/server/http_server.port --config log/9/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73797 port 46607 * pid http => 73797 73797 test 0056...[HTTP POST with *HUGE* request and chunked transfer-encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind56 ../src/curl -q --output log/9/curl56.out --include --trace-ascii log/9/trace56 --trace-config all --trace-time -K - 127.0.0.1:46607/that.site.com/56 log/9/stdout56 2> log/9/stderr56 56: protocol FAILED! There was no content at all in the file log/9/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/9/ dir after test 56 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind56 ../src/curl -q --output log/9/curl56.out --include --trace-ascii log/9/trace56 --trace-config all --trace-time -K - 127.0.0.1:46607/that.site.com/56 log/9/stdout56 2> log/9/stderr56 === End of file commands.log === Start of file http_server.log 09:40:30.804109 Running HTTP IPv4 version on port 46607 09:40:30.804978 Wrote pid 73797 to log/9/server/http_server.pid 09:40:30.805575 Wrote port 46607 to log/9/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 56 === End of file server.cmd === Start of file stdin-for-56 # data "we post this" # # enforce chunky post header "Transfer-Encoding: chunked" # # Set the user-agent using a short-option: -A "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # === End of file stdin-for-56 === Start of file valgrind56 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind56 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/10/server/http_server.pid" --logfile "log/10/http_server.log" --logdir "log/10" --portfile log/10/server/http_server.port --config log/10/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73804 port 36913 * pid http => 73804 73804 test 0055...[HTTP follow redirect with single slash in path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind55 ../src/curl -q --output log/10/curl55.out --include --trace-ascii log/10/trace55 --trace-config all --trace-time http://127.0.0.1:36913/55 -L > log/10/stdout55 2> log/10/stderr55 55: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 55 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind55 ../src/curl -q --output log/10/curl55.out --include --trace-ascii log/10/trace55 --trace-config all --trace-time http://127.0.0.1:36913/55 -L > log/10/stdout55 2> log/10/stderr55 === End of file commands.log === Start of file http_server.log 09:40:30.711030 Running HTTP IPv4 version on port 36913 09:40:30.715942 Wrote pid 73804 to log/10/server/http_server.pid 09:40:30.716318 Wrote port 36913 to log/10/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 55 === End of file server.cmd === Start of file valgrind55 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind55 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/14/server/http_server.pid" --logfile "log/14/http_server.log" --logdir "log/14" --portfile log/14/server/http_server.port --config log/14/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73795 port 43309 * pid http => 73795 73795 test 0051...[HTTP follow redirect with excessive ../] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind51 ../src/curl -q --output log/14/curl51.out --include --trace-ascii log/14/trace51 --trace-config all --trace-time http://127.0.0.1:43309/we/are/all/twits/51 -L > log/14/stdout51 2> log/14/stderr51 51: protocol FAILED! There was no content at all in the file log/14/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/14/ dir after test 51 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind51 ../src/curl -q --output log/14/curl51.out --include --trace-ascii log/14/trace51 --trace-config all --trace-time http://127.0.0.1:43309/we/are/all/twits/51 -L > log/14/stdout51 2> log/14/stderr51 === End of file commands.log === Start of file http_server.log 09:40:30.799102 Running HTTP IPv4 version on port 43309 09:40:30.799991 Wrote pid 73795 to log/14/server/http_server.pid 09:40:30.800341 Wrote port 43309 to log/14/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 51 === End of file server.cmd === Start of file valgrind51 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind51 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/15/server/http_server.pid" --logfile "log/15/http_server.log" --logdir "log/15" --portfile log/15/server/http_server.port --config log/15/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73793 port 35435 * pid http => 73793 73793 test 0050...[HTTP follow redirect with ../../] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind50 ../src/curl -q --output log/15/curl50.out --include --trace-ascii log/15/trace50 --trace-config all --trace-time http://127.0.0.1:35435/we/are/all/twits/50 -L > log/15/stdout50 2> log/15/stderr50 50: protocol FAILED! There was no content at all in the file log/15/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/15/ dir after test 50 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind50 ../src/curl -q --output log/15/curl50.out --include --trace-ascii log/15/trace50 --trace-config all --trace-time http://127.0.0.1:35435/we/are/all/twits/50 -L > log/15/stdout50 2> log/15/stderr50 === End of file commands.log === Start of file http_server.log 09:40:30.735955 Running HTTP IPv4 version on port 35435 09:40:30.736738 Wrote pid 73793 to log/15/server/http_server.pid 09:40:30.737046 Wrote port 35435 to log/15/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 50 === End of file server.cmd === Start of file valgrind50 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind50 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/16/server/http_server.pid" --logfile "log/16/http_server.log" --logdir "log/16" --portfile log/16/server/http_server.port --config log/16/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73794 port 34829 * pid http => 73794 73794 test 0049...[HTTP follow redirect with ../] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind49 ../src/curl -q --output log/16/curl49.out --include --trace-ascii log/16/trace49 --trace-config all --trace-time http://127.0.0.1:34829/we/are/all/twits/49 -L > log/16/stdout49 2> log/16/stderr49 49: protocol FAILED! There was no content at all in the file log/16/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/16/ dir after test 49 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind49 ../src/curl -q --output log/16/curl49.out --include --trace-ascii log/16/trace49 --trace-config all --trace-time http://127.0.0.1:34829/we/are/all/twits/49 -L > log/16/stdout49 2> log/16/stderr49 === End of file commands.log === Start of file http_server.log 09:40:30.779520 Running HTTP IPv4 version on port 34829 09:40:30.780289 Wrote pid 73794 to log/16/server/http_server.pid 09:40:30.780706 Wrote port 34829 to log/16/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 49 === End of file server.cmd === Start of file valgrind49 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind49 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/17/server/http_server.pid" --logfile "log/17/http_server.log" --logdir "log/17" --portfile log/17/server/http_server.port --config log/17/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73792 port 44383 * pid http => 73792 73792 test 0048...[HTTP with -d and -G and -I] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind48 ../src/curl -q --output log/17/curl48.out --include --trace-ascii log/17/trace48 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:44383/48 -G -I http://127.0.0.1:44383/48 > log/17/stdout48 2> log/17/stderr48 48: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 48 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind48 ../src/curl -q --output log/17/curl48.out --include --trace-ascii log/17/trace48 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:44383/48 -G -I http://127.0.0.1:44383/48 > log/17/stdout48 2> log/17/stderr48 === End of file commands.log === Start of file http_server.log 09:40:30.780599 Running HTTP IPv4 version on port 44383 09:40:30.781241 Wrote pid 73792 to log/17/server/http_server.pid 09:40:30.781627 Wrote port 44383 to log/17/server/http_server.port === End of file http_server.log === Start of file server.cmd connection-monitor Testnum 48 === End of file server.cmd === Start of file valgrind48 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind48 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/18/server/http_server.pid" --logfile "log/18/http_server.log" --logdir "log/18" --portfile log/18/server/http_server.port --config log/18/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73790 port 41285 * pid http => 73790 73790 test 0047...[simple HTTP 1.0 GET] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind47 ../src/curl -q --output log/18/curl47.out --include --trace-ascii log/18/trace47 --trace-config all --trace-time http://127.0.0.1:41285/47 -0 > log/18/stdout47 2> log/18/stderr47 47: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 47 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind47 ../src/curl -q --output log/18/curl47.out --include --trace-ascii log/18/trace47 --trace-config all --trace-time http://127.0.0.1:41285/47 -0 > log/18/stdout47 2> log/18/stderr47 === End of file commands.log === Start of file http_server.log 09:40:30.843893 Running HTTP IPv4 version on port 41285 09:40:30.844850 Wrote pid 73790 to log/18/server/http_server.pid 09:40:30.845170 Wrote port 41285 to log/18/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 47 === End of file server.cmd === Start of file valgrind47 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind47 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/20/server/http_server.pid" --logfile "log/20/http_server.log" --logdir "log/20" --portfile log/20/server/http_server.port --config log/20/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73786 port 45475 * pid http => 73786 73786 test 0045...[simple HTTP Location: without protocol in initial URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind45 ../src/curl -q --output log/20/curl45.out --include --trace-ascii log/20/trace45 --trace-config all --trace-time 127.0.0.1:45475/want/45 -L > log/20/stdout45 2> log/20/stderr45 45: protocol FAILED! There was no content at all in the file log/20/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/20/ dir after test 45 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind45 ../src/curl -q --output log/20/curl45.out --include --trace-ascii log/20/trace45 --trace-config all --trace-time 127.0.0.1:45475/want/45 -L > log/20/stdout45 2> log/20/stderr45 === End of file commands.log === Start of file http_server.log 09:40:30.684722 Running HTTP IPv4 version on port 45475 09:40:30.685657 Wrote pid 73786 to log/20/server/http_server.pid 09:40:30.686027 Wrote port 45475 to log/20/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 45 === End of file server.cmd === Start of file valgrind45 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind45 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/25/server/http_server.pid" --logfile "log/25/http_server.log" --logdir "log/25" --portfile log/25/server/http_server.port --config log/25/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73784 port 41727 * pid http => 73784 73784 test 0040...[HTTP redirect with whitespace after ? (and conversion)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind40 ../src/curl -q --output log/25/curl40.out --include --trace-ascii log/25/trace40 --trace-config all --trace-time http://127.0.0.1:41727/we/are/all/twits/40 -L > log/25/stdout40 2> log/25/stderr40 40: protocol FAILED! There was no content at all in the file log/25/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/25/ dir after test 40 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind40 ../src/curl -q --output log/25/curl40.out --include --trace-ascii log/25/trace40 --trace-config all --trace-time http://127.0.0.1:41727/we/are/all/twits/40 -L > log/25/stdout40 2> log/25/stderr40 === End of file commands.log === Start of file http_server.log 09:40:30.746987 Running HTTP IPv4 version on port 41727 09:40:30.747830 Wrote pid 73784 to log/25/server/http_server.pid 09:40:30.748179 Wrote port 41727 to log/25/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 40 === End of file server.cmd === Start of file valgrind40 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind40 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/27/server/http_server.pid" --logfile "log/27/http_server.log" --logdir "log/27" --portfile log/27/server/http_server.port --config log/27/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73783 port 42323 * pid http => 73783 73783 test 0038...[HTTP resume request without server supporting it] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind38 ../src/curl -q --include --trace-ascii log/27/trace38 --trace-config all --trace-time http://127.0.0.1:42323/want/38 -C - --no-include -o log/27/fewl38.txt > log/27/stdout38 2> log/27/stderr38 38: protocol FAILED! There was no content at all in the file log/27/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/27/ dir after test 38 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind38 ../src/curl -q --include --trace-ascii log/27/trace38 --trace-config all --trace-time http://127.0.0.1:42323/want/38 -C - --no-include -o log/27/fewl38.txt > log/27/stdout38 2> log/27/stderr38 === End of file commands.log === Start of file fewl38.txt This text is here to simulate a partly downloaded file to resume download on. === End of file fewl38.txt === Start of file http_server.log 09:40:30.730046 Running HTTP IPv4 version on port 42323 09:40:30.732033 Wrote pid 73783 to log/27/server/http_server.pid 09:40:30.732393 Wrote port 42323 to log/27/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 38 === End of file server.cmd === Start of file valgrind38 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind38 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/29/server/http_server.pid" --logfile "log/29/http_server.log" --logdir "log/29" --portfile log/29/server/http_server.port --config log/29/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73782 port 36877 * pid http => 73782 73782 test 0036...[HTTP GET with bad chunked Transfer-Encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind36 ../src/curl -q --output log/29/curl36.out --include --trace-ascii log/29/trace36 --trace-config all --trace-time http://127.0.0.1:36877/36 > log/29/stdout36 2> log/29/stderr36 36: protocol FAILED! There was no content at all in the file log/29/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/29/ dir after test 36 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind36 ../src/curl -q --output log/29/curl36.out --include --trace-ascii log/29/trace36 --trace-config all --trace-time http://127.0.0.1:36877/36 > log/29/stdout36 2> log/29/stderr36 === End of file commands.log === Start of file http_server.log 09:40:30.726826 Running HTTP IPv4 version on port 36877 09:40:30.727633 Wrote pid 73782 to log/29/server/http_server.pid 09:40:30.727967 Wrote port 36877 to log/29/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 36 === End of file server.cmd === Start of file valgrind36 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind36 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/31/server/http_server.pid" --logfile "log/31/http_server.log" --logdir "log/31" --portfile log/31/server/http_server.port --config log/31/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73776 port 45557 * pid http => 73776 73776 test 0034...[HTTP GET with chunked Transfer-Encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind34 ../src/curl -q --output log/31/curl34.out --include --trace-ascii log/31/trace34 --trace-config all --trace-time http://127.0.0.1:45557/34 > log/31/stdout34 2> log/31/stderr34 34: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 34 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind34 ../src/curl -q --output log/31/curl34.out --include --trace-ascii log/31/trace34 --trace-config all --trace-time http://127.0.0.1:45557/34 > log/31/stdout34 2> log/31/stderr34 === End of file commands.log === Start of file http_server.log 09:40:30.863358 Running HTTP IPv4 version on port 45557 09:40:30.864176 Wrote pid 73776 to log/31/server/http_server.pid 09:40:30.864631 Wrote port 45557 to log/31/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 34 === End of file server.cmd === Start of file valgrind34 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind34 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/33/server/http_server.pid" --logfile "log/33/http_server.log" --logdir "log/33" --portfile log/33/server/http_server.port --config log/33/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73773 port 36559 * pid http => 73773 73773 test 0032...[HTTP with -d and -G] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind32 ../src/curl -q --output log/33/curl32.out --include --trace-ascii log/33/trace32 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:36559/32 -G > log/33/stdout32 2> log/33/stderr32 32: protocol FAILED! There was no content at all in the file log/33/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/33/ dir after test 32 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind32 ../src/curl -q --output log/33/curl32.out --include --trace-ascii log/33/trace32 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:36559/32 -G > log/33/stdout32 2> log/33/stderr32 === End of file commands.log === Start of file http_server.log 09:40:30.595038 Running HTTP IPv4 version on port 36559 09:40:30.595945 Wrote pid 73773 to log/33/server/http_server.pid 09:40:30.596316 Wrote port 36559 to log/33/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 32 === End of file server.cmd === Start of file valgrind32 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind32 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/34/server/http_server.pid" --logfile "log/34/http_server.log" --logdir "log/34" --portfile log/34/server/http_server.port --config log/34/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73777 port 33117 * pid http => 73777 73777 setenv TZ = GMT test 0031...[HTTP with weirdly formatted cookies and cookiejar storage] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind31 ../src/curl -q --output log/34/curl31.out --include --trace-ascii log/34/trace31 --trace-config all --trace-time http://test31.curl:33117/we/want/31 -b none -c log/34/jar31.txt --resolve test31.curl:33117:127.0.0.1 > log/34/stdout31 2> log/34/stderr31 31: protocol FAILED! There was no content at all in the file log/34/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/34/ dir after test 31 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind31 ../src/curl -q --output log/34/curl31.out --include --trace-ascii log/34/trace31 --trace-config all --trace-time http://test31.curl:33117/we/want/31 -b none -c log/34/jar31.txt --resolve test31.curl:33117:127.0.0.1 > log/34/stdout31 2> log/34/stderr31 === End of file commands.log === Start of file http_server.log 09:40:30.631030 Running HTTP IPv4 version on port 33117 09:40:30.634009 Wrote pid 73777 to log/34/server/http_server.pid 09:40:30.634371 Wrote port 33117 to log/34/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 31 === End of file server.cmd === Start of file valgrind31 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind31 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/35/server/http_server.pid" --logfile "log/35/http_server.log" --logdir "log/35" --portfile log/35/server/http_server.port --config log/35/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73771 port 43179 * pid http => 73771 73771 test 0030...[HTTP with no data in server reply] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind30 ../src/curl -q --output log/35/curl30.out --include --trace-ascii log/35/trace30 --trace-config all --trace-time http://127.0.0.1:43179/want/30 > log/35/stdout30 2> log/35/stderr30 30: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 30 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind30 ../src/curl -q --output log/35/curl30.out --include --trace-ascii log/35/trace30 --trace-config all --trace-time http://127.0.0.1:43179/want/30 > log/35/stdout30 2> log/35/stderr30 === End of file commands.log === Start of file http_server.log 09:40:30.742286 Running HTTP IPv4 version on port 43179 09:40:30.743206 Wrote pid 73771 to log/35/server/http_server.pid 09:40:30.743670 Wrote port 43179 to log/35/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 30 === End of file server.cmd === Start of file valgrind30 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind30 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/36/server/http_server.pid" --logfile "log/36/http_server.log" --logdir "log/36" --portfile log/36/server/http_server.port --config log/36/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73774 port 46395 * pid http => 73774 73774 test 0029...[HTTP with 2 secs timeout] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind29 ../src/curl -q --output log/36/curl29.out --include --trace-ascii log/36/trace29 --trace-config all --trace-time http://127.0.0.1:46395/want/29 -m 2 > log/36/stdout29 2> log/36/stderr29 29: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 29 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind29 ../src/curl -q --output log/36/curl29.out --include --trace-ascii log/36/trace29 --trace-config all --trace-time http://127.0.0.1:46395/want/29 -m 2 > log/36/stdout29 2> log/36/stderr29 === End of file commands.log === Start of file http_server.log 09:40:30.661054 Running HTTP IPv4 version on port 46395 09:40:30.661896 Wrote pid 73774 to log/36/server/http_server.pid 09:40:30.662236 Wrote port 46395 to log/36/server/http_server.port exit_signal_handler: called 09:40:32.904698 signalled to die 09:40:32.905962 ========> IPv4 sws (port 46395 pid: 73774) exits with signal (15) 09:40:32.906129 ========> sws quits === End of file http_server.log === Start of file server.cmd Testnum 29 === End of file server.cmd === Start of file valgrind29 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind29 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/37/server/http_server.pid" --logfile "log/37/http_server.log" --logdir "log/37" --portfile log/37/server/http_server.port --config log/37/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73772 port 37551 * pid http => 73772 73772 test 0028...[HTTP Location: following with extra spaces in header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind28 ../src/curl -q --output log/37/curl28.out --include --trace-ascii log/37/trace28 --trace-config all --trace-time http://127.0.0.1:37551/want/28 -L > log/37/stdout28 2> log/37/stderr28 28: protocol FAILED! There was no content at all in the file log/37/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/37/ dir after test 28 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind28 ../src/curl -q --output log/37/curl28.out --include --trace-ascii log/37/trace28 --trace-config all --trace-time http://127.0.0.1:37551/want/28 -L > log/37/stdout28 2> log/37/stderr28 === End of file commands.log === Start of file http_server.log 09:40:30.584151 Running HTTP IPv4 version on port 37551 09:40:30.585065 Wrote pid 73772 to log/37/server/http_server.pid 09:40:30.585375 Wrote port 37551 to log/37/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 28 === End of file server.cmd === Start of file valgrind28 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind28 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/38/server/http_server.pid" --logfile "log/38/http_server.log" --logdir "log/38" --portfile log/38/server/http_server.port --config log/38/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73775 port 33511 * pid http => 73775 73775 test 0027...[Get same cookie page several times] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind27 ../src/curl -q --output log/38/curl27.out --include --trace-ascii log/38/trace27 --trace-config all --trace-time "http://127.0.0.1:33511/want/{27,27,27}" -b none > log/38/stdout27 2> log/38/stderr27 27: protocol FAILED! There was no content at all in the file log/38/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/38/ dir after test 27 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind27 ../src/curl -q --output log/38/curl27.out --include --trace-ascii log/38/trace27 --trace-config all --trace-time "http://127.0.0.1:33511/want/{27,27,27}" -b none > log/38/stdout27 2> log/38/stderr27 === End of file commands.log === Start of file http_server.log 09:40:30.589661 Running HTTP IPv4 version on port 33511 09:40:30.590343 Wrote pid 73775 to log/38/server/http_server.pid 09:40:30.590796 Wrote port 33511 to log/38/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 27 === End of file server.cmd === Start of file valgrind27 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind27 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/40/server/http_server.pid" --logfile "log/40/http_server.log" --logdir "log/40" --portfile log/40/server/http_server.port --config log/40/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73767 port 42139 * pid http => 73767 73767 test 0025...[looping HTTP Location: following with --max-redirs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind25 ../src/curl -q --output log/40/curl25.out --include --trace-ascii log/40/trace25 --trace-config all --trace-time http://127.0.0.1:42139/want/25 -L --max-redirs 5 > log/40/stdout25 2> log/40/stderr25 25: protocol FAILED! There was no content at all in the file log/40/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/40/ dir after test 25 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind25 ../src/curl -q --output log/40/curl25.out --include --trace-ascii log/40/trace25 --trace-config all --trace-time http://127.0.0.1:42139/want/25 -L --max-redirs 5 > log/40/stdout25 2> log/40/stderr25 === End of file commands.log === Start of file http_server.log 09:40:30.465136 Running HTTP IPv4 version on port 42139 09:40:30.468962 Wrote pid 73767 to log/40/server/http_server.pid 09:40:30.469296 Wrote port 42139 to log/40/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 25 === End of file server.cmd === Start of file valgrind25 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind25 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/42/server/http_server.pid" --logfile "log/42/http_server.log" --logdir "log/42" --portfile log/42/server/http_server.port --config log/42/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73768 port 42819 * pid http => 73768 73768 test 0023...[unsupported protocol:// URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind23 ../src/curl -q --output log/42/curl23.out --include --trace-ascii log/42/trace23 --trace-config all --trace-time htfp://127.0.0.1:42819/none.htfml > log/42/stdout23 2> log/42/stderr23 valgrind ERROR valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. == Contents of files in the log/42/ dir after test 23 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind23 ../src/curl -q --output log/42/curl23.out --include --trace-ascii log/42/trace23 --trace-config all --trace-time htfp://127.0.0.1:42819/none.htfml > log/42/stdout23 2> log/42/stderr23 === End of file commands.log === Start of file http_server.log 09:40:30.691069 Running HTTP IPv4 version on port 42819 09:40:30.691929 Wrote pid 73768 to log/42/server/http_server.pid 09:40:30.692421 Wrote port 42819 to log/42/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 23 === End of file server.cmd === Start of file valgrind23 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind23 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/43/server/http_server.pid" --logfile "log/43/http_server.log" --logdir "log/43" --portfile log/43/server/http_server.port --config log/43/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73765 port 41267 * pid http => 73765 73765 test 0022...[get HTTP with URL > 10000 bytes] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind22 ../src/curl -q --output log/43/curl22.out --include --trace-ascii log/43/trace22 --trace-config all --trace-time 127.0.0.1:41267/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/43/stdout22 2> log/43/stderr22 22: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 22 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind22 ../src/curl -q --output log/43/curl22.out --include --trace-ascii log/43/trace22 --trace-config all --trace-time 127.0.0.1:41267/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/43/stdout22 2> log/43/stderr22 === End of file commands.log === Start of file http_server.log 09:40:30.413418 Running HTTP IPv4 version on port 41267 09:40:30.414287 Wrote pid 73765 to log/43/server/http_server.pid 09:40:30.427861 Wrote port 41267 to log/43/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 22 === End of file server.cmd === Start of file valgrind22 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind22 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/57/server/http_server.pid" --logfile "log/57/http_server.log" --logdir "log/57" --portfile log/57/server/http_server.port --config log/57/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73753 port 35945 * pid http => 73753 73753 prechecked /usr/bin/perl -e 'if("127.0.0.1" !~ /\.0\.0\.1$/) {print "Test only works for HOSTIPs ending with .0.0.1"; exit(1)}' test 0008...[HTTP with cookie parsing from header file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind8 ../src/curl -q --output log/57/curl8.out --include --trace-ascii log/57/trace8 --trace-config all --trace-time http://127.0.0.1:35945/we/want/8 -b log/57/heads8.txt > log/57/stdout8 2> log/57/stderr8 8: protocol FAILED! There was no content at all in the file log/57/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/57/ dir after test 8 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind8 ../src/curl -q --output log/57/curl8.out --include --trace-ascii log/57/trace8 --trace-config all --trace-time http://127.0.0.1:35945/we/want/8 -b log/57/heads8.txt > log/57/stdout8 2> log/57/stderr8 === End of file commands.log === Start of file heads8.txt HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake Content-Type: text/html Funny-head: yesyes Set-Cookie: foobar=name; domain=127.0.0.1; path=/; Set-Cookie: mismatch=this; domain=127.0.0.1; path="/silly/"; Set-Cookie: partmatch=present; domain=.0.0.1; path=/w; Set-Cookie: duplicate=test; domain=.0.0.1; domain=.0.0.1; path=/donkey; Set-Cookie: cookie=yes; path=/we; Set-Cookie: cookie=perhaps; path=/we/want; Set-Cookie: name with space=is weird but; path=/we/want; Set-Cookie: trailingspace = removed; path=/we/want; Set-Cookie: nocookie=yes; path=/WE; Set-Cookie: blexp=yesyes; domain=127.0.0.1; domain=127.0.0.1; expiry=totally bad; Set-Cookie: partialip=nono; domain=.0.0.1; Set-Cookie: cookie1=-junk Set-Cookie: cookie2=-junk Set-Cookie: cookie3=-junk Set-Cookie: cookie4=-junk Set-Cookie: cookie5=-junk Set-Cookie: cookie6=-junk Set-Cookie: cookie7=-junk Set-Cookie: cookie8=-junk Set-Cookie: cookie9=junk-- Set-Cookie: cookie11= -junk Set-Cookie: cookie12= -junk Set-Cookie: cookie14=-junk Set-Cookie: cookie15=-junk Set-Cookie: cookie16=-junk Set-Cookie: cookie17=-junk Set-Cookie: cookie18=-junk Set-Cookie: cookie19=-junk Set-Cookie: cookie20=-junk Set-Cookie: cookie21=-junk Set-Cookie: cookie22=-junk Set-Cookie: cookie23=-junk Set-Cookie: cookie24=-junk Set-Cookie: cookie25=-junk Set-Cookie: cookie26= -junk Set-Cookie: cookie27=-junk Set-Cookie: cookie28=-junk Set-Cookie: cookie29=-junk Set-Cookie: cookie30=-junk Set-Cookie: cookie31=-junk Set-Cookie: cookie31=-junk === End of file heads8.txt === Start of file http_server.log 09:40:30.654911 Running HTTP IPv4 version on port 35945 09:40:30.655932 Wrote pid 73753 to log/57/server/http_server.pid 09:40:30.656269 Wrote port 35945 to log/57/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 8 === End of file server.cmd === Start of file valgrind8 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind8 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/61/server/http_server.pid" --logfile "log/61/http_server.log" --logdir "log/61" --portfile log/61/server/http_server.port --config log/61/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73751 port 44381 * pid http => 73751 73751 test 0004...[Replaced internal and added custom HTTP headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind4 ../src/curl -q --output log/61/curl4.out --include --trace-ascii log/61/trace4 --trace-config all --trace-time -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3: " -H "X-Test4; " -H "X-Test5;ignored" http://127.0.0.1:44381/4 http://127.0.0.1:44381/4 > log/61/stdout4 2> log/61/stderr4 4: protocol FAILED! There was no content at all in the file log/61/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/61/ dir after test 4 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind4 ../src/curl -q --output log/61/curl4.out --include --trace-ascii log/61/trace4 --trace-config all --trace-time -H "extra-header: here" -H "Accept: replaced" -H "X-Custom-Header;" -H "X-Test: foo; " -H "X-Test:" -H "X-Test2: foo;" -H "X-Test3: " -H "X-Test4; " -H "X-Test5;ignored" http://127.0.0.1:44381/4 http://127.0.0.1:44381/4 > log/61/stdout4 2> log/61/stderr4 === End of file commands.log === Start of file http_server.log 09:40:30.466591 Running HTTP IPv4 version on port 44381 09:40:30.467362 Wrote pid 73751 to log/61/server/http_server.pid 09:40:30.471171 Wrote port 44381 to log/61/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 4 === End of file server.cmd === Start of file valgrind4 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind4 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/13/server/http_server.pid" --logfile "log/13/http_server.log" --logdir "log/13" --portfile log/13/server/http_server.port --config log/13/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73796 port 44087 * pid http => 73796 73796 test 0052...[HTTP follow redirect with ./-prefix] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind52 ../src/curl -q --output log/13/curl52.out --include --trace-ascii log/13/trace52 --trace-config all --trace-time http://127.0.0.1:44087/we/are/all/twits/52 -L > log/13/stdout52 2> log/13/stderr52 52: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 52 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind52 ../src/curl -q --output log/13/curl52.out --include --trace-ascii log/13/trace52 --trace-config all --trace-time http://127.0.0.1:44087/we/are/all/twits/52 -L > log/13/stdout52 2> log/13/stderr52 === End of file commands.log === Start of file http_server.log 09:40:30.784014 Running HTTP IPv4 version on port 44087 09:40:30.784918 Wrote pid 73796 to log/13/server/http_server.pid 09:40:30.785320 Wrote port 44087 to log/13/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 52 === End of file server.cmd === Start of file valgrind52 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind52 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/19/server/http_server.pid" --logfile "log/19/http_server.log" --logdir "log/19" --portfile log/19/server/http_server.port --config log/19/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73791 port 35697 * pid http => 73791 73791 setenv TZ = GMT test 0046...[HTTP with bad domain name, get cookies and store in cookie jar] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind46 ../src/curl -q --output log/19/curl46.out --include --trace-ascii log/19/trace46 --trace-config all --trace-time domain..tld:35697/want/46 --resolve domain..tld:35697:127.0.0.1 -c log/19/jar46 -b log/19/injar46 > log/19/stdout46 2> log/19/stderr46 46: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 46 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind46 ../src/curl -q --output log/19/curl46.out --include --trace-ascii log/19/trace46 --trace-config all --trace-time domain..tld:35697/want/46 --resolve domain..tld:35697:127.0.0.1 -c log/19/jar46 -b log/19/injar46 > log/19/stdout46 2> log/19/stderr46 === End of file commands.log === Start of file http_server.log 09:40:30.640649 Running HTTP IPv4 version on port 35697 09:40:30.653544 Wrote pid 73791 to log/19/server/http_server.pid 09:40:30.653958 Wrote port 35697 to log/19/server/http_server.port === End of file http_server.log === Start of file injar46 # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This is generated by libcurl! Do not edit. www.fake.come FALSE / FALSE 22147483647 cookiecliente si www.loser.com FALSE / FALSE 22139150993 UID 99 domain..tld FALSE / FALSE 22139150993 mooo indeed #HttpOnly_domain..tld FALSE /want FALSE 22139150993 mooo2 indeed2 domain..tld FALSE /want FALSE 0 empty === End of file injar46 === Start of file server.cmd Testnum 46 === End of file server.cmd === Start of file valgrind46 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind46 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/21/server/http_server.pid" --logfile "log/21/http_server.log" --logdir "log/21" --portfile log/21/server/http_server.port --config log/21/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73789 port 34827 * pid http => 73789 73789 test 0044...[HTTP RFC1867-type formposting without Expect: header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind44 ../src/curl -q --output log/21/curl44.out --include --trace-ascii log/21/trace44 --trace-config all --trace-time http://127.0.0.1:34827/we/want/44 -F name=daniel -F tool=curl -F file=@log/21/test44.txt -H "Expect:" > log/21/stdout44 2> log/21/stderr44 44: protocol FAILED! There was no content at all in the file log/21/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/21/ dir after test 44 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind44 ../src/curl -q --output log/21/curl44.out --include --trace-ascii log/21/trace44 --trace-config all --trace-time http://127.0.0.1:34827/we/want/44 -F name=daniel -F tool=curl -F file=@log/21/test44.txt -H "Expect:" > log/21/stdout44 2> log/21/stderr44 === End of file commands.log === Start of file http_server.log 09:40:30.623976 Running HTTP IPv4 version on port 34827 09:40:30.624836 Wrote pid 73789 to log/21/server/http_server.pid 09:40:30.625397 Wrote port 34827 to log/21/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 44 === End of file server.cmd === Start of file test44.txt foo- This is a moo- bar === End of file test44.txt === Start of file valgrind44 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind44 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/26/server/http_server.pid" --logfile "log/26/http_server.log" --logdir "log/26" --portfile log/26/server/http_server.port --config log/26/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 73780 port 46481 * pid http => 73780 73780 test 0039...[HTTP RFC1867-type formposting with filename= and type=] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind39 ../src/curl -q --output log/26/curl39.out --include --trace-ascii log/26/trace39 --trace-config all --trace-time http://127.0.0.1:46481/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2= log/26/stdout39 2> log/26/stderr39 39: protocol FAILED! There was no content at all in the file log/26/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/26/ dir after test 39 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind39 ../src/curl -q --output log/26/curl39.out --include --trace-ascii log/26/trace39 --trace-config all --trace-time http://127.0.0.1:46481/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2= log/26/stdout39 2> log/26/stderr39 === End of file commands.log === Start of file http_server.log 09:40:30.713979 Running HTTP IPv4 version on port 46481 09:40:30.717816 Wrote pid 73780 to log/26/server/http_server.pid 09:40:30.718157 Wrote port 46481 to log/26/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 39 === End of file server.cmd === Start of file test39.txt foo bar This is a bar foo bar foo === End of file test39.txt === Start of file valgrind39 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling convCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind70 ../src/curl -q --output log/58/curl70.out --include --trace-ascii log/58/trace70 --trace-config all --trace-time http://127.0.0.1:46727/70 -u testuser:testpass --anyauth > log/58/stdout70 2> log/58/stderr70 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind67 ../src/curl -q --output log/50/curl67.out --include --trace-ascii log/50/trace67 --trace-config all --trace-time http://127.0.0.1:45651/67 -u testuser:testpass --ntlm > log/50/stdout67 2> log/50/stderr67 entions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind39 test 0070...[HTTP with Digest *OR* NTLM authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind70 ../src/curl -q --output log/58/curl70.out --include --trace-ascii log/58/trace70 --trace-config all --trace-time http://127.0.0.1:46727/70 -u testuser:testpass --anyauth > log/58/stdout70 2> log/58/stderr70 70: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 70 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind70 ../src/curl -q --output log/58/curl70.out --include --trace-ascii log/58/trace70 --trace-config all --trace-time http://127.0.0.1:46727/70 -u testuser:testpass --anyauth > log/58/stdout70 2> log/58/stderr70 === End of file commands.log === Start of file http_server.log 09:40:32.924862 ====> Client connect 09:40:32.925201 accept_connection 3 returned 4 09:40:32.925385 accept_connection 3 returned 0 09:40:32.925750 Read 93 bytes 09:40:32.925860 Process 93 bytes request 09:40:32.925963 Got request: GET /verifiedserver HTTP/1.1 09:40:32.926052 Are-we-friendly question received 09:40:32.926304 Wrote request (93 bytes) input to log/58/server.input 09:40:32.926654 Identifying ourselves as friends 09:40:32.927641 Response sent (56 bytes) and written to log/58/server.response 09:40:32.927777 special request received, no persistency 09:40:32.927852 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46727... * Connected to 127.0.0.1 (127.0.0.1) port 46727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73755 === End of file http_verify.out === Start of file server.cmd Testnum 70 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73755 === End of file server.response === Start of file valgrind70 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind70 test 0067...[HTTP with NTLM authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind67 ../src/curl -q --output log/50/curl67.out --include --trace-ascii log/50/trace67 --trace-config all --trace-time http://127.0.0.1:45651/67 -u testuser:testpass --ntlm > log/50/stdout67 2> log/50/stderr67 67: protocol FAILED! There was no content at all in the file log/50/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/50/ dir after test 67 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind67 ../src/curl -q --output log/50/curl67.out --include --trace-ascii log/50/trace67 --trace-config all --trace-time http://127.0.0.1:45651/67 -u testuser:testpass --ntlm > log/50/stdout67 2> log/50/stderr67 === End of file commands.log === Start of file http_server.log 09:40:32.836799 ====> Client connect 09:40:32.837193 accept_connection 3 returned 4 09:40:32.837377 accept_connection 3 returned 0 09:40:32.837630 Read 93 bytes 09:40:32.837750 Process 93 bytes request 09:40:32.837862 Got request: GET /verifiedserver HTTP/1.1 09:40:32.838024 Are-we-friendly question received 09:40:32.838407 Wrote request (93 bytes) input to log/50/server.input 09:40:32.838769 Identifying ourselves as friends 09:40:32.840554 Response sent (56 bytes) and written to log/50/server.response 09:40:32.840696 special request received, no persistency 09:40:32.840775 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45651... * Connected to 127.0.0.1 (127.0.0.1) port 45651 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45651 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73759 === End of file http_verify.out === Start of file server.cmd Testnum 67 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73759 === End of file server.response === Start of file valgrind67 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libcCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind73 ../src/curl -q --output log/64/curl73.out --include --trace-ascii log/64/trace73 --trace-config all --trace-time http://127.0.0.1:33073/we/want/73 -c log/64/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/64/stdout73 2> log/64/stderr73 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind65 ../src/curl -q --output log/45/curl65.out --include --trace-ascii log/45/trace65 --trace-config all --trace-time http://127.0.0.1:34239/65 -u testuser:test2pass --digest > log/45/stdout65 2> log/45/stderr65 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind66 ../src/curl -q --output log/46/curl66.out --include --trace-ascii log/46/trace66 --trace-config all --trace-time http://127.0.0.1:46523/66 --http0.9 > log/46/stdout66 2> log/46/stderr66 6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind67 test 0073...[HTTP, receive cookies when using custom Host:, domain using only two dots] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind73 ../src/curl -q --output log/64/curl73.out --include --trace-ascii log/64/trace73 --trace-config all --trace-time http://127.0.0.1:33073/we/want/73 -c log/64/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/64/stdout73 2> log/64/stderr73 73: protocol FAILED! There was no content at all in the file log/64/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/64/ dir after test 73 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind73 ../src/curl -q --output log/64/curl73.out --include --trace-ascii log/64/trace73 --trace-config all --trace-time http://127.0.0.1:33073/we/want/73 -c log/64/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/64/stdout73 2> log/64/stderr73 === End of file commands.log === Start of file http_server.log 09:40:33.367911 ====> Client connect 09:40:33.368261 accept_connection 3 returned 4 09:40:33.368581 accept_connection 3 returned 0 09:40:33.368774 Read 93 bytes 09:40:33.368885 Process 93 bytes request 09:40:33.368990 Got request: GET /verifiedserver HTTP/1.1 09:40:33.369083 Are-we-friendly question received 09:40:33.369356 Wrote request (93 bytes) input to log/64/server.input 09:40:33.369682 Identifying ourselves as friends 09:40:33.373561 Response sent (56 bytes) and written to log/64/server.response 09:40:33.373721 special request received, no persistency 09:40:33.373812 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33073... * Connected to 127.0.0.1 (127.0.0.1) port 33073 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33073 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73748 === End of file http_verify.out === Start of file server.cmd Testnum 73 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73748 === End of file server.response === Start of file valgrind73 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind73 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/45/server/http_server.pid" --logfile "log/45/http_server.log" --logdir "log/45" --portfile log/45/server/http_server.port --config log/45/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 75108 port 34239 * pid http => 75108 75108 test 0065...[HTTP with Digest authorization with bad password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind65 ../src/curl -q --output log/45/curl65.out --include --trace-ascii log/45/trace65 --trace-config all --trace-time http://127.0.0.1:34239/65 -u testuser:test2pass --digest > log/45/stdout65 2> log/45/stderr65 65: protocol FAILED! There was no content at all in the file log/45/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/45/ dir after test 65 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind65 ../src/curl -q --output log/45/curl65.out --include --trace-ascii log/45/trace65 --trace-config all --trace-time http://127.0.0.1:34239/65 -u testuser:test2pass --digest > log/45/stdout65 2> log/45/stderr65 === End of file commands.log === Start of file http_server.log 09:40:31.219681 Running HTTP IPv4 version on port 34239 09:40:31.220697 Wrote pid 75108 to log/45/server/http_server.pid 09:40:31.221048 Wrote port 34239 to log/45/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 65 === End of file server.cmd === Start of file valgrind65 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind65 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/46/server/http_server.pid" --logfile "log/46/http_server.log" --logdir "log/46" --portfile log/46/server/http_server.port --config log/46/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 75714 port 46523 * pid http => 75714 75714 test 0066...[HTTP GET without headers in the response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind66 ../src/curl -q --output log/46/curl66.out --include --trace-ascii log/46/trace66 --trace-config all --trace-time http://127.0.0.1:46523/66 --http0.9 > log/46/stdout66 2> log/46/stderr66 66: protocol FAILED! ThCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind71 ../src/curl -q --output log/62/curl71.out --include --trace-ascii log/62/trace71 --trace-config all --trace-time http://127.0.0.1:38899/we/want/71 -K - log/62/stdout71 2> log/62/stderr71 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind72 ../src/curl -q --output log/60/curl72.out --include --trace-ascii log/60/trace72 --trace-config all --trace-time http://127.0.0.1:38843/72 -u testuser:testpass --anyauth > log/60/stdout72 2> log/60/stderr72 ere was no content at all in the file log/46/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/46/ dir after test 66 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind66 ../src/curl -q --output log/46/curl66.out --include --trace-ascii log/46/trace66 --trace-config all --trace-time http://127.0.0.1:46523/66 --http0.9 > log/46/stdout66 2> log/46/stderr66 === End of file commands.log === Start of file http_server.log 09:40:32.699830 Running HTTP IPv4 version on port 46523 09:40:32.700733 Wrote pid 75714 to log/46/server/http_server.pid 09:40:32.701114 Wrote port 46523 to log/46/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 66 === End of file server.cmd === Start of file valgrind66 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind66 test 0071...[HTTP and -F upload in config file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind71 ../src/curl -q --output log/62/curl71.out --include --trace-ascii log/62/trace71 --trace-config all --trace-time http://127.0.0.1:38899/we/want/71 -K - log/62/stdout71 2> log/62/stderr71 71: protocol FAILED! There was no content at all in the file log/62/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/62/ dir after test 71 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind71 ../src/curl -q --output log/62/curl71.out --include --trace-ascii log/62/trace71 --trace-config all --trace-time http://127.0.0.1:38899/we/want/71 -K - log/62/stdout71 2> log/62/stderr71 === End of file commands.log === Start of file http_server.log 09:40:33.102927 ====> Client connect 09:40:33.103630 accept_connection 3 returned 4 09:40:33.104015 accept_connection 3 returned 0 09:40:33.105325 Read 93 bytes 09:40:33.105831 Process 93 bytes request 09:40:33.105945 Got request: GET /verifiedserver HTTP/1.1 09:40:33.106102 Are-we-friendly question received 09:40:33.106804 Wrote request (93 bytes) input to log/62/server.input 09:40:33.107058 Identifying ourselves as friends 09:40:33.108049 Response sent (56 bytes) and written to log/62/server.response 09:40:33.108165 special request received, no persistency 09:40:33.108251 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38899... * Connected to 127.0.0.1 (127.0.0.1) port 38899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38899 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73749 === End of file http_verify.out === Start of file server.cmd Testnum 71 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73749 === End of file server.response === Start of file stdin-for-71 -F name=daniel -F tool=curl -F file=@log/62/test71.txt user-agent = "" === End of file stdin-for-71 === Start of file test71.txt foo- This is a moo- bar === End of file test71.txt === Start of file valgrind71 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind71 test 0072...[HTTP with Digest *OR* Basic authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind72 ../src/curl -q --output log/60/curl72.out --include --trace-ascii log/60/trace72 --trace-config all --trace-time http://127.0.0.1:38843/72 -u testuser:testpass --anyauth > log/60/stdout72 2> log/60/stderr72 72: protocol FAILED! There was no content at all in the file log/60/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/60/ dir after test 72 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind72 ../src/curl -q --output log/60/curl72.out --include --trace-ascii log/60/trace72 --trace-config all --trace-time http://127.0.0.1:38843/72 -u testuser:testpass --anyauth > log/60/stdout72 2> log/60/stderr72 === End of file commands.log === Start of file http_server.log 09:40:33.173051 ====> Client connect 09:40:33.173369 accept_connection 3 returned 4 09:40:33.173706 accept_connection 3 returned 0 09:40:33.174340 Read 93 bytes 09:40:33.174565 Process 93 bytes request 09:40:33.174712 Got request: GET /verifiedserver HTTP/1.1 09:40:33.174809 Are-we-friendly question received 09:40:33.175035 Wrote request (93 bytes) input to log/60/server.input 09:40:33.175259 Identifying ourselves as friends 09:40:33.175979 Response sent (56 bytes) and written to log/60/server.response 09:40:33.176151 special request received, no persistency 09:40:33.176277 ====> Client disconnect CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind68 ../src/curl -q --output log/54/curl68.out --include --trace-ascii log/54/trace68 --trace-config all --trace-time http://127.0.0.1:44921/68 -u testuser:testpass --ntlm > log/54/stdout68 2> log/54/stderr68 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind76 ../src/curl -q --output log/21/curl76.out --include --trace-ascii log/21/trace76 --trace-config all --trace-time http://127.0.0.1:34827/76 -u testuser:testpass --anyauth > log/21/stdout76 2> log/21/stderr76 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38843... * Connected to 127.0.0.1 (127.0.0.1) port 38843 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38843 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73750 === End of file http_verify.out === Start of file server.cmd Testnum 72 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73750 === End of file server.response === Start of file valgrind72 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind72 test 0068...[HTTP with NTLM authorization and wrong password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind68 ../src/curl -q --output log/54/curl68.out --include --trace-ascii log/54/trace68 --trace-config all --trace-time http://127.0.0.1:44921/68 -u testuser:testpass --ntlm > log/54/stdout68 2> log/54/stderr68 68: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 68 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind68 ../src/curl -q --output log/54/curl68.out --include --trace-ascii log/54/trace68 --trace-config all --trace-time http://127.0.0.1:44921/68 -u testuser:testpass --ntlm > log/54/stdout68 2> log/54/stderr68 === End of file commands.log === Start of file http_server.log 09:40:32.841280 ====> Client connect 09:40:32.841762 accept_connection 3 returned 4 09:40:32.841937 accept_connection 3 returned 0 09:40:32.842850 Read 93 bytes 09:40:32.843014 Process 93 bytes request 09:40:32.843109 Got request: GET /verifiedserver HTTP/1.1 09:40:32.843197 Are-we-friendly question received 09:40:32.843504 Wrote request (93 bytes) input to log/54/server.input 09:40:32.843734 Identifying ourselves as friends 09:40:32.847714 Response sent (56 bytes) and written to log/54/server.response 09:40:32.847846 special request received, no persistency 09:40:32.847930 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 68 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind68 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind68 test 0076...[HTTP with comma-separated WWW-Authenticate header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind76 ../src/curl -q --output log/21/curl76.out --include --trace-ascii log/21/trace76 --trace-config all --trace-time http://127.0.0.1:34827/76 -u testuser:testpass --anyauth > log/21/stdout76 2> log/21/stderr76 76: protocol FAILED! There was no content at all in the file log/21/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/21/ dir after test 76 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind76 ../src/curl -q --output log/21/curl76.out --include --trace-ascii log/21/trace76 --trace-config all --trace-time http://127.0.0.1:34827/76 -u testuser:testpass --anyauth > log/21/stdout76 2> log/21/stderr76 === End of file commands.log === Start of file http_server.log 09:40:33.864869 ====> Client connect 09:40:33.865170 accept_connection 3 returned 4 09:40:33.865341 accept_connection 3 returned 0 09:40:33.865644 Read 93 bytes 09:40:33.865774 Process 93 bytes request 09:40:33.865867 Got request: GET /verifiedserver HTTP/1.1 09:40:33.865951 Are-we-friendly question received 09:40:33.866183 Wrote request (93 bytes) input to log/21/server.input 09:40:33.866396 Identifying ourselves as friends 09:40:33.870713 Response sent (56 bytes) and written to log/21/server.response 09:40:33.870831 special request received, no persistency 09:40:33.870902 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34827... * Connected to 127.0.0.1 (127.0.0.1) port 34827 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34827 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === EnCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind69 ../src/curl -q --output log/59/curl69.out --include --trace-ascii log/59/trace69 --trace-config all --trace-time http://127.0.0.1:43695/69 -u testuser:testpass --anyauth > log/59/stdout69 2> log/59/stderr69 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind90 ../src/curl -q --output log/29/curl90.out --include --trace-ascii log/29/trace90 --trace-config all --trace-time http://127.0.0.1:36877/90 -u testuser:testpass --anyauth -L > log/29/stdout90 2> log/29/stderr90 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind79 ../src/curl -q --output log/57/curl79.out --include --trace-ascii log/57/trace79 --trace-config all --trace-time ftp://127.0.0.1:35945/we/want/that/page/79 -x 127.0.0.1:35945 > log/57/stdout79 2> log/57/stderr79 d of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73789 === End of file http_verify.out === Start of file server.cmd Testnum 76 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73789 === End of file server.response === Start of file valgrind76 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind76 test 0069...[HTTP with NTLM, Basic or Wild-and-crazy authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind69 ../src/curl -q --output log/59/curl69.out --include --trace-ascii log/59/trace69 --trace-config all --trace-time http://127.0.0.1:43695/69 -u testuser:testpass --anyauth > log/59/stdout69 2> log/59/stderr69 69: protocol FAILED! There was no content at all in the file log/59/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/59/ dir after test 69 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind69 ../src/curl -q --output log/59/curl69.out --include --trace-ascii log/59/trace69 --trace-config all --trace-time http://127.0.0.1:43695/69 -u testuser:testpass --anyauth > log/59/stdout69 2> log/59/stderr69 === End of file commands.log === Start of file http_server.log 09:40:32.982866 ====> Client connect 09:40:32.983175 accept_connection 3 returned 4 09:40:32.983353 accept_connection 3 returned 0 09:40:32.983587 Read 93 bytes 09:40:32.983708 Process 93 bytes request 09:40:32.983798 Got request: GET /verifiedserver HTTP/1.1 09:40:32.983896 Are-we-friendly question received 09:40:32.984096 Wrote request (93 bytes) input to log/59/server.input 09:40:32.984609 Identifying ourselves as friends 09:40:32.987298 Response sent (56 bytes) and written to log/59/server.response 09:40:32.990094 special request received, no persistency 09:40:32.990202 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43695... * Connected to 127.0.0.1 (127.0.0.1) port 43695 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43695 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73752 === End of file http_verify.out === Start of file server.cmd Testnum 69 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73752 === End of file server.response === Start of file valgrind69 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind69 test 0090...[HTTP with NTLM via --anyauth, and then follow-location with NTLM again] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind90 ../src/curl -q --output log/29/curl90.out --include --trace-ascii log/29/trace90 --trace-config all --trace-time http://127.0.0.1:36877/90 -u testuser:testpass --anyauth -L > log/29/stdout90 2> log/29/stderr90 90: protocol FAILED! There was no content at all in the file log/29/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/29/ dir after test 90 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind90 ../src/curl -q --output log/29/curl90.out --include --trace-ascii log/29/trace90 --trace-config all --trace-time http://127.0.0.1:36877/90 -u testuser:testpass --anyauth -L > log/29/stdout90 2> log/29/stderr90 === End of file commands.log === Start of file http_server.log 09:40:33.928407 ====> Client connect 09:40:33.928847 accept_connection 3 returned 4 09:40:33.929036 accept_connection 3 returned 0 09:40:33.930409 Read 93 bytes 09:40:33.930624 Process 93 bytes request 09:40:33.930750 Got request: GET /verifiedserver HTTP/1.1 09:40:33.930852 Are-we-friendly question received 09:40:33.931102 Wrote request (93 bytes) input to log/29/server.input 09:40:33.931323 Identifying ourselves as friends 09:40:33.932164 Response sent (56 bytes) and written to log/29/server.response 09:40:33.932282 special request received, no persistency 09:40:33.932355 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36877... * Connected to 127.0.0.1 (127.0.0.1) port 36877 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36877 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73782 === End of file http_verify.out === Start of file server.cmd Testnum 90 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73782 === End of file server.response === Start of file valgrind90 valgrind: Fatal eCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind94 ../src/curl -q --output log/18/curl94.out --include --trace-ascii log/18/trace94 --trace-config all --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:41285 > log/18/stdout94 2> log/18/stderr94 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind75 ../src/curl -q --include --trace-ascii log/26/trace75 --trace-config all --trace-time "http://a-site-never-accessed.example.org/[2-1]" -o "log/26/weee#1.dump" --stderr - > log/26/stdout75 2> log/26/stderr75 rror at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind90 test 0079...[FTP over HTTP proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind79 ../src/curl -q --output log/57/curl79.out --include --trace-ascii log/57/trace79 --trace-config all --trace-time ftp://127.0.0.1:35945/we/want/that/page/79 -x 127.0.0.1:35945 > log/57/stdout79 2> log/57/stderr79 79: protocol FAILED! There was no content at all in the file log/57/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/57/ dir after test 79 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind79 ../src/curl -q --output log/57/curl79.out --include --trace-ascii log/57/trace79 --trace-config all --trace-time ftp://127.0.0.1:35945/we/want/that/page/79 -x 127.0.0.1:35945 > log/57/stdout79 2> log/57/stderr79 === End of file commands.log === Start of file http_server.log 09:40:33.838284 ====> Client connect 09:40:33.838771 accept_connection 3 returned 4 09:40:33.838945 accept_connection 3 returned 0 09:40:33.839086 Read 93 bytes 09:40:33.839190 Process 93 bytes request 09:40:33.839287 Got request: GET /verifiedserver HTTP/1.1 09:40:33.839367 Are-we-friendly question received 09:40:33.839687 Wrote request (93 bytes) input to log/57/server.input 09:40:33.839906 Identifying ourselves as friends 09:40:33.846755 Response sent (56 bytes) and written to log/57/server.response 09:40:33.846888 special request received, no persistency 09:40:33.846963 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35945... * Connected to 127.0.0.1 (127.0.0.1) port 35945 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35945 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73753 === End of file http_verify.out === Start of file server.cmd Testnum 79 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73753 === End of file server.response === Start of file valgrind79 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind79 test 0094...[HTTPS GET with failed proxy auth (CONNECT 1.0)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind94 ../src/curl -q --output log/18/curl94.out --include --trace-ascii log/18/trace94 --trace-config all --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:41285 > log/18/stdout94 2> log/18/stderr94 94: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 94 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind94 ../src/curl -q --output log/18/curl94.out --include --trace-ascii log/18/trace94 --trace-config all --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:41285 > log/18/stdout94 2> log/18/stderr94 === End of file commands.log === Start of file http_server.log 09:40:34.108163 ====> Client connect 09:40:34.108769 accept_connection 3 returned 4 09:40:34.108931 accept_connection 3 returned 0 09:40:34.109058 Read 93 bytes 09:40:34.109141 Process 93 bytes request 09:40:34.109230 Got request: GET /verifiedserver HTTP/1.1 09:40:34.109309 Are-we-friendly question received 09:40:34.112693 Wrote request (93 bytes) input to log/18/server.input 09:40:34.113062 Identifying ourselves as friends 09:40:34.117706 Response sent (56 bytes) and written to log/18/server.response 09:40:34.117830 special request received, no persistency 09:40:34.117898 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41285... * Connected to 127.0.0.1 (127.0.0.1) port 41285 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41285 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73790 === End of file http_verify.out === Start of file server.cmd Testnum 94 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73790 === End of file server.response === Start of file valgrind94 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilstCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind129 ../src/curl -q --output log/6/curl129.out --include --trace-ascii log/6/trace129 --trace-config all --trace-time http://127.0.0.1:37181/129 > log/6/stdout129 2> log/6/stderr129 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind74 ../src/curl -q --include --trace-ascii log/61/trace74 --trace-config all --trace-time "http://127.0.0.1:44381/{74,740001}" -o "log/61/dumpit#1.dump" > log/61/stdout74 2> log/61/stderr74 processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind94 test 0129...[HTTP/1.2 is rejected] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind129 ../src/curl -q --output log/6/curl129.out --include --trace-ascii log/6/trace129 --trace-config all --trace-time http://127.0.0.1:37181/129 > log/6/stdout129 2> log/6/stderr129 129: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 129 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind129 ../src/curl -q --output log/6/curl129.out --include --trace-ascii log/6/trace129 --trace-config all --trace-time http://127.0.0.1:37181/129 > log/6/stdout129 2> log/6/stderr129 === End of file commands.log === Start of file http_server.log 09:40:34.140320 ====> Client connect 09:40:34.140825 accept_connection 3 returned 4 09:40:34.141004 accept_connection 3 returned 0 09:40:34.141711 Read 93 bytes 09:40:34.141857 Process 93 bytes request 09:40:34.141954 Got request: GET /verifiedserver HTTP/1.1 09:40:34.142051 Are-we-friendly question received 09:40:34.142300 Wrote request (93 bytes) input to log/6/server.input 09:40:34.142655 Identifying ourselves as friends 09:40:34.143290 Response sent (56 bytes) and written to log/6/server.response 09:40:34.143404 special request received, no persistency 09:40:34.143583 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37181... * Connected to 127.0.0.1 (127.0.0.1) port 37181 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37181 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73803 === End of file http_verify.out === Start of file server.cmd Testnum 129 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73803 === End of file server.response === Start of file valgrind129 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind129 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind99 ../src/curl -q --output log/14/curl99.out --include --trace-ascii log/14/trace99 --trace-config all --trace-time http://127.0.0.1:43309/99 -C 9999999999 > log/14/stdout99 2> log/14/stderr99 * starts no server test 0075...[HTTP, urlglob retrieval with bad range] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind75 ../src/curl -q --include --trace-ascii log/26/trace75 --trace-config all --trace-time "http://a-site-never-accessed.example.org/[2-1]" -o "log/26/weee#1.dump" --stderr - > log/26/stdout75 2> log/26/stderr75 75: stdout FAILED: --- log/26/check-expected 2025-07-18 09:40:34.864091145 +0000 +++ log/26/check-generated 2025-07-18 09:40:34.862611145 +0000 @@ -1,3 +0,0 @@ -curl: (3) bad range in URL position 47:[CR][LF] -http://a-site-never-accessed.example.org/[2-1][CR][LF] - ^[CR][LF] == Contents of files in the log/26/ dir after test 75 === Start of file check-expected curl: (3) bad range in URL position 47:[CR][LF] http://a-site-never-accessed.example.org/[2-1][CR][LF] ^[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind75 ../src/curl -q --include --trace-ascii log/26/trace75 --trace-config all --trace-time "http://a-site-never-accessed.example.org/[2-1]" -o "log/26/weee#1.dump" --stderr - > log/26/stdout75 2> log/26/stderr75 === End of file commands.log === Start of file server.cmd Testnum 75 === End of file server.cmd === Start of file valgrind75 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind75 test 0099...[HTTP GET with large-file resume point and failed resume] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind99 ../src/curl -q --output log/14/curl99.out --include --trace-ascii log/14/trace99 --trace-config all --trace-time http://127.0.0.1:43309/99 -C 9999999999 > log/14/stdout99 2> log/14/stderr99 99: protocol FAILED! There was no content at all in the file log/14/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/14/ dir after test 99 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind99 ../src/curl -q --output log/14/curl99.out --include --trace-ascii log/14/trace99 --trace-config all --trace-time http://127.0.0.1:43309/99 -C 9999999999 > log/14/stdout99 2> log/14/stderr99 === End of file commands.log === Start of file http_server.log 09:40:34.012611 ====> Client connect 09:40:34.013012 accept_connection 3 returned 4 09:40:34.013210 accept_connection 3 returned 0 09:40:34.013372 Read 93 bytes 09:40:34.013588 Process 93 bytes request 09:40:34.013722 Got request: GET /verifiedserver HTTP/1.1 09:40:34.013819 Are-we-friendly question received 09:40:34.014090 Wrote request (93 bytes) input to log/14/server.input 09:40:34.014353 Identifying ourselves as friends 09:40:34.015289 Response sent (56 bytes) and written to log/14/server.response 09:40:34.015403 special request received, no persistency 09:40:34.018039 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43309... * Connected to 127.0.0.1 (127.0.0.1) port 43309 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43309 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73795 === End of file http_verify.out === Start of file server.cmd Testnum 99 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73795 === End of file server.response === Start of file valgrind99 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind99 test 0074...[HTTP, urlglob {}-retrieval and -o #[num] usage] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind74 ../src/curl -q --include --trace-ascii log/61/trace74 --trace-config all --trace-time "http://127.0.0.1:44381/{74,740001}" -o "log/61/dumpit#1.dump" > log/61/stdout74 2> log/61/stderr74 74: protocol FAILED! There was no content at all in the file log/61/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/61/ dir after test 74 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind74 ../src/curl -q --include --trace-ascii log/61/trace74 --trace-config all --trace-time "http://127.0.0.1:44381/{74,740001}" -o "log/61/dumpit#1.dump" > log/61/stdout74 2> log/61/stderr74 === End of file commands.log === Start of file http_server.log 09:40:33.840874 ====> Client connect 09:40:33.841195 accept_connection 3 returned 4 09:40:33.841355 accept_connection 3 returned 0 09:40:33.841645 Read 93 bytes 09:40:33.841765 Process 93 bytes request 09:40:33.841CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind78 ../src/curl -q --output log/13/curl78.out --include --trace-ascii log/13/trace78 --trace-config all --trace-time http://127.0.0.1:44087/78 -z "dec 12 11:00:00 1999 GMT" > log/13/stdout78 2> log/13/stderr78 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind93 ../src/curl -q --output log/20/curl93.out --include --trace-ascii log/20/trace93 --trace-config all --trace-time http://127.0.0.1:45475/93 -x 127.0.0.1:45475 > log/20/stdout93 2> log/20/stderr93 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind81 ../src/curl -q --output log/42/curl81.out --include --trace-ascii log/42/trace81 --trace-config all --trace-time http://127.0.0.1:42819/81 --proxy-user testuser:testpass -x http://127.0.0.1:42819 --proxy-ntlm > log/42/stdout81 2> log/42/stderr81 846 Got request: GET /verifiedserver HTTP/1.1 09:40:33.841912 Are-we-friendly question received 09:40:33.842150 Wrote request (93 bytes) input to log/61/server.input 09:40:33.842371 Identifying ourselves as friends 09:40:33.843288 Response sent (56 bytes) and written to log/61/server.response 09:40:33.843401 special request received, no persistency 09:40:33.843575 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44381... * Connected to 127.0.0.1 (127.0.0.1) port 44381 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44381 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73751 === End of file http_verify.out === Start of file server.cmd Testnum 74 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73751 === End of file server.response === Start of file valgrind74 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind74 test 0078...[HTTP with -z "newer date"] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind78 ../src/curl -q --output log/13/curl78.out --include --trace-ascii log/13/trace78 --trace-config all --trace-time http://127.0.0.1:44087/78 -z "dec 12 11:00:00 1999 GMT" > log/13/stdout78 2> log/13/stderr78 78: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 78 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind78 ../src/curl -q --output log/13/curl78.out --include --trace-ascii log/13/trace78 --trace-config all --trace-time http://127.0.0.1:44087/78 -z "dec 12 11:00:00 1999 GMT" > log/13/stdout78 2> log/13/stderr78 === End of file commands.log === Start of file http_server.log 09:40:34.015856 ====> Client connect 09:40:34.016261 accept_connection 3 returned 4 09:40:34.016575 accept_connection 3 returned 0 09:40:34.016752 Read 93 bytes 09:40:34.016846 Process 93 bytes request 09:40:34.016937 Got request: GET /verifiedserver HTTP/1.1 09:40:34.017048 Are-we-friendly question received 09:40:34.017344 Wrote request (93 bytes) input to log/13/server.input 09:40:34.020017 Identifying ourselves as friends 09:40:34.025000 Response sent (56 bytes) and written to log/13/server.response 09:40:34.025128 special request received, no persistency 09:40:34.025211 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44087... * Connected to 127.0.0.1 (127.0.0.1) port 44087 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44087 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73796 === End of file http_verify.out === Start of file server.cmd Testnum 78 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73796 === End of file server.response === Start of file valgrind78 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind78 test 0093...[HTTP GET with failed proxy auth] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind93 ../src/curl -q --output log/20/curl93.out --include --trace-ascii log/20/trace93 --trace-config all --trace-time http://127.0.0.1:45475/93 -x 127.0.0.1:45475 > log/20/stdout93 2> log/20/stderr93 93: protocol FAILED! There was no content at all in the file log/20/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/20/ dir after test 93 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind93 ../src/curl -q --output log/20/curl93.out --include --trace-ascii log/20/trace93 --trace-config all --trace-time http://127.0.0.1:45475/93 -x 127.0.0.1:45475 > log/20/stdout93 2> log/20/stderr93 === End of file commands.log === Start of file http_server.log 09:40:33.968878 ====> Client connect 09:40:33.969217 accept_connection 3 returned 4 09:40:33.969423 accept_connection 3 returned 0 09:40:33.969704 Read 93 bytes 09:40:33.969856 Process 93 bytes request 09:40:33.969948 Got request: GET /verifiedserver HTTP/1.1 09:40:33.970063 Are-we-friendly question received 09:40:33.970402 Wrote request (93 bytes) input to log/20/server.input 09:40:33.970734 Identifying ourselves as friends 09:40:33.971603 Response sent (56 bytes) and written to log/20/server.response 09:40:33.971731 special request received, no persistency 09:40:33.971808 ====> Client disconnect 0 === End of file http_server.log === Start of CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind88 ../src/curl -q --output log/33/curl88.out --include --trace-ascii log/33/trace88 --trace-config all --trace-time http://127.0.0.1:36559/88 -T log/33/put88 -u testuser:testpass --digest > log/33/stdout88 2> log/33/stderr88 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind97 ../src/curl -q --output log/16/curl97.out --include --trace-ascii log/16/trace97 --trace-config all --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0.1:34829/97 > log/16/stdout97 2> log/16/stderr97 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind84 ../src/curl -q --output log/37/curl84.out --include --trace-ascii log/37/trace84 --trace-config all --trace-time http://127.0.0.1:37551/we/want/that/page/84 -x 127.0.0.1:37551 --user iam:myself > log/37/stdout84 2> log/37/stderr84 file http_verify.log * Trying 127.0.0.1:45475... * Connected to 127.0.0.1 (127.0.0.1) port 45475 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45475 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73786 === End of file http_verify.out === Start of file server.cmd Testnum 93 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73786 === End of file server.response === Start of file valgrind93 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind93 test 0081...[HTTP with proxy using NTLM authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind81 ../src/curl -q --output log/42/curl81.out --include --trace-ascii log/42/trace81 --trace-config all --trace-time http://127.0.0.1:42819/81 --proxy-user testuser:testpass -x http://127.0.0.1:42819 --proxy-ntlm > log/42/stdout81 2> log/42/stderr81 81: protocol FAILED! There was no content at all in the file log/42/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/42/ dir after test 81 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind81 ../src/curl -q --output log/42/curl81.out --include --trace-ascii log/42/trace81 --trace-config all --trace-time http://127.0.0.1:42819/81 --proxy-user testuser:testpass -x http://127.0.0.1:42819 --proxy-ntlm > log/42/stdout81 2> log/42/stderr81 === End of file commands.log === Start of file http_server.log 09:40:33.963752 ====> Client connect 09:40:33.964116 accept_connection 3 returned 4 09:40:33.964321 accept_connection 3 returned 0 09:40:33.964766 Read 93 bytes 09:40:33.964910 Process 93 bytes request 09:40:33.965007 Got request: GET /verifiedserver HTTP/1.1 09:40:33.965104 Are-we-friendly question received 09:40:33.965358 Wrote request (93 bytes) input to log/42/server.input 09:40:33.965869 Identifying ourselves as friends 09:40:33.966837 Response sent (56 bytes) and written to log/42/server.response 09:40:33.966962 special request received, no persistency 09:40:33.967033 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42819... * Connected to 127.0.0.1 (127.0.0.1) port 42819 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42819 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73768 === End of file http_verify.out === Start of file server.cmd Testnum 81 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73768 === End of file server.response === Start of file valgrind81 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind81 test 0088...[HTTP PUT with Digest authorization] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind88 ../src/curl -q --output log/33/curl88.out --include --trace-ascii log/33/trace88 --trace-config all --trace-time http://127.0.0.1:36559/88 -T log/33/put88 -u testuser:testpass --digest > log/33/stdout88 2> log/33/stderr88 88: protocol FAILED! There was no content at all in the file log/33/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/33/ dir after test 88 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind88 ../src/curl -q --output log/33/curl88.out --include --trace-ascii log/33/trace88 --trace-config all --trace-time http://127.0.0.1:36559/88 -T log/33/put88 -u testuser:testpass --digest > log/33/stdout88 2> log/33/stderr88 === End of file commands.log === Start of file http_server.log 09:40:33.982895 ====> Client connect 09:40:33.983196 accept_connection 3 returned 4 09:40:33.983378 accept_connection 3 returned 0 09:40:33.983629 Read 93 bytes 09:40:33.983784 Process 93 bytes request 09:40:33.983865 Got request: GET /verifiedserver HTTP/1.1 09:40:33.983929 Are-we-friendly question received 09:40:33.984127 Wrote request (93 bytes) input to log/33/server.input 09:40:33.984301 Identifying ourselves as friends 09:40:33.987978 Response sent (56 bytes) and written to log/33/server.response 09:40:33.988104 special request received, no persistency 09:40:33.988176 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36559... * Connected to 127.0.0.1 (127.0.0.1) port 36559 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36559 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 1CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind86 ../src/curl -q --include --trace-ascii log/35/trace86 --trace-config all --trace-time "http://127.0.0.1:43179/[860001-860003]" -o "log/35/dumpit#1.dump" > log/35/stdout86 2> log/35/stderr86 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind91 ../src/curl -q --output log/27/curl91.out --include --trace-ascii log/27/trace91 --trace-config all --trace-time http://127.0.0.1:42323/91 --anyauth -u mydomain\\myself:secret > log/27/stdout91 2> log/27/stderr91 7 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73773 === End of file http_verify.out === Start of file put88 This is data we upload with PUT a second line line three four is the number of lines === End of file put88 === Start of file server.cmd auth_required Testnum 88 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73773 === End of file server.response === Start of file valgrind88 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind88 test 0097...[HTTP POST with custom content-type] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind97 ../src/curl -q --output log/16/curl97.out --include --trace-ascii log/16/trace97 --trace-config all --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0.1:34829/97 > log/16/stdout97 2> log/16/stderr97 97: protocol FAILED! There was no content at all in the file log/16/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/16/ dir after test 97 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind97 ../src/curl -q --output log/16/curl97.out --include --trace-ascii log/16/trace97 --trace-config all --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0.1:34829/97 > log/16/stdout97 2> log/16/stderr97 === End of file commands.log === Start of file http_server.log 09:40:34.144854 ====> Client connect 09:40:34.145167 accept_connection 3 returned 4 09:40:34.145326 accept_connection 3 returned 0 09:40:34.149657 Read 93 bytes 09:40:34.149814 Process 93 bytes request 09:40:34.149911 Got request: GET /verifiedserver HTTP/1.1 09:40:34.150003 Are-we-friendly question received 09:40:34.150254 Wrote request (93 bytes) input to log/16/server.input 09:40:34.150605 Identifying ourselves as friends 09:40:34.151408 Response sent (56 bytes) and written to log/16/server.response 09:40:34.151618 special request received, no persistency 09:40:34.151694 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34829... * Connected to 127.0.0.1 (127.0.0.1) port 34829 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34829 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73794 === End of file http_verify.out === Start of file server.cmd Testnum 97 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73794 === End of file server.response === Start of file valgrind97 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind97 test 0084...[HTTP over proxy with site authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind84 ../src/curl -q --output log/37/curl84.out --include --trace-ascii log/37/trace84 --trace-config all --trace-time http://127.0.0.1:37551/we/want/that/page/84 -x 127.0.0.1:37551 --user iam:myself > log/37/stdout84 2> log/37/stderr84 84: protocol FAILED! There was no content at all in the file log/37/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/37/ dir after test 84 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind84 ../src/curl -q --output log/37/curl84.out --include --trace-ascii log/37/trace84 --trace-config all --trace-time http://127.0.0.1:37551/we/want/that/page/84 -x 127.0.0.1:37551 --user iam:myself > log/37/stdout84 2> log/37/stderr84 === End of file commands.log === Start of file http_server.log 09:40:34.086266 ====> Client connect 09:40:34.086717 accept_connection 3 returned 4 09:40:34.086875 accept_connection 3 returned 0 09:40:34.086995 Read 93 bytes 09:40:34.087089 Process 93 bytes request 09:40:34.087177 Got request: GET /verifiedserver HTTP/1.1 09:40:34.087257 Are-we-friendly question received 09:40:34.087566 Wrote request (93 bytes) input to log/37/server.input 09:40:34.087801 Identifying ourselves as friends 09:40:34.088574 Response sent (56 bytes) and written to log/37/server.response 09:40:34.088689 special request received, no persistency 09:40:34.088757 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37551... * Connected to 127.0.0.1 (127.0.0.1) port 37551 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37551 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73772 === EndCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind92 ../src/curl -q --output log/25/curl92.out --include --trace-ascii log/25/trace92 --trace-config all --trace-time http://127.0.0.1:41727/want/92 -C 87 > log/25/stdout92 2> log/25/stderr92 of file http_verify.out === Start of file server.cmd Testnum 84 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73772 === End of file server.response === Start of file valgrind84 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind84 test 0092...[HTTP resume transfer with the whole file already downloaded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind92 ../src/curl -q --output log/25/curl92.out --include --trace-ascii log/25/trace92 --trace-config all --trace-time http://127.0.0.1:41727/want/92 -C 87 > log/25/stdout92 2> log/25/stderr92 92: protocol FAILED! There was no content at all in the file log/25/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/25/ dir after test 92 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind92 ../src/curl -q --output log/25/curl92.out --include --trace-ascii log/25/trace92 --trace-config all --trace-time http://127.0.0.1:41727/want/92 -C 87 > log/25/stdout92 2> log/25/stderr92 === End of file commands.log === Start of file http_server.log 09:40:33.954746 ====> Client connect 09:40:33.955131 accept_connection 3 returned 4 09:40:33.955331 accept_connection 3 returned 0 09:40:33.955595 Read 93 bytes 09:40:33.955737 Process 93 bytes request 09:40:33.955887 Got request: GET /verifiedserver HTTP/1.1 09:40:33.956013 Are-we-friendly question received 09:40:33.956376 Wrote request (93 bytes) input to log/25/server.input 09:40:33.958058 Identifying ourselves as friends 09:40:33.960777 Response sent (56 bytes) and written to log/25/server.response 09:40:33.960913 special request received, no persistency 09:40:33.960992 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41727... * Connected to 127.0.0.1 (127.0.0.1) port 41727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73784 === End of file http_verify.out === Start of file server.cmd Testnum 92 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73784 === End of file server.response === Start of file valgrind92 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind92 test 0091...[HTTP with NTLM/Negotiate/Basic, anyauth and user with domain, with size 0] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind91 ../src/curl -q --output log/27/curl91.out --include --trace-ascii log/27/trace91 --trace-config all --trace-time http://127.0.0.1:42323/91 --anyauth -u mydomain\\myself:secret > log/27/stdout91 2> log/27/stderr91 91: protocol FAILED! There was no content at all in the file log/27/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/27/ dir after test 91 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind91 ../src/curl -q --output log/27/curl91.out --include --trace-ascii log/27/trace91 --trace-config all --trace-time http://127.0.0.1:42323/91 --anyauth -u mydomain\\myself:secret > log/27/stdout91 2> log/27/stderr91 === End of file commands.log === Start of file http_server.log 09:40:34.014681 ====> Client connect 09:40:34.015098 accept_connection 3 returned 4 09:40:34.015306 accept_connection 3 returned 0 09:40:34.015519 Read 93 bytes 09:40:34.015652 Process 93 bytes request 09:40:34.015752 Got request: GET /verifiedserver HTTP/1.1 09:40:34.015840 Are-we-friendly question received 09:40:34.016085 Wrote request (93 bytes) input to log/27/server.input 09:40:34.016348 Identifying ourselves as friends 09:40:34.017224 Response sent (56 bytes) and written to log/27/server.response 09:40:34.017351 special request received, no persistency 09:40:34.017427 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42323... * Connected to 127.0.0.1 (127.0.0.1) port 42323 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42323 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73783 === End of file http_verify.out === Start of file server.cmd Testnum 91 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73783 === End of file server.response === Start of file valgrind91 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind89 ../src/curl -q --output log/31/curl89.out --include --trace-ascii log/31/trace89 --trace-config all --trace-time http://127.0.0.1:45557/89 -u testuser:testpass --ntlm -L > log/31/stdout89 2> log/31/stderr89 grind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind91 test 0086...[HTTP, urlglob []-retrieval and -o #[num] usage] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind86 ../src/curl -q --include --trace-ascii log/35/trace86 --trace-config all --trace-time "http://127.0.0.1:43179/[860001-860003]" -o "log/35/dumpit#1.dump" > log/35/stdout86 2> log/35/stderr86 86: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 86 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind86 ../src/curl -q --include --trace-ascii log/35/trace86 --trace-config all --trace-time "http://127.0.0.1:43179/[860001-860003]" -o "log/35/dumpit#1.dump" > log/35/stdout86 2> log/35/stderr86 === End of file commands.log === Start of file http_server.log 09:40:33.961963 ====> Client connect 09:40:33.962304 accept_connection 3 returned 4 09:40:33.962621 accept_connection 3 returned 0 09:40:33.962784 Read 93 bytes 09:40:33.962893 Process 93 bytes request 09:40:33.962983 Got request: GET /verifiedserver HTTP/1.1 09:40:33.963069 Are-we-friendly question received 09:40:33.963297 Wrote request (93 bytes) input to log/35/server.input 09:40:33.963591 Identifying ourselves as friends 09:40:33.964311 Response sent (56 bytes) and written to log/35/server.response 09:40:33.964426 special request received, no persistency 09:40:33.968684 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43179... * Connected to 127.0.0.1 (127.0.0.1) port 43179 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43179 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73771 === End of file http_verify.out === Start of file server.cmd Testnum 86 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73771 === End of file server.response === Start of file valgrind86 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind86 test 0089...[HTTP with NTLM and follow-location] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind89 ../src/curl -q --output log/31/curl89.out --include --trace-ascii log/31/trace89 --trace-config all --trace-time http://127.0.0.1:45557/89 -u testuser:testpass --ntlm -L > log/31/stdout89 2> log/31/stderr89 89: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 89 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind89 ../src/curl -q --output log/31/curl89.out --include --trace-ascii log/31/trace89 --trace-config all --trace-time http://127.0.0.1:45557/89 -u testuser:testpass --ntlm -L > log/31/stdout89 2> log/31/stderr89 === End of file commands.log === Start of file http_server.log 09:40:33.982240 ====> Client connect 09:40:33.982897 accept_connection 3 returned 4 09:40:33.983077 accept_connection 3 returned 0 09:40:33.983728 Read 93 bytes 09:40:33.983856 Process 93 bytes request 09:40:33.983931 Got request: GET /verifiedserver HTTP/1.1 09:40:33.983989 Are-we-friendly question received 09:40:33.984172 Wrote request (93 bytes) input to log/31/server.input 09:40:33.984323 Identifying ourselves as friends 09:40:33.984916 Response sent (56 bytes) and written to log/31/server.response 09:40:33.985029 special request received, no persistency 09:40:33.985098 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45557... * Connected to 127.0.0.1 (127.0.0.1) port 45557 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45557 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73776 === End of file http_verify.out === Start of file server.cmd Testnum 89 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73776 === End of file server.response === Start of file valgrind89 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrindCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind82 ../src/curl -q --output log/40/curl82.out --include --trace-ascii log/40/trace82 --trace-config all --trace-time http://127.0.0.1:42139/82 --proxy-user testuser:testpass -x http://127.0.0.1:42139 > log/40/stdout82 2> log/40/stderr82 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind109 ../src/curl -q --output log/49/curl109.out --include --trace-ascii log/49/trace109 --trace-config all --trace-time ftp://127.0.0.1:34533/109 -T log/49/upload109 --append > log/49/stdout109 2> log/49/stderr109 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind87 ../src/curl -q --include --trace-ascii log/34/trace87 --trace-config all --trace-time "http://127.0.0.1:33117/[870001-870002]" -o "log/34/dumpit87-#2.dump" > log/34/stdout87 2> log/34/stderr87 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind98 ../src/curl -q --output log/15/curl98.out --include --trace-ascii log/15/trace98 --trace-config all --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:35435/98 log/15/stdout98 2> log/15/stderr98 : package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind89 test 0082...[HTTP with proxy requiring NTLM, but we send Basic] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind82 ../src/curl -q --output log/40/curl82.out --include --trace-ascii log/40/trace82 --trace-config all --trace-time http://127.0.0.1:42139/82 --proxy-user testuser:testpass -x http://127.0.0.1:42139 > log/40/stdout82 2> log/40/stderr82 82: protocol FAILED! There was no content at all in the file log/40/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/40/ dir after test 82 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind82 ../src/curl -q --output log/40/curl82.out --include --trace-ascii log/40/trace82 --trace-config all --trace-time http://127.0.0.1:42139/82 --proxy-user testuser:testpass -x http://127.0.0.1:42139 > log/40/stdout82 2> log/40/stderr82 === End of file commands.log === Start of file http_server.log 09:40:34.016266 ====> Client connect 09:40:34.016746 accept_connection 3 returned 4 09:40:34.016934 accept_connection 3 returned 0 09:40:34.024579 Read 93 bytes 09:40:34.024781 Process 93 bytes request 09:40:34.024885 Got request: GET /verifiedserver HTTP/1.1 09:40:34.024977 Are-we-friendly question received 09:40:34.025252 Wrote request (93 bytes) input to log/40/server.input 09:40:34.025580 Identifying ourselves as friends 09:40:34.026413 Response sent (56 bytes) and written to log/40/server.response 09:40:34.026630 special request received, no persistency 09:40:34.026714 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42139... * Connected to 127.0.0.1 (127.0.0.1) port 42139 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42139 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73767 === End of file http_verify.out === Start of file server.cmd Testnum 82 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73767 === End of file server.response === Start of file valgrind82 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind82 test 0098...[HTTP PUT from stdin with set size, disabling chunked transfer-encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind98 ../src/curl -q --output log/15/curl98.out --include --trace-ascii log/15/trace98 --trace-config all --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:35435/98 log/15/stdout98 2> log/15/stderr98 98: protocol FAILED! There was no content at all in the file log/15/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/15/ dir after test 98 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind98 ../src/curl -q --output log/15/curl98.out --include --trace-ascii log/15/trace98 --trace-config all --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:35435/98 log/15/stdout98 2> log/15/stderr98 === End of file commands.log === Start of file http_server.log 09:40:34.114912 ====> Client connect 09:40:34.115257 accept_connection 3 returned 4 09:40:34.115587 accept_connection 3 returned 0 09:40:34.115825 Read 93 bytes 09:40:34.115986 Process 93 bytes request 09:40:34.116266 Got request: GET /verifiedserver HTTP/1.1 09:40:34.116399 Are-we-friendly question received 09:40:34.117101 Wrote request (93 bytes) input to log/15/server.input 09:40:34.126208 Identifying ourselves as friends 09:40:34.127960 Response sent (56 bytes) and written to log/15/server.response 09:40:34.128087 special request received, no persistency 09:40:34.128188 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35435... * Connected to 127.0.0.1 (127.0.0.1) port 35435 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35435 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73793 === End of file http_verify.out === Start of file server.cmd Testnum 98 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73793 === End of file server.response === Start of file stdin-for-98 data on stdin === End of file stdin-for-98 === Start of file valgrind98 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind98 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind77 ../src/curl -q --output log/19/curl77.out --include --trace-ascii log/19/trace77 --trace-config all --trace-time http://127.0.0.1:35697/77 -z "dec 12 12:00:00 1999 GMT" > log/19/stdout77 2> log/19/stderr77 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind114 ../src/curl -q --output log/28/curl114.out --include --trace-ascii log/28/trace114 --trace-config all --trace-time ftp://127.0.0.1:34373/114 > log/28/stdout114 2> log/28/stderr114 test 0087...[urlglob with out of range -o #[num] usage] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind87 ../src/curl -q --include --trace-ascii log/34/trace87 --trace-config all --trace-time "http://127.0.0.1:33117/[870001-870002]" -o "log/34/dumpit87-#2.dump" > log/34/stdout87 2> log/34/stderr87 87: output (log/34/dumpit87-#2.dump) FAILED: --- log/34/check-expected 2025-07-18 09:40:35.431595917 +0000 +++ log/34/check-generated 2025-07-18 09:40:35.430610858 +0000 @@ -1,5 +0,0 @@ -HTTP/1.1 200 OK[CR][LF] -Funny-head: yesyes[CR][LF] -Content-Length: 16[CR][LF] -[CR][LF] -two is nice too[LF] == Contents of files in the log/34/ dir after test 87 === Start of file check-expected HTTP/1.1 200 OK[CR][LF] Funny-head: yesyes[CR][LF] Content-Length: 16[CR][LF] [CR][LF] two is nice too[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind87 ../src/curl -q --include --trace-ascii log/34/trace87 --trace-config all --trace-time "http://127.0.0.1:33117/[870001-870002]" -o "log/34/dumpit87-#2.dump" > log/34/stdout87 2> log/34/stderr87 === End of file commands.log === Start of file http_server.log 09:40:34.064975 ====> Client connect 09:40:34.065294 accept_connection 3 returned 4 09:40:34.065613 accept_connection 3 returned 0 09:40:34.066618 Read 93 bytes 09:40:34.066912 Process 93 bytes request 09:40:34.067002 Got request: GET /verifiedserver HTTP/1.1 09:40:34.067086 Are-we-friendly question received 09:40:34.067595 Wrote request (93 bytes) input to log/34/server.input 09:40:34.067822 Identifying ourselves as friends 09:40:34.068507 Response sent (56 bytes) and written to log/34/server.response 09:40:34.071653 special request received, no persistency 09:40:34.071796 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33117... * Connected to 127.0.0.1 (127.0.0.1) port 33117 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33117 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73777 === End of file http_verify.out === Start of file server.cmd Testnum 87 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73777 === End of file server.response === Start of file valgrind87 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind87 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/49/server/ftp_server.pid" --logfile "log/49/ftp_server.log" --logdir "log/49" --portfile "log/49/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 34533 (log/49/server/ftp_server.port) RUN: FTP server is PID 77434 port 34533 * pid ftp => 77434 77434 test 0109...[FTP PASV upload append] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind109 ../src/curl -q --output log/49/curl109.out --include --trace-ascii log/49/trace109 --trace-config all --trace-time ftp://127.0.0.1:34533/109 -T log/49/upload109 --append > log/49/stdout109 2> log/49/stderr109 109: protocol FAILED! There was no content at all in the file log/49/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/49/ dir after test 109 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind109 ../src/curl -q --output log/49/curl109.out --include --trace-ascii log/49/trace109 --trace-config all --trace-time ftp://127.0.0.1:34533/109 -T log/49/upload109 --append > log/49/stdout109 2> log/49/stderr109 === End of file commands.log === Start of file ftp_server.log 09:40:34.186061 FTP server listens on port IPv4/34533 09:40:34.187161 logged pid 77434 in log/49/server/ftp_server.pid 09:40:34.187456 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.436649 Running IPv4 version 09:40:34.437295 Listening on port 34533 09:40:34.437924 Wrote pid 78153 to log/49/server/ftp_sockctrl.pid 09:40:34.438288 Wrote port 34533 to log/49/server/ftp_server.port 09:40:34.438797 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 109 === End of file server.cmd === Start of file upload109 Moooooooooooo upload this === End of file upload109 === Start of file valgrind109 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind109 test 0077...[HTTP with -z "older date"] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind77 ../src/curl -q --output log/19/curl77.out --include --trace-ascii log/19/trace77 --trace-config all --trace-time http://1CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind111 ../src/curl -q --output log/41/curl111.out --include --trace-ascii log/41/trace111 --trace-config all --trace-time ftp://127.0.0.1:41781/111 -C 2000 > log/41/stdout111 2> log/41/stderr111 27.0.0.1:35697/77 -z "dec 12 12:00:00 1999 GMT" > log/19/stdout77 2> log/19/stderr77 77: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 77 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind77 ../src/curl -q --output log/19/curl77.out --include --trace-ascii log/19/trace77 --trace-config all --trace-time http://127.0.0.1:35697/77 -z "dec 12 12:00:00 1999 GMT" > log/19/stdout77 2> log/19/stderr77 === End of file commands.log === Start of file http_server.log 09:40:34.187972 ====> Client connect 09:40:34.188300 accept_connection 3 returned 4 09:40:34.188633 accept_connection 3 returned 0 09:40:34.188815 Read 93 bytes 09:40:34.188937 Process 93 bytes request 09:40:34.189047 Got request: GET /verifiedserver HTTP/1.1 09:40:34.189148 Are-we-friendly question received 09:40:34.189540 Wrote request (93 bytes) input to log/19/server.input 09:40:34.189847 Identifying ourselves as friends 09:40:34.190939 Response sent (56 bytes) and written to log/19/server.response 09:40:34.191051 special request received, no persistency 09:40:34.191116 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35697... * Connected to 127.0.0.1 (127.0.0.1) port 35697 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35697 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73791 === End of file http_verify.out === Start of file server.cmd Testnum 77 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73791 === End of file server.response === Start of file valgrind77 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind77 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/28/server/ftp_server.pid" --logfile "log/28/ftp_server.log" --logdir "log/28" --portfile "log/28/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 34373 (log/28/server/ftp_server.port) RUN: FTP server is PID 77437 port 34373 * pid ftp => 77437 77437 test 0114...[FTP download, failed login: PASS not valid] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind114 ../src/curl -q --output log/28/curl114.out --include --trace-ascii log/28/trace114 --trace-config all --trace-time ftp://127.0.0.1:34373/114 > log/28/stdout114 2> log/28/stderr114 114: protocol FAILED! There was no content at all in the file log/28/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/28/ dir after test 114 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind114 ../src/curl -q --output log/28/curl114.out --include --trace-ascii log/28/trace114 --trace-config all --trace-time ftp://127.0.0.1:34373/114 > log/28/stdout114 2> log/28/stderr114 === End of file commands.log === Start of file ftp_server.log 09:40:33.927231 FTP server listens on port IPv4/34373 09:40:33.928222 logged pid 77437 in log/28/server/ftp_server.pid 09:40:33.928481 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:33.178031 Running IPv4 version 09:40:33.178990 Listening on port 34373 09:40:33.179538 Wrote pid 77903 to log/28/server/ftp_sockctrl.pid 09:40:33.179932 Wrote port 34373 to log/28/server/ftp_server.port 09:40:33.180129 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY PASS 314 bluah you f00l Testnum 114 === End of file server.cmd === Start of file valgrind114 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind114 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/41/server/ftp_server.pid" --logfile "log/41/ftp_server.log" --logdir "log/41" --portfile "log/41/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41781 (log/41/server/ftp_server.port) RUN: FTP server is PID 77417 port 41781 * pid ftp => 77417 77417 test 0111...[FTP download resume beyond file size] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind111 ../src/curl -q --output log/41/curl111.out --include --trace-ascii log/41/trace111 --trace-config all --trace-time ftp://127.0.0.1:41781/111 -C 2000 > log/41/stdout111 2> log/41/stderr111 111: protocol FAILED! There was no content at all in the file log/41/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/41/ dir after test 111 === Start of file commands.loCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind115 ../src/curl -q --output log/24/curl115.out --include --trace-ascii log/24/trace115 --trace-config all --trace-time ftp://127.0.0.1:37935/115 > log/24/stdout115 2> log/24/stderr115 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind113 ../src/curl -q --output log/30/curl113.out --include --trace-ascii log/30/trace113 --trace-config all --trace-time ftp://127.0.0.1:42901/113 > log/30/stdout113 2> log/30/stderr113 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind106 ../src/curl -q --output log/1/curl106.out --include --trace-ascii log/1/trace106 --trace-config all --trace-time "ftp://127.0.0.1:33417//path%20with%20%20spaces//and%20things2/106;type=A" > log/1/stdout106 2> log/1/stderr106 g ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind111 ../src/curl -q --output log/41/curl111.out --include --trace-ascii log/41/trace111 --trace-config all --trace-time ftp://127.0.0.1:41781/111 -C 2000 > log/41/stdout111 2> log/41/stderr111 === End of file commands.log === Start of file ftp_server.log 09:40:33.975155 FTP server listens on port IPv4/41781 09:40:33.976568 logged pid 77417 in log/41/server/ftp_server.pid 09:40:33.977072 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:33.218121 Running IPv4 version 09:40:33.219245 Listening on port 41781 09:40:33.223365 Wrote pid 77922 to log/41/server/ftp_sockctrl.pid 09:40:33.224313 Wrote port 41781 to log/41/server/ftp_server.port 09:40:33.224720 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 111 === End of file server.cmd === Start of file valgrind111 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind111 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/24/server/ftp_server.pid" --logfile "log/24/ftp_server.log" --logdir "log/24" --portfile "log/24/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 37935 (log/24/server/ftp_server.port) RUN: FTP server is PID 77469 port 37935 * pid ftp => 77469 77469 test 0115...[FTP download, failed PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind115 ../src/curl -q --output log/24/curl115.out --include --trace-ascii log/24/trace115 --trace-config all --trace-time ftp://127.0.0.1:37935/115 > log/24/stdout115 2> log/24/stderr115 115: protocol FAILED! There was no content at all in the file log/24/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/24/ dir after test 115 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind115 ../src/curl -q --output log/24/curl115.out --include --trace-ascii log/24/trace115 --trace-config all --trace-time ftp://127.0.0.1:37935/115 > log/24/stdout115 2> log/24/stderr115 === End of file commands.log === Start of file ftp_server.log 09:40:34.254284 FTP server listens on port IPv4/37935 09:40:34.255221 logged pid 77469 in log/24/server/ftp_server.pid 09:40:34.255494 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.499134 Running IPv4 version 09:40:34.499956 Listening on port 37935 09:40:34.504242 Wrote pid 78221 to log/24/server/ftp_sockctrl.pid 09:40:34.506989 Wrote port 37935 to log/24/server/ftp_server.port 09:40:34.507169 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY PASV 314 bluah you f00l REPLY EPSV 314 bluah you f00l Testnum 115 === End of file server.cmd === Start of file valgrind115 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind115 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/1/server/ftp_server.pid" --logfile "log/1/ftp_server.log" --logdir "log/1" --portfile "log/1/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 33417 (log/1/server/ftp_server.port) RUN: FTP server is PID 77379 port 33417 * pid ftp => 77379 77379 test 0106...[FTP GET with type=A style ASCII URL using %20 codes] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind106 ../src/curl -q --output log/1/curl106.out --include --trace-ascii log/1/trace106 --trace-config all --trace-time "ftp://127.0.0.1:33417//path%20with%20%20spaces//and%20things2/106;type=A" > log/1/stdout106 2> log/1/stderr106 106: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 106 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind106 ../src/curl -q --output log/1/curl106.out --include --trace-ascii log/1/trace106 --trace-config all --trace-time "ftp://127.0.0.1:33417//path%20with%20%20spaces//and%20things2/106;type=A" > log/1/stdout106 2> log/1/stderr106 === End of file commands.log === Start of file ftp_server.log 09:40:33.936278 FTP server listens on port IPv4/33417 09:40:33.937224 logged pid 77379 in log/1/server/ftp_server.pid 09:40:33.937496 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:33.187773 Running IPv4 version 09:40:33.188326 Listening on port 33417 09:40:33.188828 Wrote pid 77905 to log/1/server/ftp_sockctrl.pid 09:40:33.189155 Wrote port 33417 to log/1/server/ftp_server.port 09:40:33.189318 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd TCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind104 ../src/curl -q --output log/3/curl104.out --include --trace-ascii log/3/trace104 --trace-config all --trace-time ftp://127.0.0.1:42255/a/path/104 --head > log/3/stdout104 2> log/3/stderr104 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind110 ../src/curl -q --output log/44/curl110.out --include --trace-ascii log/44/trace110 --trace-config all --trace-time ftp://127.0.0.1:41125/110 -C 20 > log/44/stdout110 2> log/44/stderr110 estnum 106 === End of file server.cmd === Start of file valgrind106 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind106 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/30/server/ftp_server.pid" --logfile "log/30/ftp_server.log" --logdir "log/30" --portfile "log/30/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 42901 (log/30/server/ftp_server.port) RUN: FTP server is PID 77429 port 42901 * pid ftp => 77429 77429 test 0113...[FTP download, failed login: USER not valid] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind113 ../src/curl -q --output log/30/curl113.out --include --trace-ascii log/30/trace113 --trace-config all --trace-time ftp://127.0.0.1:42901/113 > log/30/stdout113 2> log/30/stderr113 113: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 113 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind113 ../src/curl -q --output log/30/curl113.out --include --trace-ascii log/30/trace113 --trace-config all --trace-time ftp://127.0.0.1:42901/113 > log/30/stdout113 2> log/30/stderr113 === End of file commands.log === Start of file ftp_server.log 09:40:33.891324 FTP server listens on port IPv4/42901 09:40:33.892239 logged pid 77429 in log/30/server/ftp_server.pid 09:40:33.892546 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:33.138613 Running IPv4 version 09:40:33.139186 Listening on port 42901 09:40:33.141746 Wrote pid 77868 to log/30/server/ftp_sockctrl.pid 09:40:33.142126 Wrote port 42901 to log/30/server/ftp_server.port 09:40:33.142300 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY USER 314 bluah you fewl Testnum 113 === End of file server.cmd === Start of file valgrind113 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind113 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/3/server/ftp_server.pid" --logfile "log/3/ftp_server.log" --logdir "log/3" --portfile "log/3/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 42255 (log/3/server/ftp_server.port) RUN: FTP server is PID 77381 port 42255 * pid ftp => 77381 77381 test 0104...[FTP --head to get file size only] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind104 ../src/curl -q --output log/3/curl104.out --include --trace-ascii log/3/trace104 --trace-config all --trace-time ftp://127.0.0.1:42255/a/path/104 --head > log/3/stdout104 2> log/3/stderr104 104: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 104 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind104 ../src/curl -q --output log/3/curl104.out --include --trace-ascii log/3/trace104 --trace-config all --trace-time ftp://127.0.0.1:42255/a/path/104 --head > log/3/stdout104 2> log/3/stderr104 === End of file commands.log === Start of file ftp_server.log 09:40:34.208204 FTP server listens on port IPv4/42255 09:40:34.209382 logged pid 77381 in log/3/server/ftp_server.pid 09:40:34.209678 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.458532 Running IPv4 version 09:40:34.459013 Listening on port 42255 09:40:34.459359 Wrote pid 78183 to log/3/server/ftp_sockctrl.pid 09:40:34.459750 Wrote port 42255 to log/3/server/ftp_server.port 09:40:34.461178 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 104 === End of file server.cmd === Start of file valgrind104 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind119 ../src/curl -q --output log/11/curl119.out --include --trace-ascii log/11/trace119 --trace-config all --trace-time ftp://127.0.0.1:39847/119 -P - > log/11/stdout119 2> log/11/stderr119 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind116 ../src/curl -q --output log/23/curl116.out --include --trace-ascii log/23/trace116 --trace-config all --trace-time ftp://127.0.0.1:35595/116 -P 1.2.3.4 > log/23/stdout116 2> log/23/stderr116 On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind104 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/44/server/ftp_server.pid" --logfile "log/44/ftp_server.log" --logdir "log/44" --portfile "log/44/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41125 (log/44/server/ftp_server.port) RUN: FTP server is PID 77468 port 41125 * pid ftp => 77468 77468 test 0110...[FTP download resume with set limit] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind110 ../src/curl -q --output log/44/curl110.out --include --trace-ascii log/44/trace110 --trace-config all --trace-time ftp://127.0.0.1:41125/110 -C 20 > log/44/stdout110 2> log/44/stderr110 110: protocol FAILED! There was no content at all in the file log/44/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/44/ dir after test 110 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind110 ../src/curl -q --output log/44/curl110.out --include --trace-ascii log/44/trace110 --trace-config all --trace-time ftp://127.0.0.1:41125/110 -C 20 > log/44/stdout110 2> log/44/stderr110 === End of file commands.log === Start of file ftp_server.log 09:40:34.345059 FTP server listens on port IPv4/41125 09:40:34.345971 logged pid 77468 in log/44/server/ftp_server.pid 09:40:34.346263 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.595600 Running IPv4 version 09:40:34.596136 Listening on port 41125 09:40:34.597317 Wrote pid 78370 to log/44/server/ftp_sockctrl.pid 09:40:34.597932 Wrote port 41125 to log/44/server/ftp_server.port 09:40:34.598093 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY EPSV 500 no such command Testnum 110 === End of file server.cmd === Start of file valgrind110 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind110 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/11/server/ftp_server.pid" --logfile "log/11/ftp_server.log" --logdir "log/11" --portfile "log/11/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 39847 (log/11/server/ftp_server.port) RUN: FTP server is PID 77498 port 39847 * pid ftp => 77498 77498 test 0119...[FTP download, failed RETR with PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind119 ../src/curl -q --output log/11/curl119.out --include --trace-ascii log/11/trace119 --trace-config all --trace-time ftp://127.0.0.1:39847/119 -P - > log/11/stdout119 2> log/11/stderr119 119: protocol FAILED! There was no content at all in the file log/11/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/11/ dir after test 119 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind119 ../src/curl -q --output log/11/curl119.out --include --trace-ascii log/11/trace119 --trace-config all --trace-time ftp://127.0.0.1:39847/119 -P - > log/11/stdout119 2> log/11/stderr119 === End of file commands.log === Start of file ftp_server.log 09:40:34.245133 FTP server listens on port IPv4/39847 09:40:34.247354 logged pid 77498 in log/11/server/ftp_server.pid 09:40:34.247668 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.496137 Running IPv4 version 09:40:34.496849 Listening on port 39847 09:40:34.497246 Wrote pid 78224 to log/11/server/ftp_sockctrl.pid 09:40:34.497867 Wrote port 39847 to log/11/server/ftp_server.port 09:40:34.498055 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY RETR 314 bluah you f00l REPLY SIZE 500 command not understood Testnum 119 === End of file server.cmd === Start of file valgrind119 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind119 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/23/server/ftp_server.pid" --logfile "log/23/ftp_server.log" --logdir "log/23" --portfile "log/23/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 35595 (log/23/server/ftp_server.port) RUN: FTP server is PID 77500 port 35595 * pid ftp => 77500 77500 test 0116...[FTP download, failed PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind125 ../src/curl -q --output log/53/curl125.out --include --trace-ascii log/53/trace125 --trace-config all --trace-time ftp://127.0.0.1:42281/path/to/file/125 > log/53/stdout125 2> log/53/stderr125 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind101 ../src/curl -q --output log/9/curl101.out --include --trace-ascii log/9/trace101 --trace-config all --trace-time ftp://127.0.0.1:36293/ -P 127.0.0.1 > log/9/stdout101 2> log/9/stderr101 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind102 ../src/curl -q --output log/5/curl102.out --include --trace-ascii log/5/trace102 --trace-config all --trace-time ftp://127.0.0.1:42831/102 > log/5/stdout102 2> log/5/stderr102 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind103 ../src/curl -q --output log/4/curl103.out --include --trace-ascii log/4/trace103 --trace-config all --trace-time ftp://127.0.0.1:39979/a/path/103 -P - > log/4/stdout103 2> log/4/stderr103 ests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind116 ../src/curl -q --output log/23/curl116.out --include --trace-ascii log/23/trace116 --trace-config all --trace-time ftp://127.0.0.1:35595/116 -P 1.2.3.4 > log/23/stdout116 2> log/23/stderr116 116: protocol FAILED! There was no content at all in the file log/23/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/23/ dir after test 116 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind116 ../src/curl -q --output log/23/curl116.out --include --trace-ascii log/23/trace116 --trace-config all --trace-time ftp://127.0.0.1:35595/116 -P 1.2.3.4 > log/23/stdout116 2> log/23/stderr116 === End of file commands.log === Start of file ftp_server.log 09:40:34.326985 FTP server listens on port IPv4/35595 09:40:34.329846 logged pid 77500 in log/23/server/ftp_server.pid 09:40:34.330185 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.578026 Running IPv4 version 09:40:34.578622 Listening on port 35595 09:40:34.579055 Wrote pid 78327 to log/23/server/ftp_sockctrl.pid 09:40:34.579367 Wrote port 35595 to log/23/server/ftp_server.port 09:40:34.579675 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY EPRT 500 we don't like EPRT now REPLY PORT 314 bluah you f00l Testnum 116 === End of file server.cmd === Start of file valgrind116 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind116 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/9/server/ftp_server.pid" --logfile "log/9/ftp_server.log" --logdir "log/9" --portfile "log/9/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 36293 (log/9/server/ftp_server.port) RUN: FTP server is PID 77386 port 36293 * pid ftp => 77386 77386 test 0101...[FTP dir list, PORT with specified IP] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind101 ../src/curl -q --output log/9/curl101.out --include --trace-ascii log/9/trace101 --trace-config all --trace-time ftp://127.0.0.1:36293/ -P 127.0.0.1 > log/9/stdout101 2> log/9/stderr101 101: protocol FAILED! There was no content at all in the file log/9/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/9/ dir after test 101 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind101 ../src/curl -q --output log/9/curl101.out --include --trace-ascii log/9/trace101 --trace-config all --trace-time ftp://127.0.0.1:36293/ -P 127.0.0.1 > log/9/stdout101 2> log/9/stderr101 === End of file commands.log === Start of file ftp_server.log 09:40:33.948392 FTP server listens on port IPv4/36293 09:40:33.949323 logged pid 77386 in log/9/server/ftp_server.pid 09:40:33.949586 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:33.199628 Running IPv4 version 09:40:33.200272 Listening on port 36293 09:40:33.200778 Wrote pid 77913 to log/9/server/ftp_sockctrl.pid 09:40:33.201110 Wrote port 36293 to log/9/server/ftp_server.port 09:40:33.201273 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 101 === End of file server.cmd === Start of file valgrind101 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind101 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/53/server/ftp_server.pid" --logfile "log/53/ftp_server.log" --logdir "log/53" --portfile "log/53/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 42281 (log/53/server/ftp_server.port) RUN: FTP server is PID 77508 port 42281 * pid ftp => 77508 77508 test 0125...[FTP download, failed CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind125 ../src/curl -q --output log/53/curl125.out --include --trace-ascii log/53/trace125 --trace-config all --trace-time ftp://127.0.0.1:42281/path/to/file/125 > log/53/stdout125 2> log/53/stderr125 125: protocol FAILED! There was no content at all in the file log/53/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/53/ dir after test 125 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind125 ../src/curl -q --output log/53/curl125.out --include --trace-ascii log/53/trace125 --trace-config all --trace-time ftp://127.0.0.1:42281/path/to/file/125 > log/53/stdout125 2> log/53/stderr125 === End of file commands.log === Start of file ftp_server.log 09:40:34.102849 FTP server listens on port IPv4/42281 09:40:34.103735 logged pid 77508 in log/53/server/ftp_server.piCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind128 ../src/curl -q --output log/51/curl128.out --include --trace-ascii log/51/trace128 --trace-config all --trace-time ftp://127.0.0.1:42737/128 -T log/51/upload128 --crlf > log/51/stdout128 2> log/51/stderr128 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind127 ../src/curl -q --output log/48/curl127.out --include --trace-ascii log/48/trace127 --trace-config all --trace-time ftp://127.0.0.1:39061/path/to/file/127 --disable-epsv > log/48/stdout127 2> log/48/stderr127 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind105 ../src/curl -q --output log/2/curl105.out --include --trace-ascii log/2/trace105 --trace-config all --trace-time ftp://userdude:passfellow@127.0.0.1:36419/105 --use-ascii > log/2/stdout105 2> log/2/stderr105 d 09:40:34.104076 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.353937 Running IPv4 version 09:40:34.354832 Listening on port 42281 09:40:34.355254 Wrote pid 78038 to log/53/server/ftp_sockctrl.pid 09:40:34.355687 Wrote port 42281 to log/53/server/ftp_server.port 09:40:34.355858 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY CWD 314 bluah you f00l Testnum 125 === End of file server.cmd === Start of file valgrind125 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind125 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/4/server/ftp_server.pid" --logfile "log/4/ftp_server.log" --logdir "log/4" --portfile "log/4/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 39979 (log/4/server/ftp_server.port) RUN: FTP server is PID 77399 port 39979 * pid ftp => 77399 77399 test 0103...[FTP RETR PORT with CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind103 ../src/curl -q --output log/4/curl103.out --include --trace-ascii log/4/trace103 --trace-config all --trace-time ftp://127.0.0.1:39979/a/path/103 -P - > log/4/stdout103 2> log/4/stderr103 103: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 103 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind103 ../src/curl -q --output log/4/curl103.out --include --trace-ascii log/4/trace103 --trace-config all --trace-time ftp://127.0.0.1:39979/a/path/103 -P - > log/4/stdout103 2> log/4/stderr103 === End of file commands.log === Start of file ftp_server.log 09:40:34.326433 FTP server listens on port IPv4/39979 09:40:34.327373 logged pid 77399 in log/4/server/ftp_server.pid 09:40:34.327635 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.577738 Running IPv4 version 09:40:34.578377 Listening on port 39979 09:40:34.578889 Wrote pid 78345 to log/4/server/ftp_sockctrl.pid 09:40:34.579231 Wrote port 39979 to log/4/server/ftp_server.port 09:40:34.579387 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 103 === End of file server.cmd === Start of file valgrind103 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind103 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/5/server/ftp_server.pid" --logfile "log/5/ftp_server.log" --logdir "log/5" --portfile "log/5/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 42831 (log/5/server/ftp_server.port) RUN: FTP server is PID 77456 port 42831 * pid ftp => 77456 77456 test 0102...[FTP RETR PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind102 ../src/curl -q --output log/5/curl102.out --include --trace-ascii log/5/trace102 --trace-config all --trace-time ftp://127.0.0.1:42831/102 > log/5/stdout102 2> log/5/stderr102 102: protocol FAILED! There was no content at all in the file log/5/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/5/ dir after test 102 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind102 ../src/curl -q --output log/5/curl102.out --include --trace-ascii log/5/trace102 --trace-config all --trace-time ftp://127.0.0.1:42831/102 > log/5/stdout102 2> log/5/stderr102 === End of file commands.log === Start of file ftp_server.log 09:40:34.013272 FTP server listens on port IPv4/42831 09:40:34.014562 logged pid 77456 in log/5/server/ftp_server.pid 09:40:34.014912 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.262097 Running IPv4 version 09:40:34.262730 Listening on port 42831 09:40:34.263275 Wrote pid 77958 to log/5/server/ftp_sockctrl.pid 09:40:34.263742 Wrote port 42831 to log/5/server/ftp_server.port 09:40:34.263958 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY EPSV 500 no such command Testnum 102 === End of file server.cmd === Start of file valgrind102 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longeCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind83 ../src/curl -q --output log/38/curl83.out --include --trace-ascii log/38/trace83 --trace-config all --trace-time http://test.83:33511/we/want/that/page/83 -p -x 127.0.0.1:34063 --user 'iam:my:;self' > log/38/stdout83 2> log/38/stderr83 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind121 ../src/curl -q --output log/52/curl121.out --include --trace-ascii log/52/trace121 --trace-config all --trace-time ftp://127.0.0.1:42589/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/52/stdout121 2> log/52/stderr121 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind117 ../src/curl -q --output log/22/curl117.out --include --trace-ascii log/22/trace117 --trace-config all --trace-time ftp://127.0.0.1:41867/117 > log/22/stdout117 2> log/22/stderr117 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind108 ../src/curl -q --output log/56/curl108.out --include --trace-ascii log/56/trace108 --trace-config all --trace-time ftp://127.0.0.1:36539/CWD/STOR/RETR/108 -T log/56/upload108 -P - > log/56/stdout108 2> log/56/stderr108 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind126 ../src/curl -q --output log/7/curl126.out --include --trace-ascii log/7/trace126 --trace-config all --trace-time ftp://127.0.0.1:41691/blalbla/lululul/126 > log/7/stdout126 2> log/7/stderr126 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind118 ../src/curl -q --output log/12/curl118.out --include --trace-ascii log/12/trace118 --trace-config all --trace-time ftp://127.0.0.1:32959/118 > log/12/stdout118 2> log/12/stderr118 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind107 ../src/curl -q --output log/63/curl107.out --include --trace-ascii log/63/trace107 --trace-config all --trace-time ftp://127.0.0.1:33267/107 -T log/63/test107.txt > log/63/stdout107 2> log/63/stderr107 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind85 ../src/curl -q --output log/36/curl85.out --include --trace-ascii log/36/trace85 --trace-config all --trace-time http://127.0.0.1:44255/we/want/that/page/85 -x 127.0.0.1:44255 --user iam:myself --proxy-user testing:this > log/36/stdout85 2> log/36/stderr85 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind122 ../src/curl -q --output log/47/curl122.out --include --trace-ascii log/47/trace122 --trace-config all --trace-time ftp://127.0.0.1:45575/122 -C 5 > log/47/stdout122 2> log/47/stderr122 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind124 ../src/curl -q --output log/55/curl124.out --include --trace-ascii log/55/trace124 --trace-config all --trace-time ftp://127.0.0.1:40139/124 > log/55/stdout124 2> log/55/stderr124 r term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind102 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/51/server/ftp_server.pid" --logfile "log/51/ftp_server.log" --logdir "log/51" --portfile "log/51/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 42737 (log/51/server/ftp_server.port) RUN: FTP server is PID 77543 port 42737 * pid ftp => 77543 77543 test 0128...[FTP upload with --crlf] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind128 ../src/curl -q --output log/51/curl128.out --include --trace-ascii log/51/trace128 --trace-config all --trace-time ftp://127.0.0.1:42737/128 -T log/51/upload128 --crlf > log/51/stdout128 2> log/51/stderr128 128: protocol FAILED! There was no content at all in the file log/51/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/51/ dir after test 128 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind128 ../src/curl -q --output log/51/curl128.out --include --trace-ascii log/51/trace128 --trace-config all --trace-time ftp://127.0.0.1:42737/128 -T log/51/upload128 --crlf > log/51/stdout128 2> log/51/stderr128 === End of file commands.log === Start of file ftp_server.log 09:40:34.516223 FTP server listens on port IPv4/42737 09:40:34.517187 logged pid 77543 in log/51/server/ftp_server.pid 09:40:34.517443 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.761959 Running IPv4 version 09:40:34.762738 Listening on port 42737 09:40:34.763189 Wrote pid 78635 to log/51/server/ftp_sockctrl.pid 09:40:34.768926 Wrote port 42737 to log/51/server/ftp_server.port 09:40:34.769155 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 128 === End of file server.cmd === Start of file upload128 file with Unix newlines meant to be converted with the --crlf option === End of file upload128 === Start of file valgrind128 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind128 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/2/server/ftp_server.pid" --logfile "log/2/ftp_server.log" --logdir "log/2" --portfile "log/2/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 36419 (log/2/server/ftp_server.port) RUN: FTP server is PID 77416 port 36419 * pid ftp => 77416 77416 test 0105...[FTP user+password in URL and ASCII transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind105 ../src/curl -q --output log/2/curl105.out --include --trace-ascii log/2/trace105 --trace-config all --trace-time ftp://userdude:passfellow@127.0.0.1:36419/105 --use-ascii > log/2/stdout105 2> log/2/stderr105 105: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 105 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind105 ../src/curl -q --output log/2/curl105.out --include --trace-ascii log/2/trace105 --trace-config all --trace-time ftp://userdude:passfellow@127.0.0.1:36419/105 --use-ascii > log/2/stdout105 2> log/2/stderr105 === End of file commands.log === Start of file ftp_server.log 09:40:34.379047 FTP server listens on port IPv4/36419 09:40:34.380011 logged pid 77416 in log/2/server/ftp_server.pid 09:40:34.380296 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.630311 Running IPv4 version 09:40:34.630967 Listening on port 36419 09:40:34.631388 Wrote pid 78421 to log/2/server/ftp_sockctrl.pid 09:40:34.631919 Wrote port 36419 to log/2/server/ftp_server.port 09:40:34.632098 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY EPSV 500 no such command Testnum 105 === End of file server.cmd === Start of file valgrind105 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind105 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/48/server/ftp_server.pid" --logfile "log/48/ftp_server.log" --logdir "log/48" --portfile "log/48/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 39061 (log/48/server/ftp_server.port) RUN: FTP server is PID 77544 port 39061 * pid ftp => 77544 77544 test 0127...[FTP --disable-epsv] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind127 ../src/curl -q --output log/48/curl127.out --include --trace-ascii log/48/trace127 --trace-config all --trace-time ftp://127.0.0.1:39061/path/to/file/127 --disable-epsv > log/48/stdout127 2> log/48/stderr127 127: protocol FAILED! There was no content at all in the file log/48/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/48/ dir after test 127 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind127 ../src/curl -q --output log/48/curl127.out --include --trace-ascii log/48/trace127 --trace-config all --trace-time ftp://127.0.0.1:39061/path/to/file/127 --disable-epsv > log/48/stdout127 2> log/48/stderr127 === End of file commands.log === Start of file ftp_server.log 09:40:34.458334 FTP server listens on port IPv4/39061 09:40:34.459454 logged pid 77544 in log/48/server/ftp_server.pid 09:40:34.459820 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.708227 Running IPv4 version 09:40:34.708943 Listening on port 39061 09:40:34.709385 Wrote pid 78524 to log/48/server/ftp_sockctrl.pid 09:40:34.709843 Wrote port 39061 to log/48/server/ftp_server.port 09:40:34.709993 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 127 === End of file server.cmd === Start of file valgrind127 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind127 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/7/server/ftp_server.pid" --logfile "log/7/ftp_server.log" --logdir "log/7" --portfile "log/7/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41691 (log/7/server/ftp_server.port) RUN: FTP server is PID 77570 port 41691 * pid ftp => 77570 77570 test 0126...[FTP download with multiple replies at once in RETR] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind126 ../src/curl -q --output log/7/curl126.out --include --trace-ascii log/7/trace126 --trace-config all --trace-time ftp://127.0.0.1:41691/blalbla/lululul/126 > log/7/stdout126 2> log/7/stderr126 126: protocol FAILED! There was no content at all in the file log/7/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/7/ dir after test 126 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind126 ../src/curl -q --output log/7/curl126.out --include --trace-ascii log/7/trace126 --trace-config all --trace-time ftp://127.0.0.1:41691/blalbla/lululul/126 > log/7/stdout126 2> log/7/stderr126 === End of file commands.log === Start of file ftp_server.log 09:40:34.331496 FTP server listens on port IPv4/41691 09:40:34.332590 logged pid 77570 in log/7/server/ftp_server.pid 09:40:34.332959 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.582369 Running IPv4 version 09:40:34.583037 Listening on port 41691 09:40:34.583420 Wrote pid 78354 to log/7/server/ftp_sockctrl.pid 09:40:34.583857 Wrote port 41691 to log/7/server/ftp_server.port 09:40:34.584156 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd RETRWEIRDO Testnum 126 === End of file server.cmd === Start of file valgrind126 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind126 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/12/server/ftp_server.pid" --logfile "log/12/ftp_server.log" --logdir "log/12" --portfile "log/12/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 32959 (log/12/server/ftp_server.port) RUN: FTP server is PID 77501 port 32959 * pid ftp => 77501 77501 test 0118...[FTP download, failed RETR] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind118 ../src/curl -q --output log/12/curl118.out --include --trace-ascii log/12/trace118 --trace-config all --trace-time ftp://127.0.0.1:32959/118 > log/12/stdout118 2> log/12/stderr118 118: protocol FAILED! There was no content at all in the file log/12/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/12/ dir after test 118 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck -CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind130 ../src/curl -q --output log/58/curl130.out --include --trace-ascii log/58/trace130 --trace-config all --trace-time --netrc-optional --netrc-file log/58/netrc130 ftp://127.0.0.1:38901/ > log/58/stdout130 2> log/58/stderr130 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind132 ../src/curl -q --output log/64/curl132.out --include --trace-ascii log/64/trace132 --trace-config all --trace-time --netrc-optional --netrc-file log/64/netrc132 ftp://mary:mark@127.0.0.1:37199/ > log/64/stdout132 2> log/64/stderr132 -quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind118 ../src/curl -q --output log/12/curl118.out --include --trace-ascii log/12/trace118 --trace-config all --trace-time ftp://127.0.0.1:32959/118 > log/12/stdout118 2> log/12/stderr118 === End of file commands.log === Start of file ftp_server.log 09:40:34.307660 FTP server listens on port IPv4/32959 09:40:34.308885 logged pid 77501 in log/12/server/ftp_server.pid 09:40:34.309164 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.558046 Running IPv4 version 09:40:34.558653 Listening on port 32959 09:40:34.559043 Wrote pid 78311 to log/12/server/ftp_sockctrl.pid 09:40:34.559365 Wrote port 32959 to log/12/server/ftp_server.port 09:40:34.559598 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY RETR 314 bluah you f00l REPLY EPSV 314 bluah you f00l REPLY SIZE 500 command not understood Testnum 118 === End of file server.cmd === Start of file valgrind118 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind118 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/22/server/ftp_server.pid" --logfile "log/22/ftp_server.log" --logdir "log/22" --portfile "log/22/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41867 (log/22/server/ftp_server.port) RUN: FTP server is PID 77494 port 41867 * pid ftp => 77494 77494 test 0117...[FTP download, failed TYPE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind117 ../src/curl -q --output log/22/curl117.out --include --trace-ascii log/22/trace117 --trace-config all --trace-time ftp://127.0.0.1:41867/117 > log/22/stdout117 2> log/22/stderr117 117: protocol FAILED! There was no content at all in the file log/22/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/22/ dir after test 117 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind117 ../src/curl -q --output log/22/curl117.out --include --trace-ascii log/22/trace117 --trace-config all --trace-time ftp://127.0.0.1:41867/117 > log/22/stdout117 2> log/22/stderr117 === End of file commands.log === Start of file ftp_server.log 09:40:34.304368 FTP server listens on port IPv4/41867 09:40:34.305296 logged pid 77494 in log/22/server/ftp_server.pid 09:40:34.305559 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.554925 Running IPv4 version 09:40:34.556368 Listening on port 41867 09:40:34.556917 Wrote pid 78301 to log/22/server/ftp_sockctrl.pid 09:40:34.557295 Wrote port 41867 to log/22/server/ftp_server.port 09:40:34.557557 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY EPSV 314 bluah you f00l REPLY TYPE 314 bluah you f00l Testnum 117 === End of file server.cmd === Start of file valgrind117 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind117 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/36/server/http_server.pid" --logfile "log/36/http_server.log" --logdir "log/36" --portfile log/36/server/http_server.port --config log/36/server.cmd --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP server is on PID 77175 port 44255 * pid http => 77175 77175 test 0085...[HTTP over proxy with site and proxy authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind85 ../src/curl -q --output log/36/curl85.out --include --trace-ascii log/36/trace85 --trace-config all --trace-time http://127.0.0.1:44255/we/want/that/page/85 -x 127.0.0.1:44255 --user iam:myself --proxy-user testing:this > log/36/stdout85 2> log/36/stderr85 85: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 85 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind85 ../src/curl -q --output log/36/curl85.out --include --trace-ascii log/36/trace85 --trace-config all --trace-time http://127.0.0.1:44255/we/want/that/page/85 -x 127.0.0.1:44255 --user iam:myself --proxy-user testing:this > log/36/stdout85 2> log/36/stderr85 === End of file commands.log === Start of file http_server.log 09:40:33.939545 Running HTTP IPv4 version on port 44255 09:40:33.940274 Wrote pid 77175 to log/36/server/http_server.pid 09:40:33.940727 Wrote port 44255 to log/36/server/http_server.port === End of file http_server.log === Start of file server.cmd Testnum 85 === End of file server.cmd === Start of file valgrind85 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. DeCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind95 ../src/curl -q --output log/17/curl95.out --include --trace-ascii log/17/trace95 --trace-config all --trace-time http://test.95:44383/we/want/that/page/95 -p -x 127.0.0.1:46847 -d "datatopost=ohthatsfunyesyes" > log/17/stdout95 2> log/17/stderr95 tails of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind85 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/38/server/http2_server.pid" --logfile "log/38/http2_server.log" --logdir "log/38" --portfile log/38/server/http2_server.port --config log/38/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 77705 port 34063 * pid http-proxy => 77705 77705 test 0083...[HTTP over proxy-tunnel with site authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind83 ../src/curl -q --output log/38/curl83.out --include --trace-ascii log/38/trace83 --trace-config all --trace-time http://test.83:33511/we/want/that/page/83 -p -x 127.0.0.1:34063 --user 'iam:my:;self' > log/38/stdout83 2> log/38/stderr83 83: protocol FAILED! There was no content at all in the file log/38/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/38/ dir after test 83 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind83 ../src/curl -q --output log/38/curl83.out --include --trace-ascii log/38/trace83 --trace-config all --trace-time http://test.83:33511/we/want/that/page/83 -p -x 127.0.0.1:34063 --user 'iam:my:;self' > log/38/stdout83 2> log/38/stderr83 === End of file commands.log === Start of file http2_server.log 09:40:33.248062 Run as proxy, CONNECT to host 127.0.0.1 09:40:33.248878 Running HTTP IPv4 version on port 34063 09:40:33.249303 Wrote pid 77705 to log/38/server/http2_server.pid 09:40:33.249700 Wrote port 34063 to log/38/server/http2_server.port === End of file http2_server.log === Start of file http_server.log 09:40:33.904920 ====> Client connect 09:40:33.905254 accept_connection 3 returned 4 09:40:33.905415 accept_connection 3 returned 0 09:40:33.915646 Read 93 bytes 09:40:33.915796 Process 93 bytes request 09:40:33.915898 Got request: GET /verifiedserver HTTP/1.1 09:40:33.915990 Are-we-friendly question received 09:40:33.916249 Wrote request (93 bytes) input to log/38/server.input 09:40:33.916572 Identifying ourselves as friends 09:40:33.917364 Response sent (56 bytes) and written to log/38/server.response 09:40:33.917558 special request received, no persistency 09:40:33.917651 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33511... * Connected to 127.0.0.1 (127.0.0.1) port 33511 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33511 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73775 === End of file http_verify.out === Start of file server.cmd Testnum 83 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73775 === End of file server.response === Start of file valgrind83 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind83 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/47/server/ftp_server.pid" --logfile "log/47/ftp_server.log" --logdir "log/47" --portfile "log/47/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 45575 (log/47/server/ftp_server.port) RUN: FTP server is PID 77499 port 45575 * pid ftp => 77499 77499 test 0122...[FTP download resume with whole file already downloaded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind122 ../src/curl -q --output log/47/curl122.out --include --trace-ascii log/47/trace122 --trace-config all --trace-time ftp://127.0.0.1:45575/122 -C 5 > log/47/stdout122 2> log/47/stderr122 122: protocol FAILED! There was no content at all in the file log/47/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/47/ dir after test 122 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind122 ../src/curl -q --output log/47/curl122.out --include --trace-ascii log/47/trace122 --trace-config all --trace-time ftp://127.0.0.1:45575/122 -C 5 > log/47/stdout122 2> log/47/stderr122 === End of file commands.log === Start of file ftp_server.log 09:40:34.206610 FTP server listens on port IPv4/45575 09:40:34.207653 logged pid 77499 in log/47/server/ftp_server.pid 09:40:34.208056 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.458236 Running IPv4 version 09:40:34.458865 Listening on port 45575 09:40:34.459244 Wrote pid 78188 to log/47/server/ftp_sockctrl.pid 09:40:34.459641 Wrote port 45575 to log/47/server/ftp_server.port 09:40:34.459791 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY EPSV 500 no such command Testnum 122 === End of file server.cmd === Start of file valgrind122 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind122 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/52/server/ftp_server.pid" --logfile "log/52/ftp_server.log" --logdir "log/52" --portfile "log/52/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 42589 (log/52/server/ftp_server.port) RUN: FTP server is PID 77504 port 42589 * pid ftp => 77504 77504 test 0121...[ftp download with post- and pre-transfer delete operations] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind121 ../src/curl -q --output log/52/curl121.out --include --trace-ascii log/52/trace121 --trace-config all --trace-time ftp://127.0.0.1:42589/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/52/stdout121 2> log/52/stderr121 121: protocol FAILED! There was no content at all in the file log/52/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/52/ dir after test 121 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind121 ../src/curl -q --output log/52/curl121.out --include --trace-ascii log/52/trace121 --trace-config all --trace-time ftp://127.0.0.1:42589/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/52/stdout121 2> log/52/stderr121 === End of file commands.log === Start of file ftp_server.log 09:40:34.104241 FTP server listens on port IPv4/42589 09:40:34.106918 logged pid 77504 in log/52/server/ftp_server.pid 09:40:34.107538 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.351073 Running IPv4 version 09:40:34.351744 Listening on port 42589 09:40:34.352131 Wrote pid 78042 to log/52/server/ftp_sockctrl.pid 09:40:34.356636 Wrote port 42589 to log/52/server/ftp_server.port 09:40:34.356873 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 121 === End of file server.cmd === Start of file valgrind121 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind121 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/55/server/ftp_server.pid" --logfile "log/55/ftp_server.log" --logdir "log/55" --portfile "log/55/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 40139 (log/55/server/ftp_server.port) RUN: FTP server is PID 77586 port 40139 * pid ftp => 77586 77586 test 0124...[FTP download, failed PWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind124 ../src/curl -q --output log/55/curl124.out --include --trace-ascii log/55/trace124 --trace-config all --trace-time ftp://127.0.0.1:40139/124 > log/55/stdout124 2> log/55/stderr124 124: protocol FAILED! There was no content at all in the file log/55/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/55/ dir after test 124 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind124 ../src/curl -q --output log/55/curl124.out --include --trace-ascii log/55/trace124 --trace-config all --trace-time ftp://127.0.0.1:40139/124 > log/55/stdout124 2> log/55/stderr124 === End of file commands.log === Start of file ftp_server.log 09:40:34.067287 FTP server listens on port IPv4/40139 09:40:34.068262 logged pid 77586 in log/55/server/ftp_server.pid 09:40:34.068525 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.314877 Running IPv4 version 09:40:34.316598 Listening on port 40139 09:40:34.317031 Wrote pid 77998 to log/55/server/ftp_sockctrl.pid 09:40:34.317379 Wrote port 40139 to log/55/server/ftp_server.port 09:40:34.317655 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY PWD 314 bluah you f00l REPLY EPSV 314 bluah you f00l Testnum 124 === End of file server.cmd === Start of file valgrind124 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind124 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/56/server/ftp_server.pid" --logfile "log/56/ftp_server.log" --logdir "log/56" --portfile "log/56/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 36539 (log/56/server/ftp_server.port) RUN: FTP server is PID 77376 port 36539 * pid ftp => 77376 77376 test 0108...[FTP PORT upload with CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind108 ../src/curl -q --output log/56/curl108.out --include --trace-ascii log/56/trace108 --trace-config all --trace-time ftp://127.0.0.1:36539/CWD/STOR/RETR/108 -T log/56/upload108 -P - > log/56/stdout108 2> log/56/stderr108 108: protocol FAILED! There was no content at all in the file log/56/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/56/ dir after test 108 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind108 ../src/curl -q --output log/56/curl108.out --include --trace-ascii log/56/trace108 --trace-config all --trace-time ftp://127.0.0.1:36539/CWD/STOR/RETR/108 -T log/56/upload108 -P - > log/56/stdout108 2> log/56/stderr108 === End of file commands.log === Start of file ftp_server.log 09:40:34.230229 FTP server listens on port IPv4/36539 09:40:34.231275 logged pid 77376 in log/56/server/ftp_server.pid 09:40:34.231633 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.468179 Running IPv4 version 09:40:34.468829 Listening on port 36539 09:40:34.481601 Wrote pid 78179 to log/56/server/ftp_sockctrl.pid 09:40:34.482061 Wrote port 36539 to log/56/server/ftp_server.port 09:40:34.482296 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 108 === End of file server.cmd === Start of file upload108 Moooooooooooo upload this === End of file upload108 === Start of file valgrind108 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind108 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/63/server/ftp_server.pid" --logfile "log/63/ftp_server.log" --logdir "log/63" --portfile "log/63/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 33267 (log/63/server/ftp_server.port) RUN: FTP server is PID 77431 port 33267 * pid ftp => 77431 77431 test 0107...[FTP PASV upload file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind107 ../src/curl -q --output log/63/curl107.out --include --trace-ascii log/63/trace107 --trace-config all --trace-time ftp://127.0.0.1:33267/107 -T log/63/test107.txt > log/63/stdout107 2> log/63/stderr107 107: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 107 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind107 ../src/curl -q --output log/63/curl107.out --include --trace-ascii log/63/trace107 --trace-config all --trace-time ftp://127.0.0.1:33267/107 -T log/63/test107.txt > log/63/stdout107 2> log/63/stderr107 === End of file commands.log === Start of file ftp_server.log 09:40:34.184140 FTP server listens on port IPv4/33267 09:40:34.185136 logged pid 77431 in log/63/server/ftp_server.pid 09:40:34.185444 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.435242 Running IPv4 version 09:40:34.435950 Listening on port 33267 09:40:34.436383 Wrote pid 78151 to log/63/server/ftp_sockctrl.pid 09:40:34.436844 Wrote port 33267 to log/63/server/ftp_server.port 09:40:34.437025 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 107 === End of file server.cmd === Start of file test107.txt data to see that FTP works so does it? === End of file test107.txt === Start of file valgrind107 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind107 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/17/server/http2_server.pid" --logfile "log/17/http2_server.log" --logdir "log/17" --portfile log/17/server/http2_server.port --config log/17/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 77835 port 468CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind131 ../src/curl -q --output log/50/curl131.out --include --trace-ascii log/50/trace131 --trace-config all --trace-time --netrc-optional --netrc-file log/50/netrc131 ftp://user2@127.0.0.1:36567/ > log/50/stdout131 2> log/50/stderr131 47 * pid http-proxy => 77835 77835 test 0095...[HTTP over proxytunnel using POST] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind95 ../src/curl -q --output log/17/curl95.out --include --trace-ascii log/17/trace95 --trace-config all --trace-time http://test.95:44383/we/want/that/page/95 -p -x 127.0.0.1:46847 -d "datatopost=ohthatsfunyesyes" > log/17/stdout95 2> log/17/stderr95 95: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 95 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind95 ../src/curl -q --output log/17/curl95.out --include --trace-ascii log/17/trace95 --trace-config all --trace-time http://test.95:44383/we/want/that/page/95 -p -x 127.0.0.1:46847 -d "datatopost=ohthatsfunyesyes" > log/17/stdout95 2> log/17/stderr95 === End of file commands.log === Start of file http2_server.log 09:40:34.563855 Run as proxy, CONNECT to host 127.0.0.1 09:40:34.564896 Running HTTP IPv4 version on port 46847 09:40:34.565413 Wrote pid 77835 to log/17/server/http2_server.pid 09:40:34.566104 Wrote port 46847 to log/17/server/http2_server.port === End of file http2_server.log === Start of file http_server.log 09:40:34.053244 ====> Client connect 09:40:34.053734 accept_connection 3 returned 4 09:40:34.053946 accept_connection 3 returned 0 09:40:34.054695 Read 93 bytes 09:40:34.054845 Process 93 bytes request 09:40:34.054929 Got request: GET /verifiedserver HTTP/1.1 09:40:34.055002 Are-we-friendly question received 09:40:34.055224 Wrote request (93 bytes) input to log/17/server.input 09:40:34.055546 Identifying ourselves as friends 09:40:34.056145 Response sent (56 bytes) and written to log/17/server.response 09:40:34.056251 special request received, no persistency 09:40:34.056311 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44383... * Connected to 127.0.0.1 (127.0.0.1) port 44383 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44383 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73792 === End of file http_verify.out === Start of file server.cmd Testnum 95 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73792 === End of file server.response === Start of file valgrind95 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind95 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/58/server/ftp_server.pid" --logfile "log/58/ftp_server.log" --logdir "log/58" --portfile "log/58/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 38901 (log/58/server/ftp_server.port) RUN: FTP server is PID 77973 port 38901 * pid ftp => 77973 77973 test 0130...[FTP (optional .netrc; no user/pass) dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind130 ../src/curl -q --output log/58/curl130.out --include --trace-ascii log/58/trace130 --trace-config all --trace-time --netrc-optional --netrc-file log/58/netrc130 ftp://127.0.0.1:38901/ > log/58/stdout130 2> log/58/stderr130 130: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 130 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind130 ../src/curl -q --output log/58/curl130.out --include --trace-ascii log/58/trace130 --trace-config all --trace-time --netrc-optional --netrc-file log/58/netrc130 ftp://127.0.0.1:38901/ > log/58/stdout130 2> log/58/stderr130 === End of file commands.log === Start of file ftp_server.log 09:40:34.513111 FTP server listens on port IPv4/38901 09:40:34.514023 logged pid 77973 in log/58/server/ftp_server.pid 09:40:34.514296 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.763327 Running IPv4 version 09:40:34.763950 Listening on port 38901 09:40:34.764362 Wrote pid 78633 to log/58/server/ftp_sockctrl.pid 09:40:34.765860 Wrote port 38901 to log/58/server/ftp_server.port 09:40:34.766026 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file netrc130 # the following two lines were created while testing curl # machine 127.0.0.1 login user1 password commented machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 default login userdef password passwddef === End of file netrc130 === Start of file server.cmd Testnum 130 === End of file server.cmd === Start of file valgrind130 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind80 ../src/curl -q --output log/43/curl80.out --include --trace-ascii log/43/trace80 --trace-config all --trace-time http://test.80:41267/we/want/that/page/80 -p --proxy1.0 127.0.0.1:44417 --user iam:myself --proxy-user youare:yourself -A "" > log/43/stdout80 2> log/43/stderr80 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind137 ../src/curl -q --output log/54/curl137.out --include --trace-ascii log/54/trace137 --trace-config all --trace-time ftp://127.0.0.1:41829/blalbla/lululul/137 > log/54/stdout137 2> log/54/stderr137 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind133 ../src/curl -q --output log/45/curl133.out --include --trace-ascii log/45/trace133 --trace-config all --trace-time -n --netrc-file log/45/netrc133 ftp://mary:mark@127.0.0.1:41719/ > log/45/stdout133 2> log/45/stderr133 Sorry. === End of file valgrind130 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/64/server/ftp_server.pid" --logfile "log/64/ftp_server.log" --logdir "log/64" --portfile "log/64/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 37199 (log/64/server/ftp_server.port) RUN: FTP server is PID 78009 port 37199 * pid ftp => 78009 78009 test 0132...[FTP (optional .netrc; user/passwd supplied) dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind132 ../src/curl -q --output log/64/curl132.out --include --trace-ascii log/64/trace132 --trace-config all --trace-time --netrc-optional --netrc-file log/64/netrc132 ftp://mary:mark@127.0.0.1:37199/ > log/64/stdout132 2> log/64/stderr132 132: protocol FAILED! There was no content at all in the file log/64/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/64/ dir after test 132 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind132 ../src/curl -q --output log/64/curl132.out --include --trace-ascii log/64/trace132 --trace-config all --trace-time --netrc-optional --netrc-file log/64/netrc132 ftp://mary:mark@127.0.0.1:37199/ > log/64/stdout132 2> log/64/stderr132 === End of file commands.log === Start of file ftp_server.log 09:40:34.482064 FTP server listens on port IPv4/37199 09:40:34.483154 logged pid 78009 in log/64/server/ftp_server.pid 09:40:34.483438 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.733153 Running IPv4 version 09:40:34.733742 Listening on port 37199 09:40:34.734175 Wrote pid 78591 to log/64/server/ftp_sockctrl.pid 09:40:34.734682 Wrote port 37199 to log/64/server/ftp_server.port 09:40:34.734858 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file netrc132 # the following two lines were created while testing curl machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 === End of file netrc132 === Start of file server.cmd Testnum 132 === End of file server.cmd === Start of file valgrind132 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind132 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/50/server/ftp_server.pid" --logfile "log/50/ftp_server.log" --logdir "log/50" --portfile "log/50/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 36567 (log/50/server/ftp_server.port) RUN: FTP server is PID 77995 port 36567 * pid ftp => 77995 77995 test 0131...[FTP (optional .netrc; user/no pass) dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind131 ../src/curl -q --output log/50/curl131.out --include --trace-ascii log/50/trace131 --trace-config all --trace-time --netrc-optional --netrc-file log/50/netrc131 ftp://user2@127.0.0.1:36567/ > log/50/stdout131 2> log/50/stderr131 131: protocol FAILED! There was no content at all in the file log/50/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/50/ dir after test 131 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind131 ../src/curl -q --output log/50/curl131.out --include --trace-ascii log/50/trace131 --trace-config all --trace-time --netrc-optional --netrc-file log/50/netrc131 ftp://user2@127.0.0.1:36567/ > log/50/stdout131 2> log/50/stderr131 === End of file commands.log === Start of file ftp_server.log 09:40:34.656174 FTP server listens on port IPv4/36567 09:40:34.657203 logged pid 77995 in log/50/server/ftp_server.pid 09:40:34.657491 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.907590 Running IPv4 version 09:40:34.908146 Listening on port 36567 09:40:34.908658 Wrote pid 78857 to log/50/server/ftp_sockctrl.pid 09:40:34.908993 Wrote port 36567 to log/50/server/ftp_server.port 09:40:34.909158 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file netrc131 # the following two lines were created while testing curl machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 === End of file netrc131 === Start of file server.cmd Testnum 131 === End of file server.cmd === Start of file valgrind131 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind131 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/43/server/http2_server.pid" --logfile "log/43/http2_server.log" --logdir "log/43" --portfile log/43/server/http2_server.port --config log/43/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 77906 port 44417 * pid http-proxy => 77906 7790CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind135 ../src/curl -q --output log/62/curl135.out --include --trace-ascii log/62/trace135 --trace-config all --trace-time -r 4-16 ftp://127.0.0.1:38963/135 > log/62/stdout135 2> log/62/stderr135 6 test 0080...[HTTP 1.0 CONNECT with proxytunnel and proxy+host Basic authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind80 ../src/curl -q --output log/43/curl80.out --include --trace-ascii log/43/trace80 --trace-config all --trace-time http://test.80:41267/we/want/that/page/80 -p --proxy1.0 127.0.0.1:44417 --user iam:myself --proxy-user youare:yourself -A "" > log/43/stdout80 2> log/43/stderr80 80: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 80 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind80 ../src/curl -q --output log/43/curl80.out --include --trace-ascii log/43/trace80 --trace-config all --trace-time http://test.80:41267/we/want/that/page/80 -p --proxy1.0 127.0.0.1:44417 --user iam:myself --proxy-user youare:yourself -A "" > log/43/stdout80 2> log/43/stderr80 === End of file commands.log === Start of file http2_server.log 09:40:34.430755 Run as proxy, CONNECT to host 127.0.0.1 09:40:34.431544 Running HTTP IPv4 version on port 44417 09:40:34.431958 Wrote pid 77906 to log/43/server/http2_server.pid 09:40:34.432238 Wrote port 44417 to log/43/server/http2_server.port === End of file http2_server.log === Start of file http_server.log 09:40:34.146098 ====> Client connect 09:40:34.146781 accept_connection 3 returned 4 09:40:34.146973 accept_connection 3 returned 0 09:40:34.147125 Read 93 bytes 09:40:34.147233 Process 93 bytes request 09:40:34.147323 Got request: GET /verifiedserver HTTP/1.1 09:40:34.147407 Are-we-friendly question received 09:40:34.149927 Wrote request (93 bytes) input to log/43/server.input 09:40:34.150200 Identifying ourselves as friends 09:40:34.154046 Response sent (56 bytes) and written to log/43/server.response 09:40:34.154191 special request received, no persistency 09:40:34.154288 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd Testnum 80 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file valgrind80 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind80 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/54/server/ftp_server.pid" --logfile "log/54/ftp_server.log" --logdir "log/54" --portfile "log/54/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41829 (log/54/server/ftp_server.port) RUN: FTP server is PID 78730 port 41829 * pid ftp => 78730 78730 test 0137...[FTP download without size in RETR string] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind137 ../src/curl -q --output log/54/curl137.out --include --trace-ascii log/54/trace137 --trace-config all --trace-time ftp://127.0.0.1:41829/blalbla/lululul/137 > log/54/stdout137 2> log/54/stderr137 137: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 137 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind137 ../src/curl -q --output log/54/curl137.out --include --trace-ascii log/54/trace137 --trace-config all --trace-time ftp://127.0.0.1:41829/blalbla/lululul/137 > log/54/stdout137 2> log/54/stderr137 === End of file commands.log === Start of file ftp_server.log 09:40:35.467220 FTP server listens on port IPv4/41829 09:40:35.468958 logged pid 78730 in log/54/server/ftp_server.pid 09:40:35.469306 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.702862 Running IPv4 version 09:40:35.717679 Listening on port 41829 09:40:35.718110 Wrote pid 80269 to log/54/server/ftp_sockctrl.pid 09:40:35.718426 Wrote port 41829 to log/54/server/ftp_server.port 09:40:35.718719 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd RETRNOSIZE Testnum 137 === End of file server.cmd === Start of file valgrind137 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind137 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/45/server/ftp_server.pid" --logfile "log/45/ftp_server.log" --logdir "log/45" --portfile "log/45/server/ftp_server.CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind152 ../src/curl -q --output log/35/curl152.out --include --trace-ascii log/35/trace152 --trace-config all --trace-time http://127.0.0.1:43179/152 --fail > log/35/stdout152 2> log/35/stderr152 port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41719 (log/45/server/ftp_server.port) RUN: FTP server is PID 78026 port 41719 * pid ftp => 78026 78026 test 0133...[FTP compulsory .netrc; ignore passwd in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind133 ../src/curl -q --output log/45/curl133.out --include --trace-ascii log/45/trace133 --trace-config all --trace-time -n --netrc-file log/45/netrc133 ftp://mary:mark@127.0.0.1:41719/ > log/45/stdout133 2> log/45/stderr133 133: protocol FAILED! There was no content at all in the file log/45/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/45/ dir after test 133 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind133 ../src/curl -q --output log/45/curl133.out --include --trace-ascii log/45/trace133 --trace-config all --trace-time -n --netrc-file log/45/netrc133 ftp://mary:mark@127.0.0.1:41719/ > log/45/stdout133 2> log/45/stderr133 === End of file commands.log === Start of file ftp_server.log 09:40:34.478379 FTP server listens on port IPv4/41719 09:40:34.479356 logged pid 78026 in log/45/server/ftp_server.pid 09:40:34.479609 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.729028 Running IPv4 version 09:40:34.730398 Listening on port 41719 09:40:34.730971 Wrote pid 78588 to log/45/server/ftp_sockctrl.pid 09:40:34.731284 Wrote port 41719 to log/45/server/ftp_server.port 09:40:34.731536 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file netrc133 # the following two lines were created while testing curl machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login mary password drfrank === End of file netrc133 === Start of file server.cmd Testnum 133 === End of file server.cmd === Start of file valgrind133 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind133 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/62/server/ftp_server.pid" --logfile "log/62/ftp_server.log" --logdir "log/62" --portfile "log/62/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 38963 (log/62/server/ftp_server.port) RUN: FTP server is PID 78462 port 38963 * pid ftp => 78462 78462 test 0135...[FTP retrieve a byte-range] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind135 ../src/curl -q --output log/62/curl135.out --include --trace-ascii log/62/trace135 --trace-config all --trace-time -r 4-16 ftp://127.0.0.1:38963/135 > log/62/stdout135 2> log/62/stderr135 135: protocol FAILED! There was no content at all in the file log/62/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/62/ dir after test 135 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind135 ../src/curl -q --output log/62/curl135.out --include --trace-ascii log/62/trace135 --trace-config all --trace-time -r 4-16 ftp://127.0.0.1:38963/135 > log/62/stdout135 2> log/62/stderr135 === End of file commands.log === Start of file ftp_server.log 09:40:35.200079 FTP server listens on port IPv4/38963 09:40:35.201175 logged pid 78462 in log/62/server/ftp_server.pid 09:40:35.201446 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.447607 Running IPv4 version 09:40:35.451800 Listening on port 38963 09:40:35.452266 Wrote pid 79785 to log/62/server/ftp_sockctrl.pid 09:40:35.452765 Wrote port 38963 to log/62/server/ftp_server.port 09:40:35.452978 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 135 === End of file server.cmd === Start of file valgrind135 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind135 test 0152...[HTTP GET with an error code that might trick authentication and --fail] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind152 ../src/curl -q --output log/35/curl152.out --include --trace-ascii log/35/trace152 --trace-config all --trace-time http://127.0.0.1:43179/152 --fail > log/35/stdout152 2> log/35/stderr152 152: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 152 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind152 ../src/curl -q --output log/35/curl152.out --include --trace-ascii log/35/trace152 --trace-config all --trace-time http://127.0.0.1:43179/152 --fail > log/35/stdout152 2> log/35/stderCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind134 ../src/curl -q --output log/46/curl134.out --include --trace-ascii log/46/trace134 --trace-config all --trace-time --netrc-optional --netrc-file log/46/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:37853/ > log/46/stdout134 2> log/46/stderr134 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind138 ../src/curl -q --output log/21/curl138.out --include --trace-ascii log/21/trace138 --trace-config all --trace-time ftp://127.0.0.1:40295/blalbla/lululul/138 > log/21/stdout138 2> log/21/stderr138 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind151 ../src/curl -q --output log/37/curl151.out --include --trace-ascii log/37/trace151 --trace-config all --trace-time http://127.0.0.1:37551/151 > log/37/stdout151 2> log/37/stderr151 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind123 ../src/curl -q --output log/39/curl123.out --include --trace-ascii log/39/trace123 --trace-config all --trace-time ftp://127.0.0.1:35393/123 -T log/39/upload123 -C 51 > log/39/stdout123 2> log/39/stderr123 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind112 ../src/curl -q --output log/32/curl112.out --include --trace-ascii log/32/trace112 --trace-config all --trace-time ftp://127.0.0.1:42387/112 -T log/32/upload112 -C 40 > log/32/stdout112 2> log/32/stderr112 r152 === End of file commands.log === Start of file http_server.log 09:40:35.918235 ====> Client connect 09:40:35.918904 accept_connection 3 returned 4 09:40:35.919193 accept_connection 3 returned 0 09:40:35.919392 Read 93 bytes 09:40:35.924039 Process 93 bytes request 09:40:35.924152 Got request: GET /verifiedserver HTTP/1.1 09:40:35.924261 Are-we-friendly question received 09:40:35.924831 Wrote request (93 bytes) input to log/35/server.input 09:40:35.925013 Identifying ourselves as friends 09:40:35.929393 Response sent (56 bytes) and written to log/35/server.response 09:40:35.929696 special request received, no persistency 09:40:35.929807 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43179... * Connected to 127.0.0.1 (127.0.0.1) port 43179 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43179 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73771 === End of file http_verify.out === Start of file server.cmd Testnum 152 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73771 === End of file server.response === Start of file valgrind152 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind152 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/46/server/ftp_server.pid" --logfile "log/46/ftp_server.log" --logdir "log/46" --portfile "log/46/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 37853 (log/46/server/ftp_server.port) RUN: FTP server is PID 78258 port 37853 * pid ftp => 78258 78258 test 0134...[FTP (optional .netrc; programmatic user/passwd) dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind134 ../src/curl -q --output log/46/curl134.out --include --trace-ascii log/46/trace134 --trace-config all --trace-time --netrc-optional --netrc-file log/46/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:37853/ > log/46/stdout134 2> log/46/stderr134 134: protocol FAILED! There was no content at all in the file log/46/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/46/ dir after test 134 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind134 ../src/curl -q --output log/46/curl134.out --include --trace-ascii log/46/trace134 --trace-config all --trace-time --netrc-optional --netrc-file log/46/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:37853/ > log/46/stdout134 2> log/46/stderr134 === End of file commands.log === Start of file ftp_server.log 09:40:35.020187 FTP server listens on port IPv4/37853 09:40:35.021200 logged pid 78258 in log/46/server/ftp_server.pid 09:40:35.021843 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.270017 Running IPv4 version 09:40:35.272030 Listening on port 37853 09:40:35.272396 Wrote pid 79462 to log/46/server/ftp_sockctrl.pid 09:40:35.272874 Wrote port 37853 to log/46/server/ftp_server.port 09:40:35.273044 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file netrc134 # the following two lines were created while testing curl machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 === End of file netrc134 === Start of file server.cmd Testnum 134 === End of file server.cmd === Start of file valgrind134 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind134 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/21/server/ftp_server.pid" --logfile "log/21/ftp_server.log" --logdir "log/21" --portfile "log/21/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 40295 (log/21/server/ftp_server.port) RUN: FTP server is PID 78763 port 40295 * pid ftp => 78763 78763 test 0138...[FTP download without size in RETR string and no SIZE command] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind138 ../src/curl -q --output log/21/curl138.out --include --trace-ascii log/21/trace138 --trace-config all --trace-time ftp://127.0.0.1:40295/blalbla/lululul/138 > log/21/stdout138 2> log/21/stderr138 138: protocol FAILED! There was no content at all in the file log/21/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/21/ dir after test 138 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind138 ../src/curl -q --output log/21/curl138.out --include --trace-ascii log/21/trace138 --trace-config all --trace-time ftp://127.0.0.1:40295/blalbla/lululul/138 > log/21/stdout138 2> log/21/stderr138 === End of file commands.log === Start of file ftp_server.log 09:40:35.326318 FTP server listens on port IPv4/40295 09:40:35.327343 logged pid 78763 in log/21/server/ftp_server.pid 09:40:35.327621 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.573927 Running IPv4 version 09:40:35.577565 Listening on port 40295 09:40:35.578062 Wrote pid 79996 to log/21/server/ftp_sockctrl.pid 09:40:35.578424 Wrote port 40295 to log/21/server/ftp_server.port 09:40:35.578704 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd RETRNOSIZE REPLY SIZE 500 command not understood Testnum 138 === End of file server.cmd === Start of file valgrind138 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind138 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/32/server/ftp_server.pid" --logfile "log/32/ftp_server.log" --logdir "log/32" --portfile "log/32/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 42387 (log/32/server/ftp_server.port) RUN: FTP server is PID 77461 port 42387 * pid ftp => 77461 77461 test 0112...[FTP PASV upload resume] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind112 ../src/curl -q --output log/32/curl112.out --include --trace-ascii log/32/trace112 --trace-config all --trace-time ftp://127.0.0.1:42387/112 -T log/32/upload112 -C 40 > log/32/stdout112 2> log/32/stderr112 112: protocol FAILED! There was no content at all in the file log/32/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/32/ dir after test 112 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind112 ../src/curl -q --output log/32/curl112.out --include --trace-ascii log/32/trace112 --trace-config all --trace-time ftp://127.0.0.1:42387/112 -T log/32/upload112 -C 40 > log/32/stdout112 2> log/32/stderr112 === End of file commands.log === Start of file ftp_server.log 09:40:34.782931 FTP server listens on port IPv4/42387 09:40:34.784091 logged pid 77461 in log/32/server/ftp_server.pid 09:40:34.784387 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.033258 Running IPv4 version 09:40:34.033870 Listening on port 42387 09:40:34.034301 Wrote pid 78994 to log/32/server/ftp_sockctrl.pid 09:40:34.034746 Wrote port 42387 to log/32/server/ftp_server.port 09:40:34.034925 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 112 === End of file server.cmd === Start of file upload112 this is the *****crap******** that we're gonna upload worx? === End of file upload112 === Start of file valgrind112 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind112 test 0151...[HTTP GET with an error code that might trick authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind151 ../src/curl -q --output log/37/curl151.out --include --trace-ascii log/37/trace151 --trace-config all --trace-time http://127.0.0.1:37551/151 > log/37/stdout151 2> log/37/stderr151 151: protocol FAILED! There was no content at all in the file log/37/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/37/ dir after test 151 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind151 ../src/curl -q --output log/37/curl151.out --include --trace-ascii log/37/trace151 --trace-config all --trace-time http://127.0.0.1:37551/151 > log/37/stdout151 2> log/37/stderr151 === End of file commands.log === Start of file http_server.log 09:40:35.822191 ====> Client connect 09:40:35.822632 accept_connection 3 returned 4 09:40:35.822829 accept_connection 3 returned 0 09:40:35.833798 Read 93 bytes 09:40:35.834044 Process 93 bytes request 09:40:35.834209 Got request: GET /verifiedserver HTTP/1.1 09:40:35.837618 Are-we-friendly question received 09:40:35.838025 Wrote request (93 bytes) input to log/37/server.input 09:40:35.838256 Identifying ourselves as friends 09:40:35.843032 Response sent (56 bytes) and written to log/37/server.response 09:40:35.843174 special request received, no persistency 09:40:35.843256 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37551... * Connected to 127.0.0.1 (127.0.0.1) port 37551 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37551 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73772 === End of file http_verify.out === Start of file server.cmd Testnum 151 === End of file serveCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind150 ../src/curl -q --output log/33/curl150.out --include --trace-ascii log/33/trace150 --trace-config all --trace-time http://127.0.0.1:36559/150 -u testuser:testpass --ntlm --fail > log/33/stdout150 2> log/33/stderr150 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind140 ../src/curl -q --output log/29/curl140.out --include --trace-ascii log/29/trace140 --trace-config all --trace-time ftp://127.0.0.1:36763/blalbla/140 -z "1 jan 2004" > log/29/stdout140 2> log/29/stderr140 r.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73772 === End of file server.response === Start of file valgrind151 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind151 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/39/server/ftp_server.pid" --logfile "log/39/ftp_server.log" --logdir "log/39" --portfile "log/39/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 35393 (log/39/server/ftp_server.port) RUN: FTP server is PID 77518 port 35393 * pid ftp => 77518 77518 test 0123...[FTP upload resume with whole file already downloaded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind123 ../src/curl -q --output log/39/curl123.out --include --trace-ascii log/39/trace123 --trace-config all --trace-time ftp://127.0.0.1:35393/123 -T log/39/upload123 -C 51 > log/39/stdout123 2> log/39/stderr123 123: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 123 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind123 ../src/curl -q --output log/39/curl123.out --include --trace-ascii log/39/trace123 --trace-config all --trace-time ftp://127.0.0.1:35393/123 -T log/39/upload123 -C 51 > log/39/stdout123 2> log/39/stderr123 === End of file commands.log === Start of file ftp_server.log 09:40:34.604442 FTP server listens on port IPv4/35393 09:40:34.605384 logged pid 77518 in log/39/server/ftp_server.pid 09:40:34.605644 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.856126 Running IPv4 version 09:40:34.856671 Listening on port 35393 09:40:34.857035 Wrote pid 78780 to log/39/server/ftp_sockctrl.pid 09:40:34.857293 Wrote port 35393 to log/39/server/ftp_server.port 09:40:34.857516 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 123 === End of file server.cmd === Start of file upload123 -------------------------------------------------- === End of file upload123 === Start of file valgrind123 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind123 test 0150...[HTTP with NTLM authorization and --fail] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind150 ../src/curl -q --output log/33/curl150.out --include --trace-ascii log/33/trace150 --trace-config all --trace-time http://127.0.0.1:36559/150 -u testuser:testpass --ntlm --fail > log/33/stdout150 2> log/33/stderr150 150: protocol FAILED! There was no content at all in the file log/33/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/33/ dir after test 150 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind150 ../src/curl -q --output log/33/curl150.out --include --trace-ascii log/33/trace150 --trace-config all --trace-time http://127.0.0.1:36559/150 -u testuser:testpass --ntlm --fail > log/33/stdout150 2> log/33/stderr150 === End of file commands.log === Start of file http_server.log 09:40:35.727736 ====> Client connect 09:40:35.728027 accept_connection 3 returned 4 09:40:35.728172 accept_connection 3 returned 0 09:40:35.728293 Read 93 bytes 09:40:35.728385 Process 93 bytes request 09:40:35.728567 Got request: GET /verifiedserver HTTP/1.1 09:40:35.728665 Are-we-friendly question received 09:40:35.728889 Wrote request (93 bytes) input to log/33/server.input 09:40:35.729061 Identifying ourselves as friends 09:40:35.732294 Response sent (56 bytes) and written to log/33/server.response 09:40:35.732413 special request received, no persistency 09:40:35.732601 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36559... * Connected to 127.0.0.1 (127.0.0.1) port 36559 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36559 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73773 === End of file http_verify.out === Start of file server.cmd Testnum 150 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73773 === End of file server.response === Start of file valgrind150 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whiCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind136 ../src/curl -q --output log/60/curl136.out --include --trace-ascii log/60/trace136 --trace-config all --trace-time -u user: ftp://127.0.0.1:41385/136 > log/60/stdout136 2> log/60/stderr136 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind139 ../src/curl -q --output log/59/curl139.out --include --trace-ascii log/59/trace139 --trace-config all --trace-time ftp://127.0.0.1:43961/blalbla/139 -z "1 jan 1989" > log/59/stdout139 2> log/59/stderr139 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind141 ../src/curl -q --include --trace-ascii log/57/trace141 --trace-config all --trace-time ftp://127.0.0.1:42129/blalbla/141 -I > log/57/stdout141 2> log/57/stderr141 lst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind150 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/29/server/ftp_server.pid" --logfile "log/29/ftp_server.log" --logdir "log/29" --portfile "log/29/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 36763 (log/29/server/ftp_server.port) RUN: FTP server is PID 78998 port 36763 * pid ftp => 78998 78998 test 0140...[FTP download file with -z, expected to not transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind140 ../src/curl -q --output log/29/curl140.out --include --trace-ascii log/29/trace140 --trace-config all --trace-time ftp://127.0.0.1:36763/blalbla/140 -z "1 jan 2004" > log/29/stdout140 2> log/29/stderr140 140: protocol FAILED! There was no content at all in the file log/29/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/29/ dir after test 140 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind140 ../src/curl -q --output log/29/curl140.out --include --trace-ascii log/29/trace140 --trace-config all --trace-time ftp://127.0.0.1:36763/blalbla/140 -z "1 jan 2004" > log/29/stdout140 2> log/29/stderr140 === End of file commands.log === Start of file ftp_server.log 09:40:35.334918 FTP server listens on port IPv4/36763 09:40:35.341049 logged pid 78998 in log/29/server/ftp_server.pid 09:40:35.341334 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.582079 Running IPv4 version 09:40:35.582763 Listening on port 36763 09:40:35.583187 Wrote pid 80034 to log/29/server/ftp_sockctrl.pid 09:40:35.583605 Wrote port 36763 to log/29/server/ftp_server.port 09:40:35.585208 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 140 === End of file server.cmd === Start of file valgrind140 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind140 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/60/server/ftp_server.pid" --logfile "log/60/ftp_server.log" --logdir "log/60" --portfile "log/60/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41385 (log/60/server/ftp_server.port) RUN: FTP server is PID 78622 port 41385 * pid ftp => 78622 78622 test 0136...[FTP with user and no password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind136 ../src/curl -q --output log/60/curl136.out --include --trace-ascii log/60/trace136 --trace-config all --trace-time -u user: ftp://127.0.0.1:41385/136 > log/60/stdout136 2> log/60/stderr136 136: protocol FAILED! There was no content at all in the file log/60/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/60/ dir after test 136 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind136 ../src/curl -q --output log/60/curl136.out --include --trace-ascii log/60/trace136 --trace-config all --trace-time -u user: ftp://127.0.0.1:41385/136 > log/60/stdout136 2> log/60/stderr136 === End of file commands.log === Start of file ftp_server.log 09:40:35.348967 FTP server listens on port IPv4/41385 09:40:35.349738 logged pid 78622 in log/60/server/ftp_server.pid 09:40:35.350108 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.599566 Running IPv4 version 09:40:35.600234 Listening on port 41385 09:40:35.601412 Wrote pid 80052 to log/60/server/ftp_sockctrl.pid 09:40:35.601879 Wrote port 41385 to log/60/server/ftp_server.port 09:40:35.602047 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 136 === End of file server.cmd === Start of file valgrind136 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind136 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/59/server/ftp_server.pid" --logfile "log/59/ftp_server.log" --logdir "log/59" --portfile "log/59/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 43961 (log/59/server/ftp_server.port) RUN: FTP server is PID 78816 port 43961 * pid ftp => 78816 78816 test 0139...[FTP download a newer file with -z] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind139 ../src/curl -q --output log/59/curl139.out --include --trace-ascii log/59/trace139 --trace-config all --trace-time ftp://127.0.0.1:43961/blalbla/139 -z "1 jan 1989" > log/59/stdout139 2> log/59/stderr139 139: protocol FAILED! There was no content at all in the file log/59/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/59/ dir after test 139 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind139 ../src/curl -q --output log/59/curl139.out --include --trace-ascii log/59/trace139 --trace-config all --trace-time ftp://127.0.0.1:43961/blalbla/139 -z "1 jan 1989" > log/59/stdout139 2> log/59/stderr139 === End of file commands.log === Start of file ftp_server.log 09:40:35.444412 FTP server listens on port IPv4/43961 09:40:35.445625 logged pid 78816 in log/59/server/ftp_server.pid 09:40:35.446036 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.689276 Running IPv4 version 09:40:35.690054 Listening on port 43961 09:40:35.695203 Wrote pid 80270 to log/59/server/ftp_sockctrl.pid 09:40:35.695743 Wrote port 43961 to log/59/server/ftp_server.port 09:40:35.695924 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 139 === End of file server.cmd === Start of file valgrind139 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind139 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind120 ../src/curl -q --output log/8/curl120.out --include --trace-ascii log/8/trace120 --trace-config all --trace-time ftp://127.0.0.1:32769/120 -Q "-DELE file" > log/8/stdout120 2> log/8/stderr120 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind100 ../src/curl -q --output log/10/curl100.out --include --trace-ascii log/10/trace100 --trace-config all --trace-time ftp://127.0.0.1:32859/test-100/ > log/10/stdout100 2> log/10/stderr100 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind165 ../src/curl -q --output log/24/curl165.out --include --trace-ascii log/24/trace165 --trace-config all --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:39259 http://www.große.de/page/165 > log/24/stdout165 2> log/24/stderr165 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/57/server/ftp_server.pid" --logfile "log/57/ftp_server.log" --logdir "log/57" --portfile "log/57/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 42129 (log/57/server/ftp_server.port) RUN: FTP server is PID 79056 port 42129 * pid ftp => 79056 79056 test 0141...[FTP download info with -I] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind141 ../src/curl -q --include --trace-ascii log/57/trace141 --trace-config all --trace-time ftp://127.0.0.1:42129/blalbla/141 -I > log/57/stdout141 2> log/57/stderr141 141: stdout FAILED: --- log/57/check-expected 2025-07-18 09:40:37.053610036 +0000 +++ log/57/check-generated 2025-07-18 09:40:37.052610037 +0000 @@ -1,3 +0,0 @@ -Last-Modified: Wed, 09 Apr 2003 10:26:59 GMT[CR][LF] -Content-Length: 42[CR][LF] -Accept-ranges: bytes[CR][LF] == Contents of files in the log/57/ dir after test 141 === Start of file check-expected Last-Modified: Wed, 09 Apr 2003 10:26:59 GMT[CR][LF] Content-Length: 42[CR][LF] Accept-ranges: bytes[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind141 ../src/curl -q --include --trace-ascii log/57/trace141 --trace-config all --trace-time ftp://127.0.0.1:42129/blalbla/141 -I > log/57/stdout141 2> log/57/stderr141 === End of file commands.log === Start of file ftp_server.log 09:40:35.327937 FTP server listens on port IPv4/42129 09:40:35.328870 logged pid 79056 in log/57/server/ftp_server.pid 09:40:35.329145 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.577222 Running IPv4 version 09:40:35.579932 Listening on port 42129 09:40:35.580348 Wrote pid 80023 to log/57/server/ftp_sockctrl.pid 09:40:35.580870 Wrote port 42129 to log/57/server/ftp_server.port 09:40:35.581021 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 141 === End of file server.cmd === Start of file valgrind141 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind141 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/8/server/ftp_server.pid" --logfile "log/8/ftp_server.log" --logdir "log/8" --portfile "log/8/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 32769 (log/8/server/ftp_server.port) RUN: FTP server is PID 77502 port 32769 * pid ftp => 77502 77502 test 0120...[ftp download with post-quote delete operation] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind120 ../src/curl -q --output log/8/curl120.out --include --trace-ascii log/8/trace120 --trace-config all --trace-time ftp://127.0.0.1:32769/120 -Q "-DELE file" > log/8/stdout120 2> log/8/stderr120 120: protocol FAILED! There was no content at all in the file log/8/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/8/ dir after test 120 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind120 ../src/curl -q --output log/8/curl120.out --include --trace-ascii log/8/trace120 --trace-config all --trace-time ftp://127.0.0.1:32769/120 -Q "-DELE file" > log/8/stdout120 2> log/8/stderr120 === End of file commands.log === Start of file ftp_server.log 09:40:34.727307 FTP server listens on port IPv4/32769 09:40:34.728508 logged pid 77502 in log/8/server/ftp_server.pid 09:40:34.728995 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.973023 Running IPv4 version 09:40:34.975113 Listening on port 32769 09:40:34.975812 Wrote pid 78921 to log/8/server/ftp_sockctrl.pid 09:40:34.976217 Wrote port 32769 to log/8/server/ftp_server.port 09:40:34.976391 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY EPSV 314 bluah you f00l Testnum 120 === End of file server.cmd === Start of file valgrind120 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind120 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/10/server/ftp_server.pid" --logfile "log/10/ftp_server.log" --logdir "log/10" --portfile "log/10/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 32859 (log/10/server/ftp_server.port) RUN: FTP server is PID 77425 port 32859 * pid ftp => 77425 77425 test 0100...[FTP dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind100 ../src/curl -q --output log/10/curl100.out --include --trace-ascii log/10/trace100 --trace-config all --trace-time ftp://127.0.0.1:32859/tCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind153 ../src/curl -q --include --trace-ascii log/31/trace153 --trace-config all --trace-time http://127.0.0.1:45557/1530001 -u testuser:testpass --digest http://127.0.0.1:45557/1530002 > log/31/stdout153 2> log/31/stderr153 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind158 ../src/curl -q --output log/28/curl158.out --include --trace-ascii log/28/trace158 --trace-config all --trace-time http://127.0.0.1:37545/158 -F name=daniel > log/28/stdout158 2> log/28/stderr158 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind143 ../src/curl -q --output log/26/curl143.out --include --trace-ascii log/26/trace143 --trace-config all --trace-time "ftp://127.0.0.1:39753/%2ftmp/moo/143;type=a" > log/26/stdout143 2> log/26/stderr143 est-100/ > log/10/stdout100 2> log/10/stderr100 100: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 100 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind100 ../src/curl -q --output log/10/curl100.out --include --trace-ascii log/10/trace100 --trace-config all --trace-time ftp://127.0.0.1:32859/test-100/ > log/10/stdout100 2> log/10/stderr100 === End of file commands.log === Start of file ftp_server.log 09:40:34.607074 FTP server listens on port IPv4/32859 09:40:34.607983 logged pid 77425 in log/10/server/ftp_server.pid 09:40:34.608270 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:34.858384 Running IPv4 version 09:40:34.858992 Listening on port 32859 09:40:34.859416 Wrote pid 78785 to log/10/server/ftp_sockctrl.pid 09:40:34.859880 Wrote port 32859 to log/10/server/ftp_server.port 09:40:34.860056 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 100 === End of file server.cmd === Start of file valgrind100 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind100 setenv LC_ALL = en_US.UTF-8 setenv LC_CTYPE = en_US.UTF-8 test 0165...[HTTP over proxy with IDN host name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind165 ../src/curl -q --output log/24/curl165.out --include --trace-ascii log/24/trace165 --trace-config all --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:39259 http://www.große.de/page/165 > log/24/stdout165 2> log/24/stderr165 165: protocol FAILED! There was no content at all in the file log/24/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/24/ dir after test 165 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind165 ../src/curl -q --output log/24/curl165.out --include --trace-ascii log/24/trace165 --trace-config all --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:39259 http://www.große.de/page/165 > log/24/stdout165 2> log/24/stderr165 === End of file commands.log === Start of file http_server.log 09:40:36.356851 ====> Client connect 09:40:36.357164 accept_connection 3 returned 4 09:40:36.357395 accept_connection 3 returned 0 09:40:36.358279 Read 93 bytes 09:40:36.358425 Process 93 bytes request 09:40:36.358607 Got request: GET /verifiedserver HTTP/1.1 09:40:36.358722 Are-we-friendly question received 09:40:36.359012 Wrote request (93 bytes) input to log/24/server.input 09:40:36.359270 Identifying ourselves as friends 09:40:36.359981 Response sent (56 bytes) and written to log/24/server.response 09:40:36.360096 special request received, no persistency 09:40:36.360173 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39259... * Connected to 127.0.0.1 (127.0.0.1) port 39259 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39259 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73787 === End of file http_verify.out === Start of file server.cmd Testnum 165 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73787 === End of file server.response === Start of file valgrind165 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind165 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind170 ../src/curl -q --output log/11/curl170.out --include --trace-ascii log/11/trace170 --trace-config all --trace-time http://a.galaxy.far.far.away/170 --proxy http://127.0.0.1:41387 --proxy-user foo:bar --proxy-ntlm -F "dummy=value" > log/11/stdout170 2> log/11/stderr170 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind157 ../src/curl -q --output log/49/curl157.out --include --trace-ascii log/49/trace157 --trace-config all --trace-time http://127.0.0.1:42667/157 -u testuser:testpass --anyauth > log/49/stdout157 2> log/49/stderr157 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind146 ../src/curl -q --output log/6/curl146.out --include --trace-ascii log/6/trace146 --trace-config all --trace-time ftp://127.0.0.1:34161/first/dir/here/146 ftp://127.0.0.1:34161/146 > log/6/stdout146 2> log/6/stderr146 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind166 ../src/curl -q --output log/30/curl166.out --include --trace-ascii log/30/trace166 --trace-config all --trace-time http://127.0.0.1:43913/we/want/166 -F "name=@log/30/fie ld 166" > log/30/stdout166 2> log/30/stderr166 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind148 ../src/curl -q --output log/20/curl148.out --include --trace-ascii log/20/trace148 --trace-config all --trace-time ftp://127.0.0.1:34743/attempt/to/get/this/148 --ftp-create-dirs > log/20/stdout148 2> log/20/stderr148 test 0153...[HTTP with Digest authorization with stale=true] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind153 ../src/curl -q --include --trace-ascii log/31/trace153 --trace-config all --trace-time http://127.0.0.1:45557/1530001 -u testuser:testpass --digest http://127.0.0.1:45557/1530002 > log/31/stdout153 2> log/31/stderr153 153: stdout FAILED: --- log/31/check-expected 2025-07-18 09:40:37.318549342 +0000 +++ log/31/check-generated 2025-07-18 09:40:37.317609902 +0000 @@ -1,30 +0,0 @@ -HTTP/1.1 401 Authorization Required swsclose[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 200 OK[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 23[CR][LF] -[CR][LF] -This IS the real page![LF] -HTTP/1.1 401 Authorization Required swsclose[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="auth"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 200 OK[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 30[CR][LF] -[CR][LF] -This IS the second real page![LF] == Contents of files in the log/31/ dir after test 153 === Start of file check-expected HTTP/1.1 401 Authorization Required swsclose[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 200 OK[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 23[CR][LF] [CR][LF] This IS the real page![LF] HTTP/1.1 401 Authorization Required swsclose[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="auth"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 200 OK[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 30[CR][LF] [CR][LF] This IS the second real page![LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind153 ../src/curl -q --include --trace-ascii log/31/trace153 --trace-config all --trace-time http://127.0.0.1:45557/1530001 -u testuser:testpass --digest http://127.0.0.1:45557/1530002 > log/31/stdout153 2> log/31/stderr153 === End of file commands.log === Start of file http_server.log 09:40:35.987995 ====> Client connect 09:40:35.988648 accept_connection 3 returned 4 09:40:35.988848 accept_connection 3 returned 0 09:40:35.989001 Read 93 bytes 09:40:35.989144 Process 93 bytes request 09:40:35.989334 Got request: GET /verifiedserver HTTP/1.1 09:40:35.989417 Are-we-friendly question received 09:40:35.989765 Wrote request (93 bytes) input to log/31/server.input 09:40:35.989958 Identifying ourselves as friends 09:40:35.994717 Response sent (56 bytes) and written to log/31/server.response 09:40:35.994848 special request received, no persistency 09:40:35.994926 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45557... * Connected to 127.0.0.1 (127.0.0.1) port 45557 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45557 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73776 === End of file http_verify.out === Start of file server.cmd Testnum 153 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73776 === End of file server.response === Start of file valgrind153 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind153 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/6/server/ftp_server.pid" --logfile "log/6/ftp_server.log" --logdir "log/6" --portfile "log/6/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 34161 (log/6/server/ftp_server.port) RUN: FTP server is PID 79493 port 34161 * pid ftp => 79493 79493 test 0146...[persistent FTP with different paths] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind146 ../src/curl -q --output log/6/curl146.out --include --trace-ascii log/6/trace146 --trace-config all --trace-time ftp://127.0.0.1:34161/first/dir/here/146 ftp://127.0.0.1:34161/146 > log/6/stdout146 2> log/6/stderr146 146: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 146 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind146 ../src/curl -q --output log/6/curl146.out --include --trace-ascii log/6/trace146 --trace-config all --trace-time ftp://127.0.0.1:34161/first/dir/here/146 ftp://127.0.0.1:34161/146 > log/6/stdout146 2> log/6/stderr146 === End of file commands.log === Start of file ftp_server.log 09:40:35.600186 FTP server listens on port IPv4/34161 09:40:35.601140 logged pid 79493 in log/6/server/ftp_server.pid 09:40:35.601370 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.851805 Running IPv4 version 09:40:35.852341 Listening on port 34161 09:40:35.852847 Wrote pid 80528 to log/6/server/ftp_sockctrl.pid 09:40:35.853138 Wrote port 34161 to log/6/server/ftp_server.port 09:40:35.853279 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 146 === End of file server.cmd === Start of file valgrind146 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind146 test 0170...[HTTP POST with --proxy-ntlm and no SSL with no response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind170 ../src/curl -q --output log/11/curl170.out --include --trace-ascii log/11/trace170 --trace-config all --trace-time http://a.galaxy.far.far.away/170 --proxy http://127.0.0.1:41387 --proxy-user foo:bar --proxy-ntlm -F "dummy=value" > log/11/stdout170 2> log/11/stderr170 170: protocol FAILED! There was no content at all in the file log/11/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/11/ dir after test 170 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind170 ../src/curl -q --output log/11/curl170.out --include --trace-ascii log/11/trace170 --trace-config all --trace-time http://a.galaxy.far.far.away/170 --proxy http://127.0.0.1:41387 --proxy-user foo:bar --proxy-ntlm -F "dummy=value" > log/11/stdout170 2> log/11/stderr170 === End of file commands.log === Start of file http_server.log 09:40:36.346825 ====> Client connect 09:40:36.347235 accept_connection 3 returned 4 09:40:36.347520 accept_connection 3 returned 0 09:40:36.347701 Read 93 bytes 09:40:36.347795 Process 93 bytes request 09:40:36.347888 Got request: GET /verifiedserver HTTP/1.1 09:40:36.347975 Are-we-friendly question received 09:40:36.351624 Wrote request (93 bytes) input to log/11/server.input 09:40:36.351905 Identifying ourselves as friends 09:40:36.352821 Response sent (56 bytes) and written to log/11/server.response 09:40:36.352933 special request received, no persistency 09:40:36.353003 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41387... * Connected to 127.0.0.1 (127.0.0.1) port 41387 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41387 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73809 === End of file http_verify.out === Start of file server.cmd Testnum 170 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73809 === End of file server.response === Start of file valgrind170 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind170 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/26/server/ftp_server.pid" --logfile "log/26/ftp_server.log" --logdir "log/26" --portfile "log/26/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 39753 (log/26/server/ftp_server.port) RUN: FTP server is PID 79344 port 39753 * pid ftp => 79344 79344 test 0143...[FTP URL with type=a] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind143 ../src/curl -q --output log/26/curl143.out --include --trace-ascii log/26/trace143 --trace-config all --trace-time "ftp://127.0.0.1:39753/%2ftmp/moo/143;type=a" > log/26/stdout143 2> log/26/stderr143 143: protocol FAILED! There was no content at all in the file log/26/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/26/ dir after test 143 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind143 ../src/curl -q --output log/26/curl143.out --include --trace-ascii log/26/trace143 --trace-config all --trace-time "ftp://127.0.0.1:39753/%2ftmp/moo/143;type=a" > log/26/stdout143 2> log/26/stderr143 === End of file commands.log === Start of file ftp_server.log 09:40:35.650459 FTP server listens on port IPv4/39753 09:40:35.651535 logged pid 79344 in log/26/server/ftp_server.pid 09:40:35.651871 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.901854 Running IPv4 version 09:40:35.902501 Listening on port 39753 09:40:35.902951 Wrote pid 80631 to log/26/server/ftp_sockctrl.pid 09:40:35.903311 Wrote port 39753 to log/26/server/ftp_server.port 09:40:35.903544 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 143 === End of file server.cmd === Start of file valgrind143 valgrind: Fatal error at startup: a function redirection valgrind: which is mandaCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind155 ../src/curl -q --output log/25/curl155.out --include --trace-ascii log/25/trace155 --trace-config all --trace-time http://127.0.0.1:41727/155 -T log/25/put155 -u testuser:testpass --anyauth > log/25/stdout155 2> log/25/stderr155 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind147 ../src/curl -q --output log/13/curl147.out --include --trace-ascii log/13/trace147 --trace-config all --trace-time ftp://127.0.0.1:34087/first/dir/here/147 --ftp-create-dirs > log/13/stdout147 2> log/13/stderr147 tory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind143 test 0158...[HTTP multipart formpost with only a 100 reply] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind158 ../src/curl -q --output log/28/curl158.out --include --trace-ascii log/28/trace158 --trace-config all --trace-time http://127.0.0.1:37545/158 -F name=daniel > log/28/stdout158 2> log/28/stderr158 158: protocol FAILED! There was no content at all in the file log/28/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/28/ dir after test 158 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind158 ../src/curl -q --output log/28/curl158.out --include --trace-ascii log/28/trace158 --trace-config all --trace-time http://127.0.0.1:37545/158 -F name=daniel > log/28/stdout158 2> log/28/stderr158 === End of file commands.log === Start of file http_server.log 09:40:36.199642 ====> Client connect 09:40:36.199955 accept_connection 3 returned 4 09:40:36.200097 accept_connection 3 returned 0 09:40:36.200235 Read 93 bytes 09:40:36.200374 Process 93 bytes request 09:40:36.200601 Got request: GET /verifiedserver HTTP/1.1 09:40:36.200698 Are-we-friendly question received 09:40:36.200932 Wrote request (93 bytes) input to log/28/server.input 09:40:36.201168 Identifying ourselves as friends 09:40:36.202822 Response sent (56 bytes) and written to log/28/server.response 09:40:36.202939 special request received, no persistency 09:40:36.203002 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37545... * Connected to 127.0.0.1 (127.0.0.1) port 37545 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37545 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73781 === End of file http_verify.out === Start of file server.cmd Testnum 158 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73781 === End of file server.response === Start of file valgrind158 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind158 test 0166...[HTTP formpost a file with spaces in name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind166 ../src/curl -q --output log/30/curl166.out --include --trace-ascii log/30/trace166 --trace-config all --trace-time http://127.0.0.1:43913/we/want/166 -F "name=@log/30/fie ld 166" > log/30/stdout166 2> log/30/stderr166 166: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 166 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind166 ../src/curl -q --output log/30/curl166.out --include --trace-ascii log/30/trace166 --trace-config all --trace-time http://127.0.0.1:43913/we/want/166 -F "name=@log/30/fie ld 166" > log/30/stdout166 2> log/30/stderr166 === End of file commands.log === Start of file fie ld 166 data inside the file === End of file fie ld 166 === Start of file http_server.log 09:40:36.317926 ====> Client connect 09:40:36.318293 accept_connection 3 returned 4 09:40:36.318539 accept_connection 3 returned 0 09:40:36.319284 Read 93 bytes 09:40:36.319496 Process 93 bytes request 09:40:36.319594 Got request: GET /verifiedserver HTTP/1.1 09:40:36.319675 Are-we-friendly question received 09:40:36.319913 Wrote request (93 bytes) input to log/30/server.input 09:40:36.320363 Identifying ourselves as friends 09:40:36.321030 Response sent (56 bytes) and written to log/30/server.response 09:40:36.321128 special request received, no persistency 09:40:36.321197 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43913... * Connected to 127.0.0.1 (127.0.0.1) port 43913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43913 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73779 === End of file http_verify.out === Start of file server.cmd Testnum 166 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73779 === End of file server.response === Start of file valgrind166 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst proceCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind164 ../src/curl -q --output log/16/curl164.out --include --trace-ascii log/16/trace164 --trace-config all --trace-time http://127.0.0.1:34829/want/164 -r 0-10,12-15 > log/16/stdout164 2> log/16/stderr164 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind154 ../src/curl -q --output log/27/curl154.out --include --trace-ascii log/27/trace154 --trace-config all --trace-time http://127.0.0.1:42323/154 -T log/27/put154 -u testuser:testpass --anyauth > log/27/stdout154 2> log/27/stderr154 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind172 ../src/curl -q --output log/53/curl172.out --include --trace-ascii log/53/trace172 --trace-config all --trace-time http://127.0.0.1:34639/we/want/172 -b log/53/jar172.txt -b "tool=curl; name=fool" > log/53/stdout172 2> log/53/stderr172 ssing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind166 test 0157...[HTTP GET with --anyauth (when the server requires none)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind157 ../src/curl -q --output log/49/curl157.out --include --trace-ascii log/49/trace157 --trace-config all --trace-time http://127.0.0.1:42667/157 -u testuser:testpass --anyauth > log/49/stdout157 2> log/49/stderr157 157: protocol FAILED! There was no content at all in the file log/49/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/49/ dir after test 157 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind157 ../src/curl -q --output log/49/curl157.out --include --trace-ascii log/49/trace157 --trace-config all --trace-time http://127.0.0.1:42667/157 -u testuser:testpass --anyauth > log/49/stdout157 2> log/49/stderr157 === End of file commands.log === Start of file http_server.log 09:40:36.166104 ====> Client connect 09:40:36.166556 accept_connection 3 returned 4 09:40:36.166748 accept_connection 3 returned 0 09:40:36.166894 Read 93 bytes 09:40:36.167003 Process 93 bytes request 09:40:36.167103 Got request: GET /verifiedserver HTTP/1.1 09:40:36.167192 Are-we-friendly question received 09:40:36.167514 Wrote request (93 bytes) input to log/49/server.input 09:40:36.167753 Identifying ourselves as friends 09:40:36.168649 Response sent (56 bytes) and written to log/49/server.response 09:40:36.168770 special request received, no persistency 09:40:36.168844 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42667... * Connected to 127.0.0.1 (127.0.0.1) port 42667 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42667 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73760 === End of file http_verify.out === Start of file server.cmd Testnum 157 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73760 === End of file server.response === Start of file valgrind157 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind157 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/13/server/ftp_server.pid" --logfile "log/13/ftp_server.log" --logdir "log/13" --portfile "log/13/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 34087 (log/13/server/ftp_server.port) RUN: FTP server is PID 79551 port 34087 * pid ftp => 79551 79551 test 0147...[FTP with --ftp-create-dirs (failing CWD)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind147 ../src/curl -q --output log/13/curl147.out --include --trace-ascii log/13/trace147 --trace-config all --trace-time ftp://127.0.0.1:34087/first/dir/here/147 --ftp-create-dirs > log/13/stdout147 2> log/13/stderr147 147: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 147 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind147 ../src/curl -q --output log/13/curl147.out --include --trace-ascii log/13/trace147 --trace-config all --trace-time ftp://127.0.0.1:34087/first/dir/here/147 --ftp-create-dirs > log/13/stdout147 2> log/13/stderr147 === End of file commands.log === Start of file ftp_server.log 09:40:36.008315 FTP server listens on port IPv4/34087 09:40:36.009307 logged pid 79551 in log/13/server/ftp_server.pid 09:40:36.009567 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.243220 Running IPv4 version 09:40:35.243974 Listening on port 34087 09:40:35.244364 Wrote pid 81051 to log/13/server/ftp_sockctrl.pid 09:40:35.258911 Wrote port 34087 to log/13/server/ftp_server.port 09:40:35.259101 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY CWD 550 I won't allow this on my server COUNT CWD 1 Testnum 147 === End of file server.cmd === Start of file valgrind147 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind:CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind160 ../src/curl -q --include --trace-ascii log/19/trace160 --trace-config all --trace-time http://127.0.0.1:35697/want/160 http://127.0.0.1:35697/wantmore/1600001 > log/19/stdout160 2> log/19/stderr160 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind162 ../src/curl -q --output log/41/curl162.out --include --trace-ascii log/41/trace162 --trace-config all --trace-time http://127.0.0.1:35093/162 --proxy http://127.0.0.1:35093 --proxy-user foo:bar --proxy-ntlm --fail > log/41/stdout162 2> log/41/stderr162 On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind147 test 0164...[HTTP range with multiple ranges] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind164 ../src/curl -q --output log/16/curl164.out --include --trace-ascii log/16/trace164 --trace-config all --trace-time http://127.0.0.1:34829/want/164 -r 0-10,12-15 > log/16/stdout164 2> log/16/stderr164 164: protocol FAILED! There was no content at all in the file log/16/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/16/ dir after test 164 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind164 ../src/curl -q --output log/16/curl164.out --include --trace-ascii log/16/trace164 --trace-config all --trace-time http://127.0.0.1:34829/want/164 -r 0-10,12-15 > log/16/stdout164 2> log/16/stderr164 === End of file commands.log === Start of file http_server.log 09:40:36.289648 ====> Client connect 09:40:36.289975 accept_connection 3 returned 4 09:40:36.290148 accept_connection 3 returned 0 09:40:36.290986 Read 93 bytes 09:40:36.291138 Process 93 bytes request 09:40:36.291235 Got request: GET /verifiedserver HTTP/1.1 09:40:36.291322 Are-we-friendly question received 09:40:36.291682 Wrote request (93 bytes) input to log/16/server.input 09:40:36.291903 Identifying ourselves as friends 09:40:36.292549 Response sent (56 bytes) and written to log/16/server.response 09:40:36.292675 special request received, no persistency 09:40:36.292744 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34829... * Connected to 127.0.0.1 (127.0.0.1) port 34829 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34829 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73794 === End of file http_verify.out === Start of file server.cmd Testnum 164 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73794 === End of file server.response === Start of file valgrind164 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind164 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/20/server/ftp_server.pid" --logfile "log/20/ftp_server.log" --logdir "log/20" --portfile "log/20/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 34743 (log/20/server/ftp_server.port) RUN: FTP server is PID 79624 port 34743 * pid ftp => 79624 79624 test 0148...[FTP with --ftp-create-dirs (failing MKD)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind148 ../src/curl -q --output log/20/curl148.out --include --trace-ascii log/20/trace148 --trace-config all --trace-time ftp://127.0.0.1:34743/attempt/to/get/this/148 --ftp-create-dirs > log/20/stdout148 2> log/20/stderr148 148: protocol FAILED! There was no content at all in the file log/20/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/20/ dir after test 148 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind148 ../src/curl -q --output log/20/curl148.out --include --trace-ascii log/20/trace148 --trace-config all --trace-time ftp://127.0.0.1:34743/attempt/to/get/this/148 --ftp-create-dirs > log/20/stdout148 2> log/20/stderr148 === End of file commands.log === Start of file ftp_server.log 09:40:35.553294 FTP server listens on port IPv4/34743 09:40:35.554335 logged pid 79624 in log/20/server/ftp_server.pid 09:40:35.554602 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.804518 Running IPv4 version 09:40:35.805111 Listening on port 34743 09:40:35.805602 Wrote pid 80493 to log/20/server/ftp_sockctrl.pid 09:40:35.805958 Wrote port 34743 to log/20/server/ftp_server.port 09:40:35.806179 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY CWD 550 I won't allow this on my server REPLY MKD 550 We will have no such thing Testnum 148 === End of file server.cmd === Start of file valgrind148 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind148 test 0155...[HTTP PUT with --anyauth authorization (picking NTLM)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-fileCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind156 ../src/curl -q --output log/40/curl156.out --include --trace-ascii log/40/trace156 --trace-config all --trace-time http://127.0.0.1:42139/156 -T log/40/put156 -u testuser:testpass --anyauth > log/40/stdout156 2> log/40/stderr156 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind149 ../src/curl -q --output log/42/curl149.out --include --trace-ascii log/42/trace149 --trace-config all --trace-time -T log/42/upload149 ftp://127.0.0.1:40985/dir1/149 -T log/42/upload149 ftp://127.0.0.1:40985/dir2/149 > log/42/stdout149 2> log/42/stderr149 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind174 ../src/curl -q --output log/48/curl174.out --include --trace-ascii log/48/trace174 --trace-config all --trace-time http://127.0.0.1:46339/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/48/stdout174 2> log/48/stderr174 =log/25/valgrind155 ../src/curl -q --output log/25/curl155.out --include --trace-ascii log/25/trace155 --trace-config all --trace-time http://127.0.0.1:41727/155 -T log/25/put155 -u testuser:testpass --anyauth > log/25/stdout155 2> log/25/stderr155 155: protocol FAILED! There was no content at all in the file log/25/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/25/ dir after test 155 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind155 ../src/curl -q --output log/25/curl155.out --include --trace-ascii log/25/trace155 --trace-config all --trace-time http://127.0.0.1:41727/155 -T log/25/put155 -u testuser:testpass --anyauth > log/25/stdout155 2> log/25/stderr155 === End of file commands.log === Start of file http_server.log 09:40:35.940745 ====> Client connect 09:40:35.941079 accept_connection 3 returned 4 09:40:35.941255 accept_connection 3 returned 0 09:40:35.942085 Read 93 bytes 09:40:35.942298 Process 93 bytes request 09:40:35.942414 Got request: GET /verifiedserver HTTP/1.1 09:40:35.942645 Are-we-friendly question received 09:40:35.942933 Wrote request (93 bytes) input to log/25/server.input 09:40:35.943154 Identifying ourselves as friends 09:40:35.944089 Response sent (56 bytes) and written to log/25/server.response 09:40:35.944205 special request received, no persistency 09:40:35.944272 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41727... * Connected to 127.0.0.1 (127.0.0.1) port 41727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41727 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73784 === End of file http_verify.out === Start of file put155 This is data we upload with PUT a second line line three four is the number of lines === End of file put155 === Start of file server.cmd Testnum 155 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73784 === End of file server.response === Start of file valgrind155 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind155 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind173 ../src/curl -q --output log/51/curl173.out --include --trace-ascii log/51/trace173 --trace-config all --trace-time http://127.0.0.1:34903/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl" log/51/stdout173 2> log/51/stderr173 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind163 ../src/curl -q --output log/15/curl163.out --include --trace-ascii log/15/trace163 --trace-config all --trace-time http://127.0.0.1:35435/we/want/163 -F "name= log/15/stdout163 2> log/15/stderr163 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind144 ../src/curl -q --output log/61/curl144.out --include --trace-ascii log/61/trace144 --trace-config all --trace-time ftp://127.0.0.1:46133/ -P - -l > log/61/stdout144 2> log/61/stderr144 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind171 ../src/curl -q --output log/23/curl171.out --include --trace-ascii log/23/trace171 --trace-config all --trace-time -c log/23/jar171 -x 127.0.0.1:42467 http://z.x.com/171 > log/23/stdout171 2> log/23/stderr171 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind167 ../src/curl -q --output log/44/curl167.out --include --trace-ascii log/44/trace167 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://127.0.0.1:34655 --proxy-user foo:bar --digest --user digest:alot > log/44/stdout167 2> log/44/stderr167 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind168 ../src/curl -q --output log/3/curl168.out --include --trace-ascii log/3/trace168 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:42107 --proxy-user foo:bar --proxy-digest --digest --user digest:alot > log/3/stdout168 2> log/3/stderr168 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind161 ../src/curl -q --output log/34/curl161.out --include --trace-ascii log/34/trace161 --trace-config all --trace-time ftp://127.0.0.1:33001/161 > log/34/stdout161 2> log/34/stderr161 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind142 ../src/curl -q --output log/18/curl142.out --include --trace-ascii log/18/trace142 --trace-config all --trace-time ftp://127.0.0.1:42089/part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/142 > log/18/stdout142 2> log/18/stderr142 test 0160...[HTTP with delayed close, conn reuse, connection reset and retry] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind160 ../src/curl -q --include --trace-ascii log/19/trace160 --trace-config all --trace-time http://127.0.0.1:35697/want/160 http://127.0.0.1:35697/wantmore/1600001 > log/19/stdout160 2> log/19/stderr160 160: stdout FAILED: --- log/19/check-expected 2025-07-18 09:40:37.654609732 +0000 +++ log/19/check-generated 2025-07-18 09:40:37.653609732 +0000 @@ -1,10 +0,0 @@ -HTTP/1.1 200 OK swsclose[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Content-Length: 9[CR][LF] -[CR][LF] -surprise[LF] -HTTP/1.1 200 OK swsclose[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Connection: close[CR][LF] -[CR][LF] -surprise2[LF] == Contents of files in the log/19/ dir after test 160 === Start of file check-expected HTTP/1.1 200 OK swsclose[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Content-Length: 9[CR][LF] [CR][LF] surprise[LF] HTTP/1.1 200 OK swsclose[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Connection: close[CR][LF] [CR][LF] surprise2[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind160 ../src/curl -q --include --trace-ascii log/19/trace160 --trace-config all --trace-time http://127.0.0.1:35697/want/160 http://127.0.0.1:35697/wantmore/1600001 > log/19/stdout160 2> log/19/stderr160 === End of file commands.log === Start of file http_server.log 09:40:36.237330 ====> Client connect 09:40:36.237831 accept_connection 3 returned 4 09:40:36.238028 accept_connection 3 returned 0 09:40:36.238175 Read 93 bytes 09:40:36.238284 Process 93 bytes request 09:40:36.238373 Got request: GET /verifiedserver HTTP/1.1 09:40:36.243589 Are-we-friendly question received 09:40:36.243892 Wrote request (93 bytes) input to log/19/server.input 09:40:36.244101 Identifying ourselves as friends 09:40:36.245006 Response sent (56 bytes) and written to log/19/server.response 09:40:36.245122 special request received, no persistency 09:40:36.245191 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35697... * Connected to 127.0.0.1 (127.0.0.1) port 35697 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35697 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73791 === End of file http_verify.out === Start of file server.cmd Testnum 160 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73791 === End of file server.response === Start of file valgrind160 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind160 test 0154...[HTTP PUT with --anyauth authorization (picking Digest)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind154 ../src/curl -q --output log/27/curl154.out --include --trace-ascii log/27/trace154 --trace-config all --trace-time http://127.0.0.1:42323/154 -T log/27/put154 -u testuser:testpass --anyauth > log/27/stdout154 2> log/27/stderr154 154: protocol FAILED! There was no content at all in the file log/27/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/27/ dir after test 154 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind154 ../src/curl -q --output log/27/curl154.out --include --trace-ascii log/27/trace154 --trace-config all --trace-time http://127.0.0.1:42323/154 -T log/27/put154 -u testuser:testpass --anyauth > log/27/stdout154 2> log/27/stderr154 === End of file commands.log === Start of file http_server.log 09:40:36.059679 ====> Client connect 09:40:36.060059 accept_connection 3 returned 4 09:40:36.060250 accept_connection 3 returned 0 09:40:36.061384 Read 93 bytes 09:40:36.061611 Process 93 bytes request 09:40:36.061716 Got request: GET /verifiedserver HTTP/1.1 09:40:36.061857 Are-we-friendly question received 09:40:36.062291 Wrote request (93 bytes) input to log/27/server.input 09:40:36.062578 Identifying ourselves as friends 09:40:36.063407 Response sent (56 bytes) and written to log/27/server.response 09:40:36.068562 special request received, no persistency 09:40:36.068658 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42323... * Connected to 127.0.0.1 (127.0.0.1) port 42323 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42323 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73783 === End of file http_verify.out === Start of file put154 This is data we upload with PUT a second line line three four is the number of lines === End of file put154 === Start of file server.cmd Testnum 154 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73783 === End of file server.response === Start of file valgrind154 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind154 test 0156...[HTTP PUT with --anyauth (when the server requires none)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind156 ../src/curl -q --output log/40/curl156.out --include --trace-ascii log/40/trace156 --trace-config all --trace-time http://127.0.0.1:42139/156 -T log/40/put156 -u testuser:testpass --anyauth > log/40/stdout156 2> log/40/stderr156 156: protocol FAILED! There was no content at all in the file log/40/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/40/ dir after test 156 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind156 ../src/curl -q --output log/40/curl156.out --include --trace-ascii log/40/trace156 --trace-config all --trace-time http://127.0.0.1:42139/156 -T log/40/put156 -u testuser:testpass --anyauth > log/40/stdout156 2> log/40/stderr156 === End of file commands.log === Start of file http_server.log 09:40:36.079800 ====> Client connect 09:40:36.080136 accept_connection 3 returned 4 09:40:36.080292 accept_connection 3 returned 0 09:40:36.081553 Read 93 bytes 09:40:36.081720 Process 93 bytes request 09:40:36.081803 Got request: GET /verifiedserver HTTP/1.1 09:40:36.081875 Are-we-friendly question received 09:40:36.082121 Wrote request (93 bytes) input to log/40/server.input 09:40:36.082327 Identifying ourselves as friends 09:40:36.083724 Response sent (56 bytes) and written to log/40/server.response 09:40:36.083922 special request received, no persistency 09:40:36.083995 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42139... * Connected to 127.0.0.1 (127.0.0.1) port 42139 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42139 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73767 === End of file http_verify.out === Start of file put156 This is data we upload with PUT a second line line three four is the number of lines === End of file put156 === Start of file server.cmd Testnum 156 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73767 === End of file server.response === Start of file valgrind156 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind156 test 0162...[HTTP GET asking for --proxy-ntlm when some other authentication is required] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind162 ../src/curl -q --output log/41/curl162.out --include --trace-ascii log/41/trace162 --trace-config all --trace-time http://127.0.0.1:35093/162 --proxy http://127.0.0.1:35093 --proxy-user foo:bar --proxy-ntlm --fail > log/41/stdout162 2> log/41/stderr162 162: protocol FAILED! There was no content at all in the file log/41/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/41/ dir after test 162 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind162 ../src/curl -q --output log/41/curl162.out --include --trace-ascii log/41/trace162 --trace-config all --trace-time http://127.0.0.1:35093/162 --proxy http://127.0.0.1:35093 --proxy-user foo:bar --proxy-ntlm --fail > log/41/stdout162 2> log/41/stderr162 === End of file commands.log === Start of file http_server.log 09:40:36.284119 ====> Client connect 09:40:36.284617 accept_connection 3 returned 4 09:40:36.284823 accept_connection 3 returned 0 09:40:36.286696 Read 93 bytes 09:40:36.286852 Process 93 bytes request 09:40:36.286996 Got request: GET /verifiedserver HTTP/1.1 09:40:36.287114 Are-we-friendly question received 09:40:36.287386 Wrote request (93 bytes) input to log/41/server.input 09:40:36.287769 Identifying ourselves as friends 09:40:36.288679 Response sent (56 bytes) and written to log/41/server.response 09:40:36.288803 special request received, no persistency 09:40:36.288883 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35093... * Connected to 127.0.0.1 (127.0.0.1) port 35093 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35093 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73770 === End of file http_verify.out === Start of file server.cmd Testnum 162 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73770 === End of file server.response === Start of file valgrind162 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind169 ../src/curl -q --output log/1/curl169.out --include --trace-ascii log/1/trace169 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/169 --proxy http://127.0.0.1:40633 --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:alot > log/1/stdout169 2> log/1/stderr169 libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind162 test 0172...[HTTP with cookies file and custom added cookie] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind172 ../src/curl -q --output log/53/curl172.out --include --trace-ascii log/53/trace172 --trace-config all --trace-time http://127.0.0.1:34639/we/want/172 -b log/53/jar172.txt -b "tool=curl; name=fool" > log/53/stdout172 2> log/53/stderr172 172: protocol FAILED! There was no content at all in the file log/53/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/53/ dir after test 172 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind172 ../src/curl -q --output log/53/curl172.out --include --trace-ascii log/53/trace172 --trace-config all --trace-time http://127.0.0.1:34639/we/want/172 -b log/53/jar172.txt -b "tool=curl; name=fool" > log/53/stdout172 2> log/53/stderr172 === End of file commands.log === Start of file http_server.log 09:40:36.417941 ====> Client connect 09:40:36.418294 accept_connection 3 returned 4 09:40:36.418613 accept_connection 3 returned 0 09:40:36.419294 Read 93 bytes 09:40:36.419594 Process 93 bytes request 09:40:36.419736 Got request: GET /verifiedserver HTTP/1.1 09:40:36.419817 Are-we-friendly question received 09:40:36.420047 Wrote request (93 bytes) input to log/53/server.input 09:40:36.420275 Identifying ourselves as friends 09:40:36.420954 Response sent (56 bytes) and written to log/53/server.response 09:40:36.421066 special request received, no persistency 09:40:36.421134 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34639... * Connected to 127.0.0.1 (127.0.0.1) port 34639 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34639 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73761 === End of file http_verify.out === Start of file jar172.txt # Netscape HTTP Cookie File # https://curl.se/docs/http-cookies.html # This file was generated by libcurl! Edit at your own risk. .127.0.0.1 TRUE /silly/ FALSE 0 ismatch this .127.0.0.1 TRUE / FALSE 0 partmatch present 127.0.0.1 FALSE /we/want/ FALSE 22139150993 nodomain value === End of file jar172.txt === Start of file server.cmd Testnum 172 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73761 === End of file server.response === Start of file valgrind172 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind172 test 0168...[HTTP with proxy-requiring-Digest to site-requiring-Digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind168 ../src/curl -q --output log/3/curl168.out --include --trace-ascii log/3/trace168 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:42107 --proxy-user foo:bar --proxy-digest --digest --user digest:alot > log/3/stdout168 2> log/3/stderr168 168: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 168 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind168 ../src/curl -q --output log/3/curl168.out --include --trace-ascii log/3/trace168 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:42107 --proxy-user foo:bar --proxy-digest --digest --user digest:alot > log/3/stdout168 2> log/3/stderr168 === End of file commands.log === Start of file http_server.log 09:40:36.392902 ====> Client connect 09:40:36.393316 accept_connection 3 returned 4 09:40:36.393726 accept_connection 3 returned 0 09:40:36.393942 Read 93 bytes 09:40:36.394046 Process 93 bytes request 09:40:36.394145 Got request: GET /verifiedserver HTTP/1.1 09:40:36.394233 Are-we-friendly question received 09:40:36.394535 Wrote request (93 bytes) input to log/3/server.input 09:40:36.394759 Identifying ourselves as friends 09:40:36.395651 Response sent (56 bytes) and written to log/3/server.response 09:40:36.395788 special request received, no persistency 09:40:36.395924 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42107... * Connected to 127.0.0.1 (127.0.0.1) port 42107 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42107 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73802 === End of file http_verify.out === Start of file server.cmd Testnum 168 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73802 === End of file server.response === Start of file valgrind168 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named fuCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind178 ../src/curl -q --output log/54/curl178.out --include --trace-ascii log/54/trace178 --trace-config all --trace-time http://127.0.0.1:44921/178 > log/54/stdout178 2> log/54/stderr178 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind183 ../src/curl -q --output log/17/curl183.out --include --trace-ascii log/17/trace183 --trace-config all --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:44383 > log/17/stdout183 2> log/17/stderr183 nction using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind168 test 0163...[HTTP multipart formpost with contents from a file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind163 ../src/curl -q --output log/15/curl163.out --include --trace-ascii log/15/trace163 --trace-config all --trace-time http://127.0.0.1:35435/we/want/163 -F "name= log/15/stdout163 2> log/15/stderr163 163: protocol FAILED! There was no content at all in the file log/15/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/15/ dir after test 163 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind163 ../src/curl -q --output log/15/curl163.out --include --trace-ascii log/15/trace163 --trace-config all --trace-time http://127.0.0.1:35435/we/want/163 -F "name= log/15/stdout163 2> log/15/stderr163 === End of file commands.log === Start of file field163 contents from a file newlinens? yes please [tab][CR] too === End of file field163 === Start of file http_server.log 09:40:36.475962 ====> Client connect 09:40:36.476529 accept_connection 3 returned 4 09:40:36.476765 accept_connection 3 returned 0 09:40:36.480096 Read 93 bytes 09:40:36.480263 Process 93 bytes request 09:40:36.480403 Got request: GET /verifiedserver HTTP/1.1 09:40:36.480662 Are-we-friendly question received 09:40:36.481024 Wrote request (93 bytes) input to log/15/server.input 09:40:36.481281 Identifying ourselves as friends 09:40:36.481950 Response sent (56 bytes) and written to log/15/server.response 09:40:36.482067 special request received, no persistency 09:40:36.482150 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35435... * Connected to 127.0.0.1 (127.0.0.1) port 35435 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35435 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73793 === End of file http_verify.out === Start of file server.cmd Testnum 163 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73793 === End of file server.response === Start of file valgrind163 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind163 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/18/server/ftp_server.pid" --logfile "log/18/ftp_server.log" --logdir "log/18" --portfile "log/18/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 42089 (log/18/server/ftp_server.port) RUN: FTP server is PID 79172 port 42089 * pid ftp => 79172 79172 test 0142...[FTP URL with 150 dir levels] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind142 ../src/curl -q --output log/18/curl142.out --include --trace-ascii log/18/trace142 --trace-config all --trace-time ftp://127.0.0.1:42089/part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/142 > log/18/stdout142 2> log/18/stderr142 142: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 142 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind142 ../src/curl -q --output log/18/curl142.out --include --trace-ascii log/18/trace142 --trace-config all --trace-time ftp://127.0.0.1:42089/part1/part2/part3/part4/part5/part6/part7/part8/part9/part10/part11/part12/part13/part14/part15/part16/part17/part18/part19/part20/part21/part22/part23/part24/part25/part26/part27/part28/part29/part30/part31/part32/part33/part34/part35/part36/part37/part38/part39/part40/part41/part42/part43/part44/part45/part46/part47/part48/part49/part50/part51/part52/part53/part54/part55/part56/part57/part58/part59/part60/part61/part62/part63/part64/part65/part66/part67/part68/part69/part70/part71/part72/part73/part74/part75/part76/part77/part78/part79/part80/part81/part82/part83/part84/part85/part86/part87/part88/part89/part90/part91/part92/part93/part94/part95/part96/part97/part98/part99/part100/part101/part102/part103/part104/part105/part106/part107/part108/part109/part110/part111/part112/part113/part114/part115/part116/part117/part118/part119/part120/part121/part122/part123/part124/part125/part126/part127/part128/part129/part130/part131/part132/part133/part134/part135/part136/part137/part138/part139/part140/part141/part142/part143/part144/part145/part146/part147/part148/part149/part150/142 > log/18/stdout142 2> log/18/stderr142 === End of file commands.log === Start of file ftp_server.log 09:40:35.448224 FTP server listens on port IPv4/42089 09:40:35.449694 logged pid 79172 in log/18/server/ftp_server.pid 09:40:35.450064 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.699708 Running IPv4 version 09:40:35.700283 Listening on port 42089 09:40:35.700774 Wrote pid 80300 to log/18/server/ftp_sockctrl.pid 09:40:35.701081 Wrote port 42089 to log/18/server/ftp_server.port 09:40:35.701227 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 142 === End of file server.cmd === Start of file valgrind142 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind142 test 0171...[HTTP, get cookie with dot prefixed full domain] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind171 ../src/curl -q --output log/23/curl171.out --include --trace-ascii log/23/trace171 --trace-config all --trace-time -c log/23/jar171 -x 127.0.0.1:42467 http://z.x.com/171 > log/23/stdout171 2> log/23/stderr171 171: protocol FAILED! There was no content at all in the file log/23/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/23/ dir after test 171 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind171 ../src/curl -q --output log/23/curl171.out --include --trace-ascii log/23/trace171 --trace-config all --trace-time -c log/23/jar171 -x 127.0.0.1:42467 http://z.x.com/171 > log/23/stdout171 2> log/23/stderr171 === End of file commands.log === Start of file http_server.log 09:40:36.518107 ====> Client connect 09:40:36.518627 accept_connection 3 returned 4 09:40:36.519029 accept_connection 3 returned 0 09:40:36.519198 Read 93 bytes 09:40:36.519306 Process 93 bytes request 09:40:36.519403 Got request: GET /verifiedserver HTTP/1.1 09:40:36.519597 Are-we-friendly question received 09:40:36.519838 Wrote request (93 bytes) input to log/23/server.input 09:40:36.520040 Identifying ourselves as friends 09:40:36.524930 Response sent (56 bytes) and written to log/23/server.response 09:40:36.525065 special request received, no persistency 09:40:36.525144 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42467... * Connected to 127.0.0.1 (127.0.0.1) port 42467 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42467 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73788 === End of file http_verify.out === Start of file server.cmd Testnum 171 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73788 === End of file server.response === Start of file valgrind171 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind171 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/34/server/ftp_server.pid" --logfile "log/34/ftp_server.log" --logdir "log/34" --portfile "log/34/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 33001 (log/34/server/ftp_server.port) RUN: FTP server is PID 80544 port 33001 * pid ftp => 80544 80544 test 0161...[FTP RETR PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind161 ../src/curl -q --output log/34/curl161.out --include --trace-ascii log/34/trace161 --trace-config all --trace-time ftp://127.0.0.1:33001/161 > log/34/stdout161 2> log/34/stderr161 161: protocol FAILED! There was no content at all in the file log/34/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/34/ dir after test 161 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind161 ../src/curl -q --output log/34/curl161.out --include --trace-ascii log/34/trace161 --trace-config all --trace-time ftp://127.0.0.1:33001/161 > log/34/stdout161 2> log/34/stderr161 === End of file commands.log === Start of file ftp_server.log 09:40:36.345310 FTP server listens on port IPv4/33001 09:40:36.346381 logged pid 80544 in log/34/server/ftp_server.pid 09:40:36.346707 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:36.596288 Running IPv4 version 09:40:36.597022 Listening on port 33001 09:40:36.597607 Wrote pid 81618 to log/34/server/ftp_sockctrl.pid 09:40:36.597993 Wrote port 33001 to log/34/server/ftp_server.port 09:40:36.598180 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 161 === End of file server.cmd === Start of file valgrind161 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind161 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/42/server/ftp_server.pid" --logfile "log/42/ftp_server.log" --logdir "log/42" --portfile "log/42/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 40985 (log/42/server/ftp_server.port) RUN: FTP server is PID 79706 port 40985 * pid ftp => 79706 79706 test 0149...[FTP with multiple uploads] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind149 ../src/curl -q --output log/42/curl149.out --include --trace-ascii log/42/trace149 --trace-config all --trace-time -T log/42/upload149 ftp://127.0.0.1:40985/dir1/149 -T log/42/upload149 ftp://127.0.0.1:40985/dir2/149 > log/42/stdout149 2> log/42/stderr149 149: protocol FAILED! There was no content at all in the file log/42/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/42/ dir after test 149 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind149 ../src/curl -q --output log/42/curl149.out --include --trace-ascii log/42/trace149 --trace-config all --trace-time -T log/42/upload149 ftp://127.0.0.1:40985/dir1/149 -T log/42/upload149 ftp://127.0.0.1:40985/dir2/149 > log/42/stdout149 2> log/42/stderr149 === End of file commands.log === Start of file ftp_server.log 09:40:35.678678 FTP server listens on port IPv4/40985 09:40:35.680387 logged pid 79706 in log/42/server/ftp_server.pid 09:40:35.680662 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.927997 Running IPv4 version 09:40:35.930077 Listening on port 40985 09:40:35.930581 Wrote pid 80651 to log/42/server/ftp_sockctrl.pid 09:40:35.930920 Wrote port 40985 to log/42/server/ftp_server.port 09:40:35.931154 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 149 === End of file server.cmd === Start of file upload149 send away this contents === End of file upload149 === Start of file valgrind149 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind149 test 0167...[HTTP with proxy-requiring-Basic to site-requiring-Digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind167 ../src/curl -q --output log/44/curl167.out --include --trace-ascii log/44/trace167 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://127.0.0.1:34655 --proxy-user foo:bar --digest --user digest:alot > log/44/stdout167 2> log/44/stderr167 167: protocol FAILED! There was no content at all in the file log/44/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/44/ dir after test 167 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind167 ../src/curl -q --output log/44/curl167.out --include --trace-ascii log/44/trace167 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://127.0.0.1:34655 --proxy-user foo:bar --digest --user digest:alot > log/44/stdout167 2> log/44/stderr167 === End of file commands.log === Start of file http_server.log 09:40:36.405286 ====> Client connect 09:40:36.405792 accept_connection 3 returned 4 09:40:36.405972 accept_connection 3 returned 0 09:40:36.406110 Read 93 bytes 09:40:36.406243 Process 93 bytes request 09:40:36.406343 Got request: GET /verifiedserver HTTP/1.1 09:40:36.406507 Are-we-friendly question received 09:40:36.406781 Wrote request (93 bytes) input to log/44/server.input 09:40:36.407068 Identifying ourselves as friends 09:40:36.409234 Response sent (56 bytes) and written to log/44/server.response 09:40:36.409379 special request received, no persistency 09:40:36.409538 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34655... * Connected to 127.0.0.1 (127.0.0.1) port 34655 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34655 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73766 === End of file http_verify.out === Start of file server.cmd Testnum 167 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73766 === End of file server.response === Start of file valgrind167 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind167 test 0174...[HTTP POST --anyauth to server not requiring any auth at all] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind174 ../src/curl -q --output log/48/curl174.out --include --trace-ascii log/48/trace174 --trace-config all --trace-time http://127.0.0.1:46339/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/48/stdout174 2> log/48/stderr174 174: protocol FAILED! There was no content at all in the file log/48/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/48/ dir after test 174 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind174 ../src/curl -q --output log/48/curl174.out --include --trace-ascii log/48/trace174 --trace-config all --trace-time http://127.0.0.1:46339/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/48/stdout174 2> log/48/stderr174 === End of file commands.log === Start of file http_server.log 09:40:36.837514 ====> Client connect 09:40:36.838073 accept_connection 3 returned 4 09:40:36.838277 accept_connection 3 returned 0 09:40:36.843578 Read 93 bytes 09:40:36.843741 Process 93 bytes request 09:40:36.843862 Got request: GET /verifiedserver HTTP/1.1 09:40:36.843960 Are-we-friendly question received 09:40:36.844218 Wrote request (93 bytes) input to log/48/server.input 09:40:36.844508 Identifying ourselves as friends 09:40:36.845369 Response sent (56 bytes) and written to log/48/server.response 09:40:36.845585 special request received, no persistency 09:40:36.845679 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46339... * Connected to 127.0.0.1 (127.0.0.1) port 46339 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46339 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73764 === End of file http_verify.out === Start of file server.cmd Testnum 174 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73764 === End of file server.response === Start of file valgrind174 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind174 test 0173...[HTTP RFC1867-formpost a file from stdin with "faked" filename] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind173 ../src/curl -q --output log/51/curl173.out --include --trace-ascii log/51/trace173 --trace-config all --trace-time http://127.0.0.1:34903/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl" log/51/stdout173 2> log/51/stderr173 173: protocol FAILED! There was no content at all in the file log/51/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/51/ dir after test 173 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind173 ../src/curl -q --output log/51/curl173.out --include --trace-ascii log/51/trace173 --trace-config all --trace-time http://127.0.0.1:34903/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl" log/51/stdout173 2> log/51/stderr173 === End of file commands.log === Start of file http_server.log 09:40:36.496105 ====> Client connect 09:40:36.496671 accept_connection 3 returned 4 09:40:36.496945 accept_connection 3 returned 0 09:40:36.501173 Read 93 bytes 09:40:36.501365 Process 93 bytes request 09:40:36.501526 Got request: GET /verifiedserver HTTP/1.1 09:40:36.501611 Are-we-friendly question received 09:40:36.501842 Wrote request (93 bytes) input to log/51/server.input 09:40:36.502046 Identifying ourselves as friends 09:40:36.502891 Response sent (56 bytes) and written to log/51/server.response 09:40:36.502995 special request received, no persistency 09:40:36.503053 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34903... * Connected to 127.0.0.1 (127.0.0.1) port 34903 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34903 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73763 === End of file http_verify.out === Start of file server.cmd Testnum 173 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73763 === End of file server.response === Start of file stdin-for-173 line1 line2 line3 line4 line5 line6 line7 line8 === End of file stdin-for-173 === Start of file valgrind173 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst proCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind200 ../src/curl -q --output log/59/curl200.out --trace-ascii log/59/trace200 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/59/test200.txt > log/59/stdout200 2> log/59/stderr200 cessing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind173 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/61/server/ftp_server.pid" --logfile "log/61/ftp_server.log" --logdir "log/61" --portfile "log/61/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 46133 (log/61/server/ftp_server.port) RUN: FTP server is PID 79508 port 46133 * pid ftp => 79508 79508 test 0144...[FTP NLST dir list without contents, using PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind144 ../src/curl -q --output log/61/curl144.out --include --trace-ascii log/61/trace144 --trace-config all --trace-time ftp://127.0.0.1:46133/ -P - -l > log/61/stdout144 2> log/61/stderr144 144: protocol FAILED! There was no content at all in the file log/61/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/61/ dir after test 144 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind144 ../src/curl -q --output log/61/curl144.out --include --trace-ascii log/61/trace144 --trace-config all --trace-time ftp://127.0.0.1:46133/ -P - -l > log/61/stdout144 2> log/61/stderr144 === End of file commands.log === Start of file ftp_server.log 09:40:35.998431 FTP server listens on port IPv4/46133 09:40:35.999666 logged pid 79508 in log/61/server/ftp_server.pid 09:40:36.000079 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:35.245284 Running IPv4 version 09:40:35.245949 Listening on port 46133 09:40:35.246335 Wrote pid 81044 to log/61/server/ftp_sockctrl.pid 09:40:35.246794 Wrote port 46133 to log/61/server/ftp_server.port 09:40:35.246999 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY NLST 450 No files found Testnum 144 === End of file server.cmd === Start of file valgrind144 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind144 test 0169...[HTTP with proxy-requiring-NTLM to site-requiring-Digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind169 ../src/curl -q --output log/1/curl169.out --include --trace-ascii log/1/trace169 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/169 --proxy http://127.0.0.1:40633 --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:alot > log/1/stdout169 2> log/1/stderr169 169: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 169 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind169 ../src/curl -q --output log/1/curl169.out --include --trace-ascii log/1/trace169 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/169 --proxy http://127.0.0.1:40633 --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:alot > log/1/stdout169 2> log/1/stderr169 === End of file commands.log === Start of file http_server.log 09:40:36.443788 ====> Client connect 09:40:36.444098 accept_connection 3 returned 4 09:40:36.444285 accept_connection 3 returned 0 09:40:36.444506 Read 93 bytes 09:40:36.444729 Process 93 bytes request 09:40:36.444823 Got request: GET /verifiedserver HTTP/1.1 09:40:36.444903 Are-we-friendly question received 09:40:36.445203 Wrote request (93 bytes) input to log/1/server.input 09:40:36.445399 Identifying ourselves as friends 09:40:36.446379 Response sent (56 bytes) and written to log/1/server.response 09:40:36.446592 special request received, no persistency 09:40:36.446679 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40633... * Connected to 127.0.0.1 (127.0.0.1) port 40633 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40633 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73806 === End of file http_verify.out === Start of file server.cmd Testnum 169 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73806 === End of file server.response === Start of file valgrind169 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventionCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind145 ../src/curl -q --output log/14/curl145.out --include --trace-ascii log/14/trace145 --trace-config all --trace-time ftp://127.0.0.1:36271/ -P - -l > log/14/stdout145 2> log/14/stderr145 s for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind169 test 0183...[HTTP GET two URLs over a single proxy with persistent connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind183 ../src/curl -q --output log/17/curl183.out --include --trace-ascii log/17/trace183 --trace-config all --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:44383 > log/17/stdout183 2> log/17/stderr183 183: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 183 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind183 ../src/curl -q --output log/17/curl183.out --include --trace-ascii log/17/trace183 --trace-config all --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:44383 > log/17/stdout183 2> log/17/stderr183 === End of file commands.log === Start of file http_server.log 09:40:37.338345 ====> Client connect 09:40:37.338768 accept_connection 3 returned 4 09:40:37.338925 accept_connection 3 returned 0 09:40:37.339892 Read 93 bytes 09:40:37.340028 Process 93 bytes request 09:40:37.340107 Got request: GET /verifiedserver HTTP/1.1 09:40:37.340190 Are-we-friendly question received 09:40:37.340429 Wrote request (93 bytes) input to log/17/server.input 09:40:37.342865 Identifying ourselves as friends 09:40:37.343582 Response sent (56 bytes) and written to log/17/server.response 09:40:37.343696 special request received, no persistency 09:40:37.343761 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44383... * Connected to 127.0.0.1 (127.0.0.1) port 44383 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44383 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73792 === End of file http_verify.out === Start of file server.cmd Testnum 183 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73792 === End of file server.response === Start of file valgrind183 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind183 test 0178...[HTTP response with negative Content-Length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind178 ../src/curl -q --output log/54/curl178.out --include --trace-ascii log/54/trace178 --trace-config all --trace-time http://127.0.0.1:44921/178 > log/54/stdout178 2> log/54/stderr178 178: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 178 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind178 ../src/curl -q --output log/54/curl178.out --include --trace-ascii log/54/trace178 --trace-config all --trace-time http://127.0.0.1:44921/178 > log/54/stdout178 2> log/54/stderr178 === End of file commands.log === Start of file http_server.log 09:40:37.177192 ====> Client connect 09:40:37.177614 accept_connection 3 returned 4 09:40:37.177786 accept_connection 3 returned 0 09:40:37.177901 Read 93 bytes 09:40:37.177978 Process 93 bytes request 09:40:37.178070 Got request: GET /verifiedserver HTTP/1.1 09:40:37.178163 Are-we-friendly question received 09:40:37.178408 Wrote request (93 bytes) input to log/54/server.input 09:40:37.178696 Identifying ourselves as friends 09:40:37.186321 Response sent (56 bytes) and written to log/54/server.response 09:40:37.186546 special request received, no persistency 09:40:37.186642 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 178 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind178 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind178 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/14/server/ftp_server.pid" --logfile "log/14/ftp_server.log" --logdir "log/14" --portfile "log/14/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 36271 (log/14/server/ftp_server.port) RUN: FTP server is PID 79507 port 36271 * pid ftp => 79507 79507 test 0145...[FTP NLST dir list with weird reply code, using PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind145 ../src/curl -q --output log/14/curl145.out --include --trace-ascii log/14/trace145 --trace-config all --trace-time ftp://127.0.0.1:36271/ -P - -l > log/14/stdout145 2> log/14/stderr145 145: protocol FAILED! There was no content at all in the file log/14/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/14/ dir after test 145 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind145 ../src/curl -q --output log/14/curl145.out --include --trace-ascii log/14/trace145 --trace-config all --trace-time ftp://127.0.0.1:36271/ -P - -l > log/14/stdout145 2> log/14/stderr145 === End of file commands.log === Start of file ftp_server.log 09:40:36.337693 FTP server listens on port IPv4/36271 09:40:36.339048 logged pid 79507 in log/14/server/ftp_server.pid 09:40:36.339371 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:36.577646 Running IPv4 version 09:40:36.578303 Listening on port 36271 09:40:36.589998 Wrote pid 81549 to log/14/server/ftp_sockctrl.pid 09:40:36.590349 Wrote port 36271 to log/14/server/ftp_server.port 09:40:36.590646 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY NLST 550 Have a taste on this Testnum 145 === End of file server.cmd === Start of file valgrind145 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind145 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind180 ../src/curl -q --output log/45/curl180.out --include --trace-ascii log/45/trace180 --trace-config all --trace-time http://127.0.0.1:34239/we/want/180 -T log/45/test180.txt --http1.0 > log/45/stdout180 2> log/45/stderr180 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind175 ../src/curl -q --output log/63/curl175.out --include --trace-ascii log/63/trace175 --trace-config all --trace-time http://127.0.0.1:38797/175 -u auser:apasswd --digest -d "junkelijunk" > log/63/stdout175 2> log/63/stderr175 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind182 ../src/curl -q --output log/58/curl182.out --include --trace-ascii log/58/trace182 --trace-config all --trace-time ftp://127.0.0.1:38901/182 > log/58/stdout182 2> log/58/stderr182 test 0200...[basic file:// file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind200 ../src/curl -q --output log/59/curl200.out --trace-ascii log/59/trace200 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/59/test200.txt > log/59/stdout200 2> log/59/stderr200 200: data FAILED: --- log/59/check-expected 2025-07-18 09:40:38.148578522 +0000 +++ log/59/check-generated 2025-07-18 09:40:38.147609482 +0000 @@ -1,5 +0,0 @@ -foo[LF] - bar[LF] -bar[LF] - foo[LF] -moo[LF] == Contents of files in the log/59/ dir after test 200 === Start of file check-expected foo[LF] bar[LF] bar[LF] foo[LF] moo[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind200 ../src/curl -q --output log/59/curl200.out --trace-ascii log/59/trace200 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/59/test200.txt > log/59/stdout200 2> log/59/stderr200 === End of file commands.log === Start of file server.cmd Testnum 200 === End of file server.cmd === Start of file test200.txt foo bar bar foo moo === End of file test200.txt === Start of file valgrind200 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind200 test 0180...[HTTP 1.0 PUT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind180 ../src/curl -q --output log/45/curl180.out --include --trace-ascii log/45/trace180 --trace-config all --trace-time http://127.0.0.1:34239/we/want/180 -T log/45/test180.txt --http1.0 > log/45/stdout180 2> log/45/stderr180 180: protocol FAILED! There was no content at all in the file log/45/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/45/ dir after test 180 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind180 ../src/curl -q --output log/45/curl180.out --include --trace-ascii log/45/trace180 --trace-config all --trace-time http://127.0.0.1:34239/we/want/180 -T log/45/test180.txt --http1.0 > log/45/stdout180 2> log/45/stderr180 === End of file commands.log === Start of file http_server.log 09:40:36.199077 ====> Client connect 09:40:36.199389 accept_connection 3 returned 4 09:40:36.199704 accept_connection 3 returned 0 09:40:36.199847 Read 93 bytes 09:40:36.199938 Process 93 bytes request 09:40:36.200034 Got request: GET /verifiedserver HTTP/1.1 09:40:36.200119 Are-we-friendly question received 09:40:36.200344 Wrote request (93 bytes) input to log/45/server.input 09:40:36.200641 Identifying ourselves as friends 09:40:36.201541 Response sent (56 bytes) and written to log/45/server.response 09:40:36.201660 special request received, no persistency 09:40:36.201732 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34239... * Connected to 127.0.0.1 (127.0.0.1) port 34239 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34239 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 75108 === End of file http_verify.out === Start of file server.cmd Testnum 180 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 75108 === End of file server.response === Start of file test180.txt Weird file to upload for testing the PUT feature === End of file test180.txt === Start of file valgrind180 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind180 test 0175...[HTTP POST --digest to server not requiring any auth at all] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind175 ../src/curl -q --output log/63/curl175.out --include --trace-ascii log/63/trace175 --trace-config all --trace-time http://127.0.0.1:38797/175 -u auser:apasswd --digest -d "junkelijunk" > log/63/stdout175 2> log/63/stderr175 175: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 175 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind175 ../src/curl -q --output log/63/curl175.out --include --trace-ascii log/63/trace175 --trace-config all --trace-time http://127.0.0.1:38797/175 -u auser:apasswd --digest -d "junkelijunk" > log/63/stdout175 2> log/63/stderr175 === End of file commands.log === Start of file http_server.log 09:40:37.164866 ====> Client connect 09:40:37.165204 accept_connection 3 retuCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind181 ../src/curl -q --output log/43/curl181.out --include --trace-ascii log/43/trace181 --trace-config all --trace-time http://127.0.0.1:41267/we/want/181 --data-binary @log/43/test181.txt --http1.0 > log/43/stdout181 2> log/43/stderr181 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind203 ../src/curl -q --output log/10/curl203.out --trace-ascii log/10/trace203 --trace-config all --trace-time file:/build/curl/src/build-curl/tests/log/10/test203.txt > log/10/stdout203 2> log/10/stderr203 rned 4 09:40:37.165381 accept_connection 3 returned 0 09:40:37.166087 Read 93 bytes 09:40:37.166278 Process 93 bytes request 09:40:37.166383 Got request: GET /verifiedserver HTTP/1.1 09:40:37.166565 Are-we-friendly question received 09:40:37.166848 Wrote request (93 bytes) input to log/63/server.input 09:40:37.167091 Identifying ourselves as friends 09:40:37.167800 Response sent (56 bytes) and written to log/63/server.response 09:40:37.167911 special request received, no persistency 09:40:37.167988 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38797... * Connected to 127.0.0.1 (127.0.0.1) port 38797 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38797 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73747 === End of file http_verify.out === Start of file server.cmd Testnum 175 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73747 === End of file server.response === Start of file valgrind175 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind175 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind176 ../src/curl -q --output log/64/curl176.out --include --trace-ascii log/64/trace176 --trace-config all --trace-time http://127.0.0.1:33073/176 -u auser:apasswd --ntlm -d "junkelijunk" > log/64/stdout176 2> log/64/stderr176 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind192 ../src/curl -q --include --trace-ascii log/39/trace192 --trace-config all --trace-time http://127.0.0.1:42899/192 -w "%{num_connects}\n" > log/39/stdout192 2> log/39/stderr192 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind177 ../src/curl -q --output log/50/curl177.out --include --trace-ascii log/50/trace177 --trace-config all --trace-time http://127.0.0.1:45651/177 -u auser:apasswd --digest -d "junkelijunk" > log/50/stdout177 2> log/50/stderr177 setenv MSYS2_ARG_CONV_EXCL = file: test 0203...[file:/path URL with a single slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind203 ../src/curl -q --output log/10/curl203.out --trace-ascii log/10/trace203 --trace-config all --trace-time file:/build/curl/src/build-curl/tests/log/10/test203.txt > log/10/stdout203 2> log/10/stderr203 203: data FAILED: --- log/10/check-expected 2025-07-18 09:40:38.275609417 +0000 +++ log/10/check-generated 2025-07-18 09:40:38.272609419 +0000 @@ -1,5 +0,0 @@ -foo[LF] - bar[LF] -bar[LF] - foo[LF] -moo[LF] == Contents of files in the log/10/ dir after test 203 === Start of file check-expected foo[LF] bar[LF] bar[LF] foo[LF] moo[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind203 ../src/curl -q --output log/10/curl203.out --trace-ascii log/10/trace203 --trace-config all --trace-time file:/build/curl/src/build-curl/tests/log/10/test203.txt > log/10/stdout203 2> log/10/stderr203 === End of file commands.log === Start of file server.cmd Testnum 203 === End of file server.cmd === Start of file test203.txt foo bar bar foo moo === End of file test203.txt === Start of file valgrind203 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind203 test 0181...[HTTP 1.0 POST] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind181 ../src/curl -q --output log/43/curl181.out --include --trace-ascii log/43/trace181 --trace-config all --trace-time http://127.0.0.1:41267/we/want/181 --data-binary @log/43/test181.txt --http1.0 > log/43/stdout181 2> log/43/stderr181 181: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 181 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind181 ../src/curl -q --output log/43/curl181.out --include --trace-ascii log/43/trace181 --trace-config all --trace-time http://127.0.0.1:41267/we/want/181 --data-binary @log/43/test181.txt --http1.0 > log/43/stdout181 2> log/43/stderr181 === End of file commands.log === Start of file http_server.log 09:40:37.407894 ====> Client connect 09:40:37.408259 accept_connection 3 returned 4 09:40:37.408663 accept_connection 3 returned 0 09:40:37.408930 Read 93 bytes 09:40:37.409032 Process 93 bytes request 09:40:37.409162 Got request: GET /verifiedserver HTTP/1.1 09:40:37.409352 Are-we-friendly question received 09:40:37.409723 Wrote request (93 bytes) input to log/43/server.input 09:40:37.410215 Identifying ourselves as friends 09:40:37.415682 Response sent (56 bytes) and written to log/43/server.response 09:40:37.415870 special request received, no persistency 09:40:37.415971 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd Testnum 181 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file test181.txt Weird file to upload for testing the POST feature === End of file test181.txt === Start of file valgrind181 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind181 test 0182...[FTP download an empty file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind182 ../src/curl -q --output log/58/curl182.out --include --trace-ascii log/58/trace182 --trace-config all --trace-time ftp://127.0.0.1:38901/182 > log/58/stdout182 2> log/58/stderr182 182: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 182 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind182 ../src/curl -q --output log/58/curl182.out --include --trace-ascii log/58/trace182 --trace-config all --trace-time ftp://127.0.0.1:38901/182 > log/58/stdout182 2> log/58/stderr182 === End of file commands.log === Start of file ftp_server.log 09:40:37.061851 ====> Client connect 09:40:37.063886 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:37.066241 < "USER anonymous" 09:40:37.066648 > "331 We are happy you popped in![CR][LF]" 09:40:37.068244 < "PASS ftp@example.com" 09:40:37.068655 > "230 Welcome you silly person[CR][LF]" 09:40:37.070210 < "PWD" 09:40:37.070600 > "257 "/" is current directory[CR][LF]" 09:40:37.072140 < "EPSV" 09:40:37.072401 ====> Passive DATA channel requested by client 09:40:37.072557 DATA sockfilt for passive data channel starting... 09:40:37.091101 DATA sockfilt for passive data channel started (pid 83030) 09:40:37.092432 DATA sockfilt for passive data channel listens on port 43157 09:40:37.095085 > "229 Entering Passive Mode (|||43157|)[LF]" 09:40:37.095365 Client has been notified that DATA conn will be accepted on port 43157 09:40:37.099998 Client connects to port 43157 09:40:37.100305 ====> Client established passive DATA connection on port 43157 09:40:37.101124 < "TYPE I" 09:40:37.104041 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:37.104691 < "SIZE verifiedserver" 09:40:37.105489 > "213 17[CR][LF]" 09:40:37.107319 < "RETR verifiedserver" 09:40:37.108106 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:37.108913 =====> Closing passive DATA connection... 09:40:37.109134 Server disconnects passive DATA connection 09:40:37.111415 Server disconnected passive DATA connection 09:40:37.111692 DATA sockfilt for passive data channel quits (pid 83030) 09:40:37.113714 DATA sockfilt for passive data channel quit (pid 83030) 09:40:37.114053 =====> Closed passive DATA connection 09:40:37.115021 > "226 File transfer complete[CR][LF]" 09:40:37.153913 < "QUIT" 09:40:37.155045 > "221 bye bye baby[CR][LF]" 09:40:37.159897 MAIN sockfilt said DISC 09:40:37.161632 ====> Client disconnected 09:40:37.162245 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:37.314611 ====> Client connect 09:40:37.317528 Received DATA (on stdin) 09:40:37.317828 > 160 bytes data, server => client 09:40:37.317934 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:37.318047 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:37.318148 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:37.319036 < 16 bytes data, client => server 09:40:37.319172 'USER anonymous\r\n' 09:40:37.320387 Received DATA (on stdin) 09:40:37.320607 > 33 bytes data, server => client 09:40:37.320698 '331 We are happy you popped in!\r\n' 09:40:37.321388 < 22 bytes data, client => server 09:40:37.321592 'PASS ftp@example.com\r\n' 09:40:37.322415 Received DATA (on stdin) 09:40:37.322637 > 30 bytes data, server => client 09:40:37.322729 '230 Welcome you silly person\r\n' 09:40:37.323335 < 5 bytes data, client => server 09:40:37.323536 'PWD\r\n' 09:40:37.324329 Received DATA (on stdin) 09:40:37.324543 > 30 bytes data, server => client 09:40:37.324649 '257 "/" is current directory\r\n' 09:40:37.325305 < 6 bytes data, client => server 09:40:37.325514 'EPSV\r\n' 09:40:37.351542 Received DATA (on stdin) 09:40:37.351696 > 38 bytes data, server => client 09:40:37.351771 '229 Entering Passive Mode (|||43157|)\n' 09:40:37.353009 < 8 bytes data, client => server 09:40:37.353134 'TYPE I\r\n' 09:40:37.355172 Received DATA (on stdin) 09:40:37.355314 > 33 bytes data, server => client 09:40:37.356573 '200 I modify TYPE as you wanted\r\n' 09:40:37.357157 < 21 bytes data, client => server 09:40:37.357293 'SIZE verifiedserver\r\n' 09:40:37.358852 Received DATA (on stdin) 09:40:37.358982 > 8 bytes data, server => client 09:40:37.359513 '213 17\r\n' 09:40:37.360144 < 21 bytes data, client => server 09:40:37.360320 'RETR verifiedserver\r\n' 09:40:37.361396 Received DATA (on stdin) 09:40:37.361599 > 29 bytes data, server => client 09:40:37.363027 '150 Binary junk (17 bytes).\r\n' 09:40:37.368064 Received DATA (on stdin) 09:40:37.368205 > 28 bytes data, server => client 09:40:37.368379 '226 File transfer complete\r\n' 09:40:37.406606 < 6 bytes data, client => server 09:40:37.406826 'QUIT\r\n' 09:40:37.407975 Received DATA (on stdin) 09:40:37.408117 > 18 bytes data, server => client 09:40:37.408311 '221 bye bye baby\r\n' 09:40:37.412673 ====> Client disconnect 09:40:37.413923 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:37.343033 Running IPv4 version 09:40:37.343747 Listening on port 43157 09:40:37.344141 Wrote pid 83030 to log/58/server/ftp_sockdata.pid 09:40:37.344326 Received PING (on stdin) 09:40:37.345487 Received PORT (on stdin) 09:40:37.353311 ====> Client connect 09:40:37.363368 Received DATA (on stdin) 09:40:37.363568 > 17 bytes data, server => client 09:40:37.363647 'WE ROOLZ: 77973\r\n' 09:40:37.363907 Received DISC (on stdin) 09:40:37.364047 ====> Client forcibly disconnected 09:40:37.365888 Received QUIT (on stdin) 09:40:37.366017 quits 09:40:37.366380 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 182 === End of file server.cmd === Start of file valgrind182 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind182 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind201 ../src/curl -q --output log/57/curl201.out --include --trace-ascii log/57/trace201 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/57/non-existent-file.txt > log/57/stdout201 2> log/57/stderr201 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind187 ../src/curl -q --output log/55/curl187.out --include --trace-ascii log/55/trace187 --trace-config all --trace-time http://127.0.0.1:33071?oh=what-weird=test/187 -L > log/55/stdout187 2> log/55/stderr187 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind186 ../src/curl -q --output log/46/curl186.out --include --trace-ascii log/46/trace186 --trace-config all --trace-time http://127.0.0.1:46523/we/want/186 -F "name=daniel;type=moo/foo-.4" -F "html= hello;type=text/html;charset=verymoo" > log/46/stdout186 2> log/46/stderr186 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind198 ../src/curl -q --output log/33/curl198.out --include --trace-ascii log/33/trace198 --trace-config all --trace-time http://127.0.0.1:36559/198 --retry 1000 > log/33/stdout198 2> log/33/stderr198 test 0192...[HTTP GET -w num_connects with one simple connect] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind192 ../src/curl -q --include --trace-ascii log/39/trace192 --trace-config all --trace-time http://127.0.0.1:42899/192 -w "%{num_connects}\n" > log/39/stdout192 2> log/39/stderr192 192: stdout FAILED: --- log/39/check-expected 2025-07-18 09:40:38.369426230 +0000 +++ log/39/check-generated 2025-07-18 09:40:38.368609370 +0000 @@ -1,7 +0,0 @@ -HTTP/1.1 200 OK[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Content-Length: 8[LF] -Connection: close[LF] -[LF] -monster[LF] -1[LF] == Contents of files in the log/39/ dir after test 192 === Start of file check-expected HTTP/1.1 200 OK[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Content-Length: 8[LF] Connection: close[LF] [LF] monster[LF] 1[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind192 ../src/curl -q --include --trace-ascii log/39/trace192 --trace-config all --trace-time http://127.0.0.1:42899/192 -w "%{num_connects}\n" > log/39/stdout192 2> log/39/stderr192 === End of file commands.log === Start of file http_server.log 09:40:37.514043 ====> Client connect 09:40:37.514780 accept_connection 3 returned 4 09:40:37.514971 accept_connection 3 returned 0 09:40:37.516349 Read 93 bytes 09:40:37.516718 Process 93 bytes request 09:40:37.516849 Got request: GET /verifiedserver HTTP/1.1 09:40:37.516950 Are-we-friendly question received 09:40:37.517264 Wrote request (93 bytes) input to log/39/server.input 09:40:37.517978 Identifying ourselves as friends 09:40:37.519915 Response sent (56 bytes) and written to log/39/server.response 09:40:37.520032 special request received, no persistency 09:40:37.520092 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 192 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind192 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind192 test 0177...[HTTP POST --digest to server doing a 302-location response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind177 ../src/curl -q --output log/50/curl177.out --include --trace-ascii log/50/trace177 --trace-config all --trace-time http://127.0.0.1:45651/177 -u auser:apasswd --digest -d "junkelijunk" > log/50/stdout177 2> log/50/stderr177 177: protocol FAILED! There was no content at all in the file log/50/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/50/ dir after test 177 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind177 ../src/curl -q --output log/50/curl177.out --include --trace-ascii log/50/trace177 --trace-config all --trace-time http://127.0.0.1:45651/177 -u auser:apasswd --digest -d "junkelijunk" > log/50/stdout177 2> log/50/stderr177 === End of file commands.log === Start of file http_server.log 09:40:37.288998 ====> Client connect 09:40:37.289322 accept_connection 3 returned 4 09:40:37.289571 accept_connection 3 returned 0 09:40:37.289723 Read 93 bytes 09:40:37.289806 Process 93 bytes request 09:40:37.289879 Got request: GET /verifiedserver HTTP/1.1 09:40:37.289943 Are-we-friendly question received 09:40:37.290147 Wrote request (93 bytes) input to log/50/server.input 09:40:37.290313 Identifying ourselves as friends 09:40:37.291092 Response sent (56 bytes) and written to log/50/server.response 09:40:37.291210 special request received, no persistency 09:40:37.291291 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45651... * Connected to 127.0.0.1 (127.0.0.1) port 45651 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45651 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73759 === End of file http_verify.out === Start of file server.cmd Testnum 177 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73759 === End of file server.response === Start of file valgrind177 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind177 test 0176...[HTTP POST -CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind197 ../src/curl -q --include --trace-ascii log/12/trace197 --trace-config all --trace-time http://127.0.0.1:45579/197 --retry 1000 > log/12/stdout197 2> log/12/stderr197 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind202 ../src/curl -q --trace-ascii log/8/trace202 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/8/test202.txt FILE://localhost/build/curl/src/build-curl/tests/log/8/test202.txt > log/8/stdout202 2> log/8/stderr202 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind194 ../src/curl -q --output log/32/curl194.out --include --trace-ascii log/32/trace194 --trace-config all --trace-time http://127.0.0.1:45607/want/194 -C 87 --fail > log/32/stdout194 2> log/32/stderr194 -ntlm to server not requiring any auth at all] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind176 ../src/curl -q --output log/64/curl176.out --include --trace-ascii log/64/trace176 --trace-config all --trace-time http://127.0.0.1:33073/176 -u auser:apasswd --ntlm -d "junkelijunk" > log/64/stdout176 2> log/64/stderr176 176: protocol FAILED! There was no content at all in the file log/64/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/64/ dir after test 176 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind176 ../src/curl -q --output log/64/curl176.out --include --trace-ascii log/64/trace176 --trace-config all --trace-time http://127.0.0.1:33073/176 -u auser:apasswd --ntlm -d "junkelijunk" > log/64/stdout176 2> log/64/stderr176 === End of file commands.log === Start of file http_server.log 09:40:37.052824 ====> Client connect 09:40:37.053141 accept_connection 3 returned 4 09:40:37.053319 accept_connection 3 returned 0 09:40:37.056119 Read 93 bytes 09:40:37.056270 Process 93 bytes request 09:40:37.056370 Got request: GET /verifiedserver HTTP/1.1 09:40:37.056558 Are-we-friendly question received 09:40:37.056820 Wrote request (93 bytes) input to log/64/server.input 09:40:37.057109 Identifying ourselves as friends 09:40:37.057934 Response sent (56 bytes) and written to log/64/server.response 09:40:37.058042 special request received, no persistency 09:40:37.058123 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33073... * Connected to 127.0.0.1 (127.0.0.1) port 33073 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33073 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73748 === End of file http_verify.out === Start of file server.cmd Testnum 176 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73748 === End of file server.response === Start of file valgrind176 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind176 test 0198...[HTTP GET --retry on 503 error with output to file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind198 ../src/curl -q --output log/33/curl198.out --include --trace-ascii log/33/trace198 --trace-config all --trace-time http://127.0.0.1:36559/198 --retry 1000 > log/33/stdout198 2> log/33/stderr198 198: protocol FAILED! There was no content at all in the file log/33/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/33/ dir after test 198 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind198 ../src/curl -q --output log/33/curl198.out --include --trace-ascii log/33/trace198 --trace-config all --trace-time http://127.0.0.1:36559/198 --retry 1000 > log/33/stdout198 2> log/33/stderr198 === End of file commands.log === Start of file http_server.log 09:40:37.618325 ====> Client connect 09:40:37.618759 accept_connection 3 returned 4 09:40:37.618922 accept_connection 3 returned 0 09:40:37.619049 Read 93 bytes 09:40:37.619139 Process 93 bytes request 09:40:37.619237 Got request: GET /verifiedserver HTTP/1.1 09:40:37.619332 Are-we-friendly question received 09:40:37.620700 Wrote request (93 bytes) input to log/33/server.input 09:40:37.620884 Identifying ourselves as friends 09:40:37.621613 Response sent (56 bytes) and written to log/33/server.response 09:40:37.621717 special request received, no persistency 09:40:37.621801 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36559... * Connected to 127.0.0.1 (127.0.0.1) port 36559 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36559 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73773 === End of file http_verify.out === Start of file server.cmd Testnum 198 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73773 === End of file server.response === Start of file valgrind198 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind198 test 0186...[HTTP RFC1867-type formposting with types on text fields] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind186 ../src/curl -q --output log/46/curl186.out --include --trace-ascii log/46/trace186 --trace-config all --trace-time http://127.0.0.1:46523/we/want/1CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind188 ../src/curl -q --output log/52/curl188.out --include --trace-ascii log/52/trace188 --trace-config all --trace-time http://127.0.0.1:40089/188 -C 50 -L > log/52/stdout188 2> log/52/stderr188 86 -F "name=daniel;type=moo/foo-.4" -F "html= hello;type=text/html;charset=verymoo" > log/46/stdout186 2> log/46/stderr186 186: protocol FAILED! There was no content at all in the file log/46/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/46/ dir after test 186 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind186 ../src/curl -q --output log/46/curl186.out --include --trace-ascii log/46/trace186 --trace-config all --trace-time http://127.0.0.1:46523/we/want/186 -F "name=daniel;type=moo/foo-.4" -F "html= hello;type=text/html;charset=verymoo" > log/46/stdout186 2> log/46/stderr186 === End of file commands.log === Start of file http_server.log 09:40:37.429069 ====> Client connect 09:40:37.429391 accept_connection 3 returned 4 09:40:37.429749 accept_connection 3 returned 0 09:40:37.429898 Read 93 bytes 09:40:37.430012 Process 93 bytes request 09:40:37.430102 Got request: GET /verifiedserver HTTP/1.1 09:40:37.430195 Are-we-friendly question received 09:40:37.430537 Wrote request (93 bytes) input to log/46/server.input 09:40:37.431004 Identifying ourselves as friends 09:40:37.433532 Response sent (56 bytes) and written to log/46/server.response 09:40:37.433666 special request received, no persistency 09:40:37.433741 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46523... * Connected to 127.0.0.1 (127.0.0.1) port 46523 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46523 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 75714 === End of file http_verify.out === Start of file server.cmd Testnum 186 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 75714 === End of file server.response === Start of file valgrind186 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind186 test 0187...[HTTP redirect with bad host name separation and slash in parameters] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind187 ../src/curl -q --output log/55/curl187.out --include --trace-ascii log/55/trace187 --trace-config all --trace-time http://127.0.0.1:33071?oh=what-weird=test/187 -L > log/55/stdout187 2> log/55/stderr187 187: protocol FAILED! There was no content at all in the file log/55/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/55/ dir after test 187 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind187 ../src/curl -q --output log/55/curl187.out --include --trace-ascii log/55/trace187 --trace-config all --trace-time http://127.0.0.1:33071?oh=what-weird=test/187 -L > log/55/stdout187 2> log/55/stderr187 === End of file commands.log === Start of file http_server.log 09:40:37.594879 ====> Client connect 09:40:37.595195 accept_connection 3 returned 4 09:40:37.595371 accept_connection 3 returned 0 09:40:37.595774 Read 93 bytes 09:40:37.595892 Process 93 bytes request 09:40:37.595980 Got request: GET /verifiedserver HTTP/1.1 09:40:37.596058 Are-we-friendly question received 09:40:37.596281 Wrote request (93 bytes) input to log/55/server.input 09:40:37.596622 Identifying ourselves as friends 09:40:37.597582 Response sent (56 bytes) and written to log/55/server.response 09:40:37.599642 special request received, no persistency 09:40:37.599777 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33071... * Connected to 127.0.0.1 (127.0.0.1) port 33071 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33071 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73757 === End of file http_verify.out === Start of file server.cmd Testnum 187 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73757 === End of file server.response === Start of file valgrind187 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind187 test 0201...[missing file:// file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind201 ../src/curl -q --output log/57/curl201.out --include --trace-ascii log/57/trace201 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/57/non-existent-file.txt > log/57/stdout201 2> log/57/stderr201 curl returned 1, when expecting 37 201: exit FAILED == Contents of files in the log/57/ dir after test 201 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind201 ../src/curl -q --output log/57/curl201.out --include --trace-ascii log/57/trace201 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/57/non-existent-file.txt > log/57/stdout201 2> log/57/stderr201 === End of file commands.log === Start of file server.cmd Testnum 201 === End of file server.cmd === Start of file valgrind201 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind201 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind204 ../src/curl -q --output log/31/curl204.out --trace-ascii log/31/trace204 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/31/result204.txt -T log/31/upload204.txt > log/31/stdout204 2> log/31/stderr204 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind185 ../src/curl -q --output log/56/curl185.out --include --trace-ascii log/56/trace185 --trace-config all --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43265 > log/56/stdout185 2> log/56/stderr185 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind184 ../src/curl -q --output log/35/curl184.out --include --trace-ascii log/35/trace184 --trace-config all --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43179 > log/35/stdout184 2> log/35/stderr184 test 0202...[two file:// URLs to stdout] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind202 ../src/curl -q --trace-ascii log/8/trace202 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/8/test202.txt FILE://localhost/build/curl/src/build-curl/tests/log/8/test202.txt > log/8/stdout202 2> log/8/stderr202 202: stdout FAILED: --- log/8/check-expected 2025-07-18 09:40:38.549608879 +0000 +++ log/8/check-generated 2025-07-18 09:40:38.548609279 +0000 @@ -1,2 +0,0 @@ -contents in a single file[LF] -contents in a single file[LF] == Contents of files in the log/8/ dir after test 202 === Start of file check-expected contents in a single file[LF] contents in a single file[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind202 ../src/curl -q --trace-ascii log/8/trace202 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/8/test202.txt FILE://localhost/build/curl/src/build-curl/tests/log/8/test202.txt > log/8/stdout202 2> log/8/stderr202 === End of file commands.log === Start of file server.cmd Testnum 202 === End of file server.cmd === Start of file test202.txt contents in a single file === End of file test202.txt === Start of file valgrind202 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind202 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind179 ../src/curl -q --output log/62/curl179.out --include --trace-ascii log/62/trace179 --trace-config all --trace-time http://supertrooper.fake/c/179 -b log/62/injar179 -x 127.0.0.1:38899 > log/62/stdout179 2> log/62/stderr179 test 0197...[HTTP GET --retry on 503 error with output to stdout] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind197 ../src/curl -q --include --trace-ascii log/12/trace197 --trace-config all --trace-time http://127.0.0.1:45579/197 --retry 1000 > log/12/stdout197 2> log/12/stderr197 197: stdout FAILED: --- log/12/check-expected 2025-07-18 09:40:38.606609250 +0000 +++ log/12/check-generated 2025-07-18 09:40:38.604609251 +0000 @@ -1,11 +0,0 @@ -HTTP/1.1 503 BAD swsbounce[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Content-Length: 21[LF] -[LF] -server not available[LF] -HTTP/1.1 200 OK[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Content-Length: 3[LF] -Connection: close[LF] -[LF] -ok[LF] == Contents of files in the log/12/ dir after test 197 === Start of file check-expected HTTP/1.1 503 BAD swsbounce[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Content-Length: 21[LF] [LF] server not available[LF] HTTP/1.1 200 OK[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Content-Length: 3[LF] Connection: close[LF] [LF] ok[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind197 ../src/curl -q --include --trace-ascii log/12/trace197 --trace-config all --trace-time http://127.0.0.1:45579/197 --retry 1000 > log/12/stdout197 2> log/12/stderr197 === End of file commands.log === Start of file http_server.log 09:40:37.610028 ====> Client connect 09:40:37.610624 accept_connection 3 returned 4 09:40:37.610830 accept_connection 3 returned 0 09:40:37.617957 Read 93 bytes 09:40:37.618113 Process 93 bytes request 09:40:37.618213 Got request: GET /verifiedserver HTTP/1.1 09:40:37.618306 Are-we-friendly question received 09:40:37.618659 Wrote request (93 bytes) input to log/12/server.input 09:40:37.618881 Identifying ourselves as friends 09:40:37.619891 Response sent (56 bytes) and written to log/12/server.response 09:40:37.620005 special request received, no persistency 09:40:37.620069 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45579... * Connected to 127.0.0.1 (127.0.0.1) port 45579 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45579 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73799 === End of file http_verify.out === Start of file server.cmd Testnum 197 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73799 === End of file server.response === Start of file valgrind197 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind197 test 0194...[HTTP resume transfer with the whole file already downloaded and --fail] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind194 ../src/curl -q --output log/32/curl194.out --include --trace-ascii log/32/trace194 --trace-config all --trace-time http://127.0.0.1:45607/want/194 -C 87 --fail > log/32/stdout194 2> log/32/stderr194 194: protocol FAILED! There was no content at all in the file log/32/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/32/ dir after test 194 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind194 ../src/curl -q --output log/32/curl194.out --include --trace-ascii log/32/trace194 --trace-config all --trace-time http://127.0.0.1:45607/want/194 -C 87 --fail > log/32/stdout194 2> log/32/stderr194 === End of file commands.log === Start of file http_server.log 09:40:37.542860 ====> Client connect 09:40:37.543158 accept_connection 3 returned 4 09:40:37.543321 accept_connection 3 returned 0 09:40:37.545060 Read 93 bytes 09:40:37.545260 Process 93 bytes request 09:40:37.545347 Got request: GET /verifiedserver HTTP/1.1 09:40:37.545417 Are-we-friendly question received 09:40:37.545795 Wrote request (93 bytes) input to log/32/server.input 09:40:37.546021 Identifying ourselves as friends 09:40:37.546759 Response sent (56 bytes) and written to log/32/server.response 09:40:37.546871 special request received, no persistency 09:40:37.546940 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45607... * Connected to 127.0.0.1 (127.0.0.1) port 45607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45607 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73778 === End of file http_verify.out === Start of file server.cmd Testnum 194 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73778 === End of file server.response === Start of file valgrind194 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind:CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind205 ../src/curl -q --output log/49/curl205.out --trace-ascii log/49/trace205 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/49/nonexisting/result205.txt -T log/49/upload205.txt > log/49/stdout205 2> log/49/stderr205 package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind194 test 0188...[HTTP GET with resume and redirect] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind188 ../src/curl -q --output log/52/curl188.out --include --trace-ascii log/52/trace188 --trace-config all --trace-time http://127.0.0.1:40089/188 -C 50 -L > log/52/stdout188 2> log/52/stderr188 188: protocol FAILED! There was no content at all in the file log/52/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/52/ dir after test 188 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind188 ../src/curl -q --output log/52/curl188.out --include --trace-ascii log/52/trace188 --trace-config all --trace-time http://127.0.0.1:40089/188 -C 50 -L > log/52/stdout188 2> log/52/stderr188 === End of file commands.log === Start of file http_server.log 09:40:37.407997 ====> Client connect 09:40:37.408378 accept_connection 3 returned 4 09:40:37.408908 accept_connection 3 returned 0 09:40:37.409233 Read 93 bytes 09:40:37.413001 Process 93 bytes request 09:40:37.413139 Got request: GET /verifiedserver HTTP/1.1 09:40:37.413296 Are-we-friendly question received 09:40:37.413768 Wrote request (93 bytes) input to log/52/server.input 09:40:37.414100 Identifying ourselves as friends 09:40:37.416766 Response sent (56 bytes) and written to log/52/server.response 09:40:37.416884 special request received, no persistency 09:40:37.416986 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40089... * Connected to 127.0.0.1 (127.0.0.1) port 40089 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40089 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73758 === End of file http_verify.out === Start of file server.cmd Testnum 188 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73758 === End of file server.response === Start of file valgrind188 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind188 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind195 ../src/curl -q --output log/36/curl195.out --include --trace-ascii log/36/trace195 --trace-config all --trace-time ftp://127.0.0.1:45965/195 > log/36/stdout195 2> log/36/stderr195 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind189 ../src/curl -q --output log/47/curl189.out --include --trace-ascii log/47/trace189 --trace-config all --trace-time http://127.0.0.1:41103/189 -C 50 -L > log/47/stdout189 2> log/47/stderr189 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind196 ../src/curl -q --include --trace-ascii log/22/trace196 --trace-config all --trace-time ftp://127.0.0.1:41867/196 --retry 1 -w '%{num_retries}\n' > log/22/stdout196 2> log/22/stderr196 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind193 ../src/curl -q --include --trace-ascii log/37/trace193 --trace-config all --trace-time http://127.0.0.1:37551/193 -w "%{num_connects}\n" -L > log/37/stdout193 2> log/37/stderr193 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind199 ../src/curl -q --output log/60/curl199.out --include --trace-ascii log/60/trace199 --trace-config all --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:38843/{199,199}" -G > log/60/stdout199 2> log/60/stderr199 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind191 ../src/curl -q --output log/21/curl191.out --include --trace-ascii log/21/trace191 --trace-config all --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:40295/191" > log/21/stdout191 2> log/21/stderr191 test 0204...["upload" with file://] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind204 ../src/curl -q --output log/31/curl204.out --trace-ascii log/31/trace204 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/31/result204.txt -T log/31/upload204.txt > log/31/stdout204 2> log/31/stderr204 204: output (log/31/result204.txt) FAILED: --- log/31/check-expected 2025-07-18 09:40:38.701110782 +0000 +++ log/31/check-generated 2025-07-18 09:40:38.699609203 +0000 @@ -1,5 +0,0 @@ -data[LF] -in[LF] -file[LF] -to[LF] -write[LF] == Contents of files in the log/31/ dir after test 204 === Start of file check-expected data[LF] in[LF] file[LF] to[LF] write[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind204 ../src/curl -q --output log/31/curl204.out --trace-ascii log/31/trace204 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/31/result204.txt -T log/31/upload204.txt > log/31/stdout204 2> log/31/stderr204 === End of file commands.log === Start of file server.cmd Testnum 204 === End of file server.cmd === Start of file upload204.txt data in file to write === End of file upload204.txt === Start of file valgrind204 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind204 test 0184...[HTTP replace Host: when following Location: to new host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind184 ../src/curl -q --output log/35/curl184.out --include --trace-ascii log/35/trace184 --trace-config all --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43179 > log/35/stdout184 2> log/35/stderr184 184: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 184 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind184 ../src/curl -q --output log/35/curl184.out --include --trace-ascii log/35/trace184 --trace-config all --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43179 > log/35/stdout184 2> log/35/stderr184 === End of file commands.log === Start of file http_server.log 09:40:37.486193 ====> Client connect 09:40:37.486656 accept_connection 3 returned 4 09:40:37.486853 accept_connection 3 returned 0 09:40:37.486978 Read 93 bytes 09:40:37.487077 Process 93 bytes request 09:40:37.487166 Got request: GET /verifiedserver HTTP/1.1 09:40:37.487239 Are-we-friendly question received 09:40:37.487506 Wrote request (93 bytes) input to log/35/server.input 09:40:37.487712 Identifying ourselves as friends 09:40:37.488359 Response sent (56 bytes) and written to log/35/server.response 09:40:37.488538 special request received, no persistency 09:40:37.488607 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43179... * Connected to 127.0.0.1 (127.0.0.1) port 43179 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43179 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73771 === End of file http_verify.out === Start of file server.cmd Testnum 184 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73771 === End of file server.response === Start of file valgrind184 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind184 test 0185...[HTTP replace Host: when following Location: on the same host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind185 ../src/curl -q --output log/56/curl185.out --include --trace-ascii log/56/trace185 --trace-config all --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43265 > log/56/stdout185 2> log/56/stderr185 185: protocol FAILED! There was no content at all in the file log/56/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/56/ dir after test 185 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind185 ../src/curl -q --output log/56/curl185.out --include --trace-ascii log/56/trace185 --trace-config all --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43265 > log/56/stdout185 2> log/56/stderr185 === End of file commands.log === Start of file http_server.log 09:40:37.424928 ====> Client connect 09:40:37.426630 accept_connection 3 returned 4 09:40:37.426884 accept_connection 3 returned 0 09:40:37.427053 Read 93 bytes 09:40:37.427185 Process 93 bytes request 09:40:37.427291 Got request: GET /verifiedserver HTTP/1.1 09:40:37.427376 Are-we-friendly question received 09:40:37.427715 Wrote request (93 bytes) input to log/56/server.input 09:40:37.427945 Identifying ourselves as friends 09:40:37.429878 Response sent (56 bytes) and written to log/56/server.response 09:40:37.430024 special request received, no persistency 09:40:37.430122 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43265... * Connected to 127.0.0.1 (127.0.0.1) port 43265 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43265 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73754 === End of file http_verify.out === Start of file server.cmd Testnum 185 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73754 === End of file server.response === Start of file valgrind185 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind185 test 0179...[HTTP using proxy and cookies with path checks] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind179 ../src/curl -q --output log/62/curl179.out --include --trace-ascii log/62/trace179 --trace-config all --trace-time http://supertrooper.fake/c/179 -b log/62/injar179 -x 127.0.0.1:38899 > log/62/stdout179 2> log/62/stderr179 179: protocol FAILED! There was no content at all in the file log/62/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/62/ dir after test 179 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind179 ../src/curl -q --output log/62/curl179.out --include --trace-ascii log/62/trace179 --trace-config all --trace-time http://supertrooper.fake/c/179 -b log/62/injar179 -x 127.0.0.1:38899 > log/62/stdout179 2> log/62/stderr179 === End of file commands.log === Start of file http_server.log 09:40:37.394759 ====> Client connect 09:40:37.395138 accept_connection 3 returned 4 09:40:37.395330 accept_connection 3 returned 0 09:40:37.402643 Read 93 bytes 09:40:37.402799 Process 93 bytes request 09:40:37.402897 Got request: GET /verifiedserver HTTP/1.1 09:40:37.402986 Are-we-friendly question received 09:40:37.403261 Wrote request (93 bytes) input to log/62/server.input 09:40:37.403553 Identifying ourselves as friends 09:40:37.410270 Response sent (56 bytes) and written to log/62/server.response 09:40:37.416583 special request received, no persistency 09:40:37.416757 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38899... * Connected to 127.0.0.1 (127.0.0.1) port 38899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73749 === End of file http_verify.out === Start of file injar179 supertrooper.fake FALSE /a FALSE 22139150993 mooo indeed supertrooper.fake FALSE /b FALSE 0 moo1 indeed supertrooper.fake FALSE /c FALSE 22139150993 moo2 indeed === End of file injar179 === Start of file server.cmd Testnum 179 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73749 === End of file server.response === Start of file valgrind179 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind179 test 0191...[FTP URL with ?-letters in username and password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind191 ../src/curl -q --output log/21/curl191.out --include --trace-ascii log/21/trace191 --trace-config all --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:40295/191" > log/21/stdout191 2> log/21/stderr191 191: protocol FAILED! There was no content at all in the file log/21/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/21/ dir after test 191 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind191 ../src/curl -q --output log/21/curl191.out --include --trace-ascii log/21/trace191 --trace-config all --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:40295/191" > log/21/stdout191 2> log/21/stderr191 === End of file commands.log === Start of file ftp_server.log 09:40:37.408037 ====> Client connect 09:40:37.409259 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:37.412489 < "USER anonymous" 09:40:37.414545 > "331 We are happy you popped in![CR][LF]" 09:40:37.415361 < "PASS ftp@example.com" 09:40:37.415900 > "230 Welcome you silly person[CR][LF]" 09:40:37.418966 < "PWD" 09:40:37.420854 > "257 "/" is current directory[CR][LF]" 09:40:37.423317 < "EPSV" 09:40:37.423669 ====> Passive DATA channel requested by client 09:40:37.423951 DATA sockfilt for passive data channel starting... 09:40:37.438418 DATA sockfilt for passive data channel started (pid 83560) 09:40:37.439409 DATA sockfilt for passive data channel listens on port 35079 09:40:37.442493 > "229 Entering Passive Mode (|||35079|)[LF]" 09:40:37.442845 Client has been notified that DATA conn will be accepted on port 35079 09:40:37.443214 Client connects to port 35079 09:40:37.443474 ====> Client established passive DATA connection on port 35079 09:40:37.446366 < "TYPE I" 09:40:37.447549 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:37.450881 < "SIZE verifiedserver" 09:40:37.451355 > "213 17[CR][LF]" 09:40:37.453648 < "RETR verifiedserver" 09:40:37.454240 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:37.455068 =====> Closing passive DATA connection... 09:40:37.455301 Server disconnects passive DATA connection 09:40:37.460898 Server disconnected passive DATA connection 09:40:37.461174 DATA sockfilt for passive data channel quits (pid 83560) 09:40:37.466935 DATA sockfilt for passive data channel quit (pid 83560) 09:40:37.467404 =====> Closed passive DATA connection 09:40:37.471538 > "226 File transfer complete[CR][LF]" 09:40:37.501053 < "QUIT" 09:40:37.501431 > "221 bye bye baby[CR][LF]" 09:40:37.506246 MAIN sockfilt said DISC 09:40:37.507625 ====> Client disconnected 09:40:37.508388 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:37.660973 ====> Client connect 09:40:37.663259 Received DATA (on stdin) 09:40:37.663390 > 160 bytes data, server => client 09:40:37.663565 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:37.663666 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:37.663743 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:37.666525 < 16 bytes data, client => server 09:40:37.666644 'USER anonymous\r\n' 09:40:37.666939 Received DATA (on stdin) 09:40:37.667060 > 33 bytes data, server => client 09:40:37.667191 '331 We are happy you popped in!\r\n' 09:40:37.667895 < 22 bytes data, client => server 09:40:37.668036 'PASS ftp@example.com\r\n' 09:40:37.670067 Received DATA (on stdin) 09:40:37.670282 > 30 bytes data, server => client 09:40:37.670394 '230 Welcome you silly person\r\n' 09:40:37.671567 < 5 bytes data, client => server 09:40:37.671856 'PWD\r\n' 09:40:37.673210 Received DATA (on stdin) 09:40:37.673538 > 30 bytes data, server => client 09:40:37.673868 '257 "/" is current directory\r\n' 09:40:37.676130 < 6 bytes data, client => server 09:40:37.676368 'EPSV\r\n' 09:40:37.693554 Received DATA (on stdin) 09:40:37.693699 > 38 bytes data, server => client 09:40:37.693880 '229 Entering Passive Mode (|||35079|)\n' 09:40:37.695295 < 8 bytes data, client => server 09:40:37.695535 'TYPE I\r\n' 09:40:37.700429 Received DATA (on stdin) 09:40:37.700640 > 33 bytes data, server => client 09:40:37.700811 '200 I modify TYPE as you wanted\r\n' 09:40:37.702036 < 21 bytes data, client => server 09:40:37.702194 'SIZE verifiedserver\r\n' 09:40:37.705394 Received DATA (on stdin) 09:40:37.705615 > 8 bytes data, server => client 09:40:37.705715 '213 17\r\n' 09:40:37.706323 < 21 bytes data, client => server 09:40:37.706529 'RETR verifiedserver\r\n' 09:40:37.710555 Received DATA (on stdin) 09:40:37.710756 > 29 bytes data, server => client 09:40:37.710835 '150 Binary junk (17 bytes).\r\n' 09:40:37.726843 Received DATA (on stdin) 09:40:37.727013 > 28 bytes data, server => client 09:40:37.727090 '226 File transfer complete\r\n' 09:40:37.753840 < 6 bytes data, client => server 09:40:37.753999 'QUIT\r\n' 09:40:37.755586 Received DATA (on stdin) 09:40:37.755723 > 18 bytes data, server => client 09:40:37.755806 '221 bye bye baby\r\n' 09:40:37.759606 ====> Client disconnect 09:40:37.760745 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:37.690194 Running IPv4 version 09:40:37.690955 Listening on port 35079 09:40:37.691646 Wrote pid 83560 to log/21/server/ftp_sockdata.pid 09:40:37.691817 Received PING (on stdin) 09:40:37.692589 Received PORT (on stdin) 09:40:37.695877 ====> Client connect 09:40:37.711135 Received DATA (on stdin) 09:40:37.711273 > 17 bytes data, server => client 09:40:37.711349 'WE ROOLZ: 78763\r\n' 09:40:37.711676 Received DISC (on stdin) 09:40:37.711816 ====> Client forcibly disconnected 09:40:37.718217 Received QUIT (on stdin) 09:40:37.718419 quits 09:40:37.718969 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 191 === End of file server.cmd === Start of file valgrind191 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind191 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind190 ../src/curl -q --output log/38/curl190.out --include --trace-ascii log/38/trace190 --trace-config all --trace-time ftp://127.0.0.1:37781/path/to/file/190 -m 10 > log/38/stdout190 2> log/38/stderr190 * kill pid for ftp-ctrl => 83813 RUN: Process with pid 82508 signalled to die test 0196...[FTP transient error, retry request once] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind196 ../src/curl -q --include --trace-ascii log/22/trace196 --trace-config all --trace-time ftp://127.0.0.1:41867/196 --retry 1 -w '%{num_retries}\n' > log/22/stdout196 2> log/22/stderr196 196: stdout FAILED: --- log/22/check-expected 2025-07-18 09:40:38.829488357 +0000 +++ log/22/check-generated 2025-07-18 09:40:38.828609137 +0000 @@ -1 +0,0 @@ -1[LF] == Contents of files in the log/22/ dir after test 196 === Start of file check-expected 1[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind196 ../src/curl -q --include --trace-ascii log/22/trace196 --trace-config all --trace-time ftp://127.0.0.1:41867/196 --retry 1 -w '%{num_retries}\n' > log/22/stdout196 2> log/22/stderr196 === End of file commands.log === Start of file ftp_server.log 09:40:37.349547 ====> Client connect 09:40:37.351036 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:37.355195 < "USER anonymous" 09:40:37.355645 > "331 We are happy you popped in![CR][LF]" 09:40:37.357641 < "PASS ftp@example.com" 09:40:37.360279 > "230 Welcome you silly person[CR][LF]" 09:40:37.365930 < "PWD" 09:40:37.367153 > "257 "/" is current directory[CR][LF]" 09:40:37.368471 < "EPSV" 09:40:37.368716 ====> Passive DATA channel requested by client 09:40:37.369012 DATA sockfilt for passive data channel starting... 09:40:37.391106 DATA sockfilt for passive data channel started (pid 83494) 09:40:37.395395 DATA sockfilt for passive data channel listens on port 34503 09:40:37.398808 > "229 Entering Passive Mode (|||34503|)[LF]" 09:40:37.399059 Client has been notified that DATA conn will be accepted on port 34503 09:40:37.399277 Client connects to port 34503 09:40:37.399468 ====> Client established passive DATA connection on port 34503 09:40:37.400808 < "TYPE I" 09:40:37.401450 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:37.403424 < "SIZE verifiedserver" 09:40:37.404062 > "213 17[CR][LF]" 09:40:37.408087 < "RETR verifiedserver" 09:40:37.408502 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:37.415673 =====> Closing passive DATA connection... 09:40:37.417463 Server disconnects passive DATA connection 09:40:37.419018 Server disconnected passive DATA connection 09:40:37.419385 DATA sockfilt for passive data channel quits (pid 83494) 09:40:37.422379 DATA sockfilt for passive data channel quit (pid 83494) 09:40:37.423069 =====> Closed passive DATA connection 09:40:37.424419 > "226 File transfer complete[CR][LF]" 09:40:37.455294 < "QUIT" 09:40:37.455638 > "221 bye bye baby[CR][LF]" 09:40:37.462866 MAIN sockfilt said DISC 09:40:37.463196 ====> Client disconnected 09:40:37.463658 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:37.602677 ====> Client connect 09:40:37.604705 Received DATA (on stdin) 09:40:37.604859 > 160 bytes data, server => client 09:40:37.604942 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:37.605015 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:37.605080 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:37.607771 < 16 bytes data, client => server 09:40:37.608045 'USER anonymous\r\n' 09:40:37.609356 Received DATA (on stdin) 09:40:37.609620 > 33 bytes data, server => client 09:40:37.609721 '331 We are happy you popped in!\r\n' 09:40:37.610623 < 22 bytes data, client => server 09:40:37.610755 'PASS ftp@example.com\r\n' 09:40:37.614335 Received DATA (on stdin) 09:40:37.614556 > 30 bytes data, server => client 09:40:37.614665 '230 Welcome you silly person\r\n' 09:40:37.618646 < 5 bytes data, client => server 09:40:37.618789 'PWD\r\n' 09:40:37.620136 Received DATA (on stdin) 09:40:37.620271 > 30 bytes data, server => client 09:40:37.620484 '257 "/" is current directory\r\n' 09:40:37.621534 < 6 bytes data, client => server 09:40:37.621666 'EPSV\r\n' 09:40:37.649965 Received DATA (on stdin) 09:40:37.650205 > 38 bytes data, server => client 09:40:37.650609 '229 Entering Passive Mode (|||34503|)\n' 09:40:37.651892 < 8 bytes data, client => server 09:40:37.652027 'TYPE I\r\n' 09:40:37.655498 Received DATA (on stdin) 09:40:37.655636 > 33 bytes data, server => client 09:40:37.655714 '200 I modify TYPE as you wanted\r\n' 09:40:37.656259 < 21 bytes data, client => server 09:40:37.656379 'SIZE verifiedserver\r\n' 09:40:37.658204 Received DATA (on stdin) 09:40:37.658394 > 8 bytes data, server => client 09:40:37.658552 '213 17\r\n' 09:40:37.659913 < 21 bytes data, client => server 09:40:37.660216 'RETR verifiedserver\r\n' 09:40:37.663335 Received DATA (on stdin) 09:40:37.663580 > 29 bytes data, server => client 09:40:37.663726 '150 Binary junk (17 bytes).\r\n' 09:40:37.677412 Received DATA (on stdin) 09:40:37.677617 > 28 bytes data, server => client 09:40:37.677837 '226 File transfer complete\r\n' 09:40:37.706422 < 6 bytes data, client => server 09:40:37.706692 'QUIT\r\n' 09:40:37.709675 Received DATA (on stdin) 09:40:37.709795 > 18 bytes data, server => client 09:40:37.709870 '221 bye bye baby\r\n' 09:40:37.712736 ====> Client disconnect 09:40:37.718693 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:37.640544 Running IPv4 version 09:40:37.641256 Listening on port 34503 09:40:37.641702 Wrote pid 83494 to log/22/server/ftp_sockdata.pid 09:40:37.644142 Received PING (on stdin) 09:40:37.645543 Received PORT (on stdin) 09:40:37.652196 ====> Client connect 09:40:37.664988 Received DATA (on stdin) 09:40:37.665368 > 17 bytes data, server => client 09:40:37.668248 'WE ROOLZ: 77494\r\n' 09:40:37.671698 Received DISC (on stdin) 09:40:37.672086 ====> Client forcibly disconnected 09:40:37.673388 Received QUIT (on stdin) 09:40:37.673643 quits 09:40:37.674093 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 430 temporarily not available Testnum 196 === End of file server.cmd === Start of file valgrind196 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind196 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/36/server/ftp_server.pid" --logfile "log/36/ftp_server.log" --logdir "log/36" --portfile "log/36/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 45965 (log/36/server/ftp_server.port) RUN: FTP server is PID 82698 port 45965 * pid ftp => 82698 82698 test 0195...[FTP response 530 after PASS, temporarily not allowed access] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind195 ../src/curl -q --output log/36/curl195.out --include --trace-ascii log/36/trace195 --trace-config all --trace-time ftp://127.0.0.1:45965/195 > log/36/stdout195 2> log/36/stderr195 195: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 195 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind195 ../src/curl -q --output log/36/curl195.out --include --trace-ascii log/36/trace195 --trace-config all --trace-time ftp://127.0.0.1:45965/195 > log/36/stdout195 2> log/36/stderr195 === End of file commands.log === Start of file ftp_server.log 09:40:37.386892 FTP server listens on port IPv4/45965 09:40:37.388312 logged pid 82698 in log/36/server/ftp_server.pid 09:40:37.388555 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:37.634306 Running IPv4 version 09:40:37.634954 Listening on port 45965 09:40:37.635362 Wrote pid 83482 to log/36/server/ftp_sockctrl.pid 09:40:37.638856 Wrote port 45965 to log/36/server/ftp_server.port 09:40:37.639021 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd REPLY PASS 530 temporarily not available Testnum 195 === End of file server.cmd === Start of file valgrind195 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind195 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind206 ../src/curl -q --output log/25/curl206.out --include --trace-ascii log/25/trace206 --trace-config all --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy http://127.0.0.1:41727 --proxy-user silly:person --proxy-digest --proxytunnel > log/25/stdout206 2> log/25/stderr206 RUN: Process with pid 82508 gracefully died test 0193...[HTTP GET -w num_connects with redirected fetch (2 connects)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind193 ../src/curl -q --include --trace-ascii log/37/trace193 --trace-config all --trace-time http://127.0.0.1:37551/193 -w "%{num_connects}\n" -L > log/37/stdout193 2> log/37/stderr193 193: stdout FAILED: --- log/37/check-expected 2025-07-18 09:40:38.930609086 +0000 +++ log/37/check-generated 2025-07-18 09:40:38.929609086 +0000 @@ -1,13 +0,0 @@ -HTTP/1.1 302 OK swsbounce swsclose[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Content-Length: 8[LF] -Connection: close[LF] -Location: ./193[LF] -[LF] -HTTP/1.1 200 OK[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Content-Length: 8[LF] -Connection: close[LF] -[LF] -monster[LF] -2[LF] == Contents of files in the log/37/ dir after test 193 === Start of file check-expected HTTP/1.1 302 OK swsbounce swsclose[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Content-Length: 8[LF] Connection: close[LF] Location: ./193[LF] [LF] HTTP/1.1 200 OK[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Content-Length: 8[LF] Connection: close[LF] [LF] monster[LF] 2[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind193 ../src/curl -q --include --trace-ascii log/37/trace193 --trace-config all --trace-time http://127.0.0.1:37551/193 -w "%{num_connects}\n" -L > log/37/stdout193 2> log/37/stderr193 === End of file commands.log === Start of file http_server.log 09:40:37.563714 ====> Client connect 09:40:37.564020 accept_connection 3 returned 4 09:40:37.564192 accept_connection 3 returned 0 09:40:37.564834 Read 93 bytes 09:40:37.564973 Process 93 bytes request 09:40:37.565045 Got request: GET /verifiedserver HTTP/1.1 09:40:37.565105 Are-we-friendly question received 09:40:37.565328 Wrote request (93 bytes) input to log/37/server.input 09:40:37.565994 Identifying ourselves as friends 09:40:37.568689 Response sent (56 bytes) and written to log/37/server.response 09:40:37.568806 special request received, no persistency 09:40:37.568874 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37551... * Connected to 127.0.0.1 (127.0.0.1) port 37551 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37551 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73772 === End of file http_verify.out === Start of file server.cmd Testnum 193 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73772 === End of file server.response === Start of file valgrind193 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind193 test 0189...[HTTP GET with resume and redirect (to a page that doesn't resume)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind189 ../src/curl -q --output log/47/curl189.out --include --trace-ascii log/47/trace189 --trace-config all --trace-time http://127.0.0.1:41103/189 -C 50 -L > log/47/stdout189 2> log/47/stderr189 189: protocol FAILED! There was no content at all in the file log/47/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/47/ dir after test 189 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind189 ../src/curl -q --output log/47/curl189.out --include --trace-ascii log/47/trace189 --trace-config all --trace-time http://127.0.0.1:41103/189 -C 50 -L > log/47/stdout189 2> log/47/stderr189 === End of file commands.log === Start of file http_server.log 09:40:37.662953 ====> Client connect 09:40:37.663278 accept_connection 3 returned 4 09:40:37.663537 accept_connection 3 returned 0 09:40:37.663700 Read 93 bytes 09:40:37.663793 Process 93 bytes request 09:40:37.663882 Got request: GET /verifiedserver HTTP/1.1 09:40:37.663960 Are-we-friendly question received 09:40:37.664190 Wrote request (93 bytes) input to log/47/server.input 09:40:37.664587 Identifying ourselves as friends 09:40:37.665695 Response sent (56 bytes) and written to log/47/server.response 09:40:37.665912 special request received, no persistency 09:40:37.665979 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41103... * Connected to 127.0.0.1 (127.0.0.1) port 41103 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41103 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73762 === End of file http_verify.out === Start of file server.cmd Testnum 189 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73762 === End of file server.response === Start of file valgrind189 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind189 test 0205...["upload" nonexisting with file://] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind205 ../src/curl -q --output log/49/curl205.out --trace-ascii log/49/trace205 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/49/nonexisting/result205.txt -T log/49/upload205.txt > log/49/stdout205 2> log/49/stderr205 curl returned 1, when expecting 23 205: exit FAILED == Contents of files in the log/49/ dir after test 205 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind205 ../src/curl -q --output log/49/curl205.out --trace-ascii log/49/trace205 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/49/nonexisting/result205.txt -T log/49/upload205.txt > log/49/stdout205 2> log/49/stderr205 === End of file commands.log === Start of file server.cmd Testnum 205 === End of file server.cmd === Start of file upload205.txt data in file to write === End of file upload205.txt === Start of file valgrind205 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind205 test 0199...[HTTP with -d, -G and {}] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind199 ../src/curl -q --output log/60/curl199.out --include --trace-ascii log/60/trace199 --trace-config all --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:38843/{199,199}" -G > log/60/stdout199 2> log/60/stderr199 199: protocol FAILED! There was no content at all in the file log/60/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/60/ dir after test 199 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind199 ../src/curl -q --output log/60/curl199.out --include --trace-ascii log/60/trace199 --trace-config all --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:38843/{199,199}" -G > log/60/stdout199 2> log/60/stderr199 === End of file commands.log === Start of file http_server.log 09:40:37.636852 ====> Client connect 09:40:37.637176 accept_connection 3 returned 4 09:40:37.637356 accept_connection 3 returned 0 09:40:37.641656 Read 93 bytes 09:40:37.641791 Process 93 bytes request 09:40:37.641886 Got request: GET /verifiedserver HTTP/1.1 09:40:37.641967 Are-we-friendly question received 09:40:37.642200 Wrote request (93 bytes) input to log/60/server.input 09:40:37.642385 Identifying ourselves as friends 09:40:37.648239 Response sent (56 bytes) and written to log/60/server.response 09:40:37.648379 special request received, no persistency 09:40:37.651712 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38843... * Connected to 127.0.0.1 (127.0.0.1) port 38843 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38843 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73750 === End of file http_verify.out === Start of file server.cmd Testnum 199 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73750 === End of file server.response === Start of file valgrind199 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind199 test 0206...[HTTP proxy CONNECT auth Digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind206 ../src/curl -q --output log/25/curl206.out --include --trace-ascii log/25/trace206 --trace-config all --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy http://127.0.0.1:41727 --proxy-user silly:person --proxy-digest --proxytunnel > log/25/stdout206 2> log/25/stderr206 206: protocol FAILED! There was no content at all in the file log/25/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/25/ dir after test 206 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind206 ../src/curl -q --output log/25/curl206.out --include --trace-ascii log/25/trace206 --trace-config all --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy http://127.0.0.1:41727 --proxy-user silly:person --proxy-digest --proxytunnel > log/25/stdout206 2> log/25/stderr206 === End of file commands.log === Start of file http_server.log 09:40:38.189829 ====> Client connect 09:40:38.193568 accept_conneCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind207 ../src/curl -q --output log/53/curl207.out --include --trace-ascii log/53/trace207 --trace-config all --trace-time http://127.0.0.1:34639/207 > log/53/stdout207 2> log/53/stderr207 ction 3 returned 4 09:40:38.193780 accept_connection 3 returned 0 09:40:38.193920 Read 93 bytes 09:40:38.194021 Process 93 bytes request 09:40:38.194126 Got request: GET /verifiedserver HTTP/1.1 09:40:38.194213 Are-we-friendly question received 09:40:38.194536 Wrote request (93 bytes) input to log/25/server.input 09:40:38.194743 Identifying ourselves as friends 09:40:38.195700 Response sent (56 bytes) and written to log/25/server.response 09:40:38.195831 special request received, no persistency 09:40:38.195901 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41727... * Connected to 127.0.0.1 (127.0.0.1) port 41727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73784 === End of file http_verify.out === Start of file server.cmd connection-monitor auth_required Testnum 206 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73784 === End of file server.response === Start of file valgrind206 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind206 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/38/server/ftp_server.pid" --logfile "log/38/ftp_server.log" --logdir "log/38" --portfile "log/38/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 37781 (log/38/server/ftp_server.port) RUN: FTP server is PID 82508 port 37781 * pid ftp => 82508 82508 test 0190...[FTP download with strict timeout and slow CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind190 ../src/curl -q --output log/38/curl190.out --include --trace-ascii log/38/trace190 --trace-config all --trace-time ftp://127.0.0.1:37781/path/to/file/190 -m 10 > log/38/stdout190 2> log/38/stderr190 190: protocol FAILED! There was no content at all in the file log/38/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/38/ dir after test 190 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind190 ../src/curl -q --output log/38/curl190.out --include --trace-ascii log/38/trace190 --trace-config all --trace-time ftp://127.0.0.1:37781/path/to/file/190 -m 10 > log/38/stdout190 2> log/38/stderr190 === End of file commands.log === Start of file ftp_server.log 09:40:37.646466 FTP server listens on port IPv4/37781 09:40:37.647733 logged pid 82508 in log/38/server/ftp_server.pid 09:40:37.648204 Awaiting input 09:40:38.858072 Failed to read input 09:40:38.858387 Error: FTP server, read zero 09:40:38.858624 Exited from sysread_or_die() at /build/curl/src/curl/tests/ftpserver.pl line 3128. FTP server, read zero === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:37.897015 Running IPv4 version 09:40:37.898033 Listening on port 37781 09:40:37.898705 Wrote pid 83813 to log/38/server/ftp_sockctrl.pid 09:40:37.899080 Wrote port 37781 to log/38/server/ftp_server.port 09:40:37.899230 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd DELAY CWD 60 Testnum 190 === End of file server.cmd === Start of file valgrind190 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind190 test 0207...[HTTP GET with chunked Transfer-Encoding closed prematurely] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind207 ../src/curl -q --output log/53/curl207.out --include --trace-ascii log/53/trace207 --trace-config all --trace-time http://127.0.0.1:34639/207 > log/53/stdout207 2> log/53/stderr207 207: protocol FAILED! There was no content at all in the file log/53/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/53/ dir after test 207 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind207 ../src/curl -q --output log/53/curl207.out --include --trace-ascii log/53/trace207 --trace-config all --trace-time http://127.0.0.1:34639/207 > log/53/stdout207 2> log/53/stderr207 === End of file commands.log === Start of file http_server.log 09:40:38.472924 ====> Client connect 09:40:38.473258 accept_connection 3 returned 4 09:40:38.473564 accept_connection 3 returned 0 09:40:38.474269 Read 93 bytes 09:40:38.474527 Process 93 bytes request 09:40:38.474698 Got request: GET /verifiedserver HTTP/1.1 09:40:38.474817 Are-we-friendly question received 09:40:38.475089 Wrote request (93 bytes) input to log/53/server.input 09:40:38.475290 Identifying ourselves as friends 09:40:38.477363 Response sent (56 bytes) and written to log/53/server.response 09:40:38.477549 special request CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind211 ../src/curl -q --output log/45/curl211.out --include --trace-ascii log/45/trace211 --trace-config all --trace-time ftp://127.0.0.1:41719/a/path/211 ftp://127.0.0.1:41719/a/path/211 > log/45/stdout211 2> log/45/stderr211 received, no persistency 09:40:38.477715 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34639... * Connected to 127.0.0.1 (127.0.0.1) port 34639 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34639 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73761 === End of file http_verify.out === Start of file server.cmd Testnum 207 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73761 === End of file server.response === Start of file valgrind207 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind207 test 0211...[Get two FTP files with no remote EPSV support] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind211 ../src/curl -q --output log/45/curl211.out --include --trace-ascii log/45/trace211 --trace-config all --trace-time ftp://127.0.0.1:41719/a/path/211 ftp://127.0.0.1:41719/a/path/211 > log/45/stdout211 2> log/45/stderr211 211: protocol FAILED! There was no content at all in the file log/45/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/45/ dir after test 211 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind211 ../src/curl -q --output log/45/curl211.out --include --trace-ascii log/45/trace211 --trace-config all --trace-time ftp://127.0.0.1:41719/a/path/211 ftp://127.0.0.1:41719/a/path/211 > log/45/stdout211 2> log/45/stderr211 === End of file commands.log === Start of file ftp_server.log 09:40:38.430423 ====> Client connect 09:40:38.433859 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:38.437329 < "USER anonymous" 09:40:38.437670 > "331 We are happy you popped in![CR][LF]" 09:40:38.440527 < "PASS ftp@example.com" 09:40:38.440970 > "230 Welcome you silly person[CR][LF]" 09:40:38.445309 < "PWD" 09:40:38.445717 > "257 "/" is current directory[CR][LF]" 09:40:38.448458 < "EPSV" 09:40:38.448729 ====> Passive DATA channel requested by client 09:40:38.449020 DATA sockfilt for passive data channel starting... 09:40:38.464032 DATA sockfilt for passive data channel started (pid 85183) 09:40:38.465141 DATA sockfilt for passive data channel listens on port 33295 09:40:38.465587 > "229 Entering Passive Mode (|||33295|)[LF]" 09:40:38.468015 Client has been notified that DATA conn will be accepted on port 33295 09:40:38.468358 Client connects to port 33295 09:40:38.468572 ====> Client established passive DATA connection on port 33295 09:40:38.469325 < "TYPE I" 09:40:38.469716 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:38.471854 < "SIZE verifiedserver" 09:40:38.472267 > "213 17[CR][LF]" 09:40:38.474869 < "RETR verifiedserver" 09:40:38.475822 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:38.478085 =====> Closing passive DATA connection... 09:40:38.478332 Server disconnects passive DATA connection 09:40:38.478641 Fancy that; client wants to DISC, too 09:40:38.479144 Server disconnected passive DATA connection 09:40:38.479464 DATA sockfilt for passive data channel quits (pid 85183) 09:40:38.481640 DATA sockfilt for passive data channel quit (pid 85183) 09:40:38.482030 =====> Closed passive DATA connection 09:40:38.483330 > "226 File transfer complete[CR][LF]" 09:40:38.520603 < "QUIT" 09:40:38.521381 > "221 bye bye baby[CR][LF]" 09:40:38.522668 MAIN sockfilt said DISC 09:40:38.523487 ====> Client disconnected 09:40:38.524054 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:38.683598 ====> Client connect 09:40:38.685374 Received DATA (on stdin) 09:40:38.685657 > 160 bytes data, server => client 09:40:38.686689 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:38.686827 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:38.686897 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:38.689648 < 16 bytes data, client => server 09:40:38.689862 'USER anonymous\r\n' 09:40:38.692669 Received DATA (on stdin) 09:40:38.692949 > 33 bytes data, server => client 09:40:38.693037 '331 We are happy you popped in!\r\n' 09:40:38.693757 < 22 bytes data, client => server 09:40:38.693924 'PASS ftp@example.com\r\n' 09:40:38.694680 Received DATA (on stdin) 09:40:38.694821 > 30 bytes data, server => client 09:40:38.694905 '230 Welcome you silly person\r\n' 09:40:38.695570 < 5 bytes data, client => server 09:40:38.695699 'PWD\r\n' 09:40:38.699502 Received DATA (on stdin) 09:40:38.699648 > 30 bytes data, server => client 09:40:38.699736 '257 "/" is current directory\r\n' 09:40:38.700385 < 6 bytes data, client => server 09:40:38.700592 'EPSV\r\n' 09:40:38.719293 Received DATA (on stdin) 09:40:38.719534 > 38 bytes data, server => client 09:40:38.719642 '229 Entering Passive Mode (|||33295|)\n' 09:40:38.721253 < 8 bytes data, client => server 09:40:38.721393 'TYPE I\r\n' 09:40:38.723529 Received DATA (on stdin) 09:40:38.723671 > 33 bytes data, server => client 09:40:38.723754 '200 I modify TYPE as you wanted\r\n' 09:40:38.724688 < 21 bytes data, client => server 09:40:38.724825 'SIZE verifiedserver\r\n' 09:40:38.726556 Received DATA (on stdin) 09:40:38.726692 > 8 bytes data, server => client 09:40:38.726769 '213 17\r\n' 09:40:38.727320 < 21 bytes data, client => server 09:40:38.727604 'RETR verifiedserver\r\n' 09:40:38.729047 Received DATA (on stdin) 09:40:38.729239 > 29 bytes data, server => client 09:40:38.730561 '150 Binary junk (17 bytes).\r\n' 09:40:38.736167 Received DATA (on stdin) 09:40:38.736312 > 28 bytes data, server => client 09:40:38.736595 '226 File transfer complete\r\n' 09:40:38.773532 < 6 bytes data, client => server 09:40:38.773690 'QUIT\r\n' 09:40:38.774726 Received DATA (on stdin) 09:40:38.774864 > 18 bytes data, server => client 09:40:38.775387 '221 bye bye baby\r\n' 09:40:38.776076 ====> Client disconnect 09:40:38.776763 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:38.716082 Running IPv4 version 09:40:38.716755 Listening on port 33295 09:40:38.717154 Wrote pid 85183 to log/45/server/ftp_sockdata.pid 09:40:38.717330 Received PING (on stdin) 09:40:38.7CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind208 ../src/curl -q --output log/61/curl208.out --include --trace-ascii log/61/trace208 --trace-config all --trace-time -x http://127.0.0.1:44381 ftp://daniel:mysecret@host.com/we/want/208 -T log/61/test208.txt > log/61/stdout208 2> log/61/stderr208 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind210 ../src/curl -q --output log/59/curl210.out --trace-ascii log/59/trace210 --trace-config all --trace-time ftp://127.0.0.1:43961/a/path/210 ftp://127.0.0.1:43961/a/path/210 > log/59/stdout210 2> log/59/stderr210 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind212 ../src/curl -q --output log/14/curl212.out --include --trace-ascii log/14/trace212 --trace-config all --trace-time ftp://127.0.0.1:36271/a/path/212 ftp://127.0.0.1:36271/a/path/212 -P - > log/14/stdout212 2> log/14/stderr212 18221 Received PORT (on stdin) 09:40:38.720924 ====> Client connect 09:40:38.730046 Received DATA (on stdin) 09:40:38.730243 > 17 bytes data, server => client 09:40:38.730556 'WE ROOLZ: 78026\r\n' 09:40:38.731402 ====> Client disconnect 09:40:38.732350 Received DISC (on stdin) 09:40:38.732614 Crikey! Client also wants to disconnect 09:40:38.732772 Received ACKD (on stdin) 09:40:38.733555 Received QUIT (on stdin) 09:40:38.733703 quits 09:40:38.734102 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command Testnum 211 === End of file server.cmd === Start of file valgrind211 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind211 test 0208...[HTTP PUT to an FTP URL with username+password - over HTTP proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind208 ../src/curl -q --output log/61/curl208.out --include --trace-ascii log/61/trace208 --trace-config all --trace-time -x http://127.0.0.1:44381 ftp://daniel:mysecret@host.com/we/want/208 -T log/61/test208.txt > log/61/stdout208 2> log/61/stderr208 208: protocol FAILED! There was no content at all in the file log/61/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/61/ dir after test 208 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind208 ../src/curl -q --output log/61/curl208.out --include --trace-ascii log/61/trace208 --trace-config all --trace-time -x http://127.0.0.1:44381 ftp://daniel:mysecret@host.com/we/want/208 -T log/61/test208.txt > log/61/stdout208 2> log/61/stderr208 === End of file commands.log === Start of file http_server.log 09:40:38.603198 ====> Client connect 09:40:38.605111 accept_connection 3 returned 4 09:40:38.605516 accept_connection 3 returned 0 09:40:38.609284 Read 93 bytes 09:40:38.609513 Process 93 bytes request 09:40:38.609684 Got request: GET /verifiedserver HTTP/1.1 09:40:38.609907 Are-we-friendly question received 09:40:38.610233 Wrote request (93 bytes) input to log/61/server.input 09:40:38.610731 Identifying ourselves as friends 09:40:38.611866 Response sent (56 bytes) and written to log/61/server.response 09:40:38.611985 special request received, no persistency 09:40:38.612064 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44381... * Connected to 127.0.0.1 (127.0.0.1) port 44381 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44381 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73751 === End of file http_verify.out === Start of file server.cmd Testnum 208 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73751 === End of file server.response === Start of file test208.txt Weird file to upload for testing the PUT feature === End of file test208.txt === Start of file valgrind208 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind208 test 0212...[Get two FTP files with no remote EPRT support] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind212 ../src/curl -q --output log/14/curl212.out --include --trace-ascii log/14/trace212 --trace-config all --trace-time ftp://127.0.0.1:36271/a/path/212 ftp://127.0.0.1:36271/a/path/212 -P - > log/14/stdout212 2> log/14/stderr212 212: protocol FAILED! There was no content at all in the file log/14/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/14/ dir after test 212 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind212 ../src/curl -q --output log/14/curl212.out --include --trace-ascii log/14/trace212 --trace-config all --trace-time ftp://127.0.0.1:36271/a/path/212 ftp://127.0.0.1:36271/a/path/212 -P - > log/14/stdout212 2> log/14/stderr212 === End of file commands.log === Start of file ftp_server.log 09:40:38.519139 ====> Client connect 09:40:38.521914 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:38.523649 < "USER anonymous" 09:40:38.524435 > "331 We are happy you popped in![CR][LF]" 09:40:38.526296 < "PASS ftp@example.com" 09:40:38.527506 > "230 Welcome you silly person[CR][LF]" 09:40:38.528895 < "PWD" 09:40:38.530174 > "257 "/" is current directory[CR][LF]" 09:40:38.532088 < "EPSV" 09:40:38.532402 ====> Passive DATA channel requested by client 09:40:38.532610 DATA sockfilt for passive data channel starting... 09:40:38.552319 DATA sockfilt for passive data channel started (pid 85254) 09:40:38.555568 DATA sockfilt for passive data channel listens on port 33633 09:40:38.556248 > "229 Entering Passive Mode (|||33633|)[LF]" 09:40:38.556542 Client has been notified that DATA conn will be accepted on port 33633 09:40:38.562591 Client connects to port 33633 09:40:38.563418 ====> Client established passive DATA connection on port 33633 09:40:38.566681 < "TYPE I" 09:40:38.569926 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:38.572350 < "SIZE verifiedserver" 09:40:38.573618 > "213 17[CR][LF]" 09:40:38.575427 < "RETR verifiedserver" 09:40:38.575912 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:38.576631 =====> Closing passive DATA connection... 09:40:38.578904 Server disconnects passive DATA connection 09:40:38.579485 Fancy that; client wants to DISC, too 09:40:38.580417 Server disconnected passive DATA connection 09:40:38.580661 DATA sockfilt for passive data channel quits (pid 85254) 09:40:38.582398 DATA sockfilt for passive data channel quit (pid 85254) 09:40:38.582629 =====> Closed passive DATA connection 09:40:38.584412 > "226 File transfer complete[CR][LF]" 09:40:38.620666 < "QUIT" 09:40:38.621461 > "221 bye bye baby[CR][LF]" 09:40:38.625287 MAIN sockfilt said DISC 09:40:38.625675 ====> Client disconnected 09:40:38.626233 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:38.772170 ====> Client connect 09:40:38.774164 Received DATA (on stdin) 09:40:38.774322 > 160 bytes data, server => client 09:40:38.774616 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:38.774793 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:38.774870 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:38.776399 < 16 bytes data, client => server 09:40:38.776670 'USER anonymous\r\n' 09:40:38.777794 Received DATA (on stdin) 09:40:38.777937 > 33 bytes data, server => client 09:40:38.778409 '331 We are happy you popped in!\r\n' 09:40:38.779208 < 22 bytes data, client => server 09:40:38.779353 'PASS ftp@example.com\r\n' 09:40:38.780301 Received DATA (on stdin) 09:40:38.780423 > 30 bytes data, server => client 09:40:38.780669 '230 Welcome you silly person\r\n' 09:40:38.781724 < 5 bytes data, client => server 09:40:38.781874 'PWD\r\n' 09:40:38.783000 Received DATA (on stdin) 09:40:38.783159 > 30 bytes data, server => client 09:40:38.783370 '257 "/" is current directory\r\n' 09:40:38.784945 < 6 bytes data, client => server 09:40:38.785090 'EPSV\r\n' 09:40:38.810701 Received DATA (on stdin) 09:40:38.810868 > 38 bytes data, server => client 09:40:38.810975 '229 Entering Passive Mode (|||33633|)\n' 09:40:38.815752 < 8 bytes data, client => server 09:40:38.816100 'TYPE I\r\n' 09:40:38.824026 Received DATA (on stdin) 09:40:38.824183 > 33 bytes data, server => client 09:40:38.824275 '200 I modify TYPE as you wanted\r\n' 09:40:38.825160 < 21 bytes data, client => server 09:40:38.825324 'SIZE verifiedserver\r\n' 09:40:38.826546 Received DATA (on stdin) 09:40:38.826705 > 8 bytes data, server => client 09:40:38.826905 '213 17\r\n' 09:40:38.828093 < 21 bytes data, client => server 09:40:38.828267 'RETR verifiedserver\r\n' 09:40:38.830562 Received DATA (on stdin) 09:40:38.830705 > 29 bytes data, server => client 09:40:38.830785 '150 Binary junk (17 bytes).\r\n' 09:40:38.836791 Received DATA (on stdin) 09:40:38.836922 > 28 bytes data, server => client 09:40:38.837772 '226 File transfer complete\r\n' 09:40:38.873309 < 6 bytes data, client => server 09:40:38.873594 'QUIT\r\n' 09:40:38.874824 Received DATA (on stdin) 09:40:38.874965 > 18 bytes data, server => client 09:40:38.875556 '221 bye bye baby\r\n' 09:40:38.876122 ====> Client disconnect 09:40:38.880240 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:38.803103 Running IPv4 version 09:40:38.804882 Listening on port 33633 09:40:38.805367 Wrote pid 85254 to log/14/server/ftp_sockdata.pid 09:40:38.805662 Received PING (on stdin) 09:40:38.808577 Received PORT (on stdin) 09:40:38.815171 ====> Client connect 09:40:38.831082 Received DATA (on stdin) 09:40:38.831215 > 17 bytes data, server => client 09:40:38.831285 'WE ROOLZ: 79507\r\n' 09:40:38.832059 ====> Client disconnect 09:40:38.832889 Received DISC (on stdin) 09:40:38.833003 Crikey! Client also wants to disconnect 09:40:38.833695 Received ACKD (on stdin) 09:40:38.834760 Received QUIT (on stdin) 09:40:38.834881 quits 09:40:38.835239 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPRT 500 no such command Testnum 212 === End of file server.cmd === Start of file valgrind212 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind212 test 0210...[Get two FTP files from the same remote dir: no second CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind210 ../src/curl -q --output log/59/curl210.out --trace-ascii log/59/trace210 --trace-config all --trace-time ftp://127.0.0.1:43961/a/path/210 ftp://127.0.0.1:43961/a/path/210 > log/59/stdout210 2> log/59/stderr210 210: protocol FAILED! There was no content at all in the file log/59/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/59/ dir after test 210 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind210 ../src/curl -q --output log/59/curl210.out --trace-ascii log/59/trace210 --trace-config all --trace-time ftp://127.0.0.1:43961/a/path/210 ftp://127.0.0.1:43961/a/path/210 > log/59/stdout210 2> log/59/stderr210 === End of file commands.log === Start of file ftp_server.log 09:40:38.461515 ====> Client connect 09:40:38.463183 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:38.466539 < "USER anonymous" 09:40:38.467462 > "331 We are happy you popped in![CR][LF]" 09:40:38.469859 < "PASS ftp@example.com" 09:40:38.471198 > "230 Welcome you silly person[CR][LF]" 09:40:38.472660 < "PWD" 09:40:38.473458 > "257 "/" is current directory[CR][LF]" 09:40:38.476161 < "EPSV" 09:40:38.476432 ====> Passive DATA channel requested by client 09:40:38.476689 DATA sockfilt for passive data channel starting... 09:40:38.493111 DATA sockfilt for passive data channel started (pid 85210) 09:40:38.495221 DATA sockfilt for passive data channel listens on port 44725 09:40:38.495688 > "229 Entering Passive Mode (|||44725|)[LF]" 09:40:38.496051 Client has been notified that DATA conCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind209 ../src/curl -q --output log/54/curl209.out --include --trace-ascii log/54/trace209 --trace-config all --trace-time http://test.remote.example.com.209:44921/path/2090002 --proxy http://127.0.0.1:44921 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel > log/54/stdout209 2> log/54/stderr209 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind214 ../src/curl -q --output log/58/curl214.out --include --trace-ascii log/58/trace214 --trace-config all --trace-time "http://127.0.0.1:46727/\{\}\/214" > log/58/stdout214 2> log/58/stderr214 n will be accepted on port 44725 09:40:38.499083 Client connects to port 44725 09:40:38.499434 ====> Client established passive DATA connection on port 44725 09:40:38.500377 < "TYPE I" 09:40:38.500932 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:38.505217 < "SIZE verifiedserver" 09:40:38.507035 > "213 17[CR][LF]" 09:40:38.508364 < "RETR verifiedserver" 09:40:38.509287 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:38.511469 =====> Closing passive DATA connection... 09:40:38.511847 Server disconnects passive DATA connection 09:40:38.512202 Fancy that; client wants to DISC, too 09:40:38.513441 Server disconnected passive DATA connection 09:40:38.513723 DATA sockfilt for passive data channel quits (pid 85210) 09:40:38.516022 DATA sockfilt for passive data channel quit (pid 85210) 09:40:38.516278 =====> Closed passive DATA connection 09:40:38.516650 > "226 File transfer complete[CR][LF]" 09:40:38.552952 < "QUIT" 09:40:38.554118 > "221 bye bye baby[CR][LF]" 09:40:38.558265 MAIN sockfilt said DISC 09:40:38.559338 ====> Client disconnected 09:40:38.560070 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:38.714582 ====> Client connect 09:40:38.717235 Received DATA (on stdin) 09:40:38.717428 > 160 bytes data, server => client 09:40:38.717718 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:38.717852 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:38.717948 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:38.718872 < 16 bytes data, client => server 09:40:38.719080 'USER anonymous\r\n' 09:40:38.720780 Received DATA (on stdin) 09:40:38.720933 > 33 bytes data, server => client 09:40:38.721814 '331 We are happy you popped in!\r\n' 09:40:38.722713 < 22 bytes data, client => server 09:40:38.722872 'PASS ftp@example.com\r\n' 09:40:38.723955 Received DATA (on stdin) 09:40:38.724107 > 30 bytes data, server => client 09:40:38.724299 '230 Welcome you silly person\r\n' 09:40:38.725341 < 5 bytes data, client => server 09:40:38.725560 'PWD\r\n' 09:40:38.727571 Received DATA (on stdin) 09:40:38.727747 > 30 bytes data, server => client 09:40:38.727873 '257 "/" is current directory\r\n' 09:40:38.729159 < 6 bytes data, client => server 09:40:38.729314 'EPSV\r\n' 09:40:38.750080 Received DATA (on stdin) 09:40:38.750252 > 38 bytes data, server => client 09:40:38.750366 '229 Entering Passive Mode (|||44725|)\n' 09:40:38.752546 < 8 bytes data, client => server 09:40:38.752736 'TYPE I\r\n' 09:40:38.754597 Received DATA (on stdin) 09:40:38.754905 > 33 bytes data, server => client 09:40:38.755277 '200 I modify TYPE as you wanted\r\n' 09:40:38.757978 < 21 bytes data, client => server 09:40:38.758153 'SIZE verifiedserver\r\n' 09:40:38.759391 Received DATA (on stdin) 09:40:38.759642 > 8 bytes data, server => client 09:40:38.759846 '213 17\r\n' 09:40:38.761189 < 21 bytes data, client => server 09:40:38.761340 'RETR verifiedserver\r\n' 09:40:38.762592 Received DATA (on stdin) 09:40:38.762764 > 29 bytes data, server => client 09:40:38.763538 '150 Binary junk (17 bytes).\r\n' 09:40:38.770769 Received DATA (on stdin) 09:40:38.770916 > 28 bytes data, server => client 09:40:38.771005 '226 File transfer complete\r\n' 09:40:38.805835 < 6 bytes data, client => server 09:40:38.806030 'QUIT\r\n' 09:40:38.807142 Received DATA (on stdin) 09:40:38.807521 > 18 bytes data, server => client 09:40:38.808231 '221 bye bye baby\r\n' 09:40:38.811566 ====> Client disconnect 09:40:38.812315 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:38.744361 Running IPv4 version 09:40:38.745118 Listening on port 44725 09:40:38.745908 Wrote pid 85210 to log/59/server/ftp_sockdata.pid 09:40:38.746261 Received PING (on stdin) 09:40:38.747814 Received PORT (on stdin) 09:40:38.752276 ====> Client connect 09:40:38.763579 Received DATA (on stdin) 09:40:38.763771 > 17 bytes data, server => client 09:40:38.763876 'WE ROOLZ: 78816\r\n' 09:40:38.764573 ====> Client disconnect 09:40:38.766225 Received DISC (on stdin) 09:40:38.766398 Crikey! Client also wants to disconnect 09:40:38.766625 Received ACKD (on stdin) 09:40:38.767787 Received QUIT (on stdin) 09:40:38.767919 quits 09:40:38.768381 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 210 === End of file server.cmd === Start of file valgrind210 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind210 test 0209...[HTTP proxy CONNECT auth NTLM] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind209 ../src/curl -q --output log/54/curl209.out --include --trace-ascii log/54/trace209 --trace-config all --trace-time http://test.remote.example.com.209:44921/path/2090002 --proxy http://127.0.0.1:44921 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel > log/54/stdout209 2> log/54/stderr209 209: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 209 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind209 ../src/curl -q --output log/54/curl209.out --include --trace-ascii log/54/trace209 --trace-config all --trace-time http://test.remote.example.com.209:44921/path/2090002 --proxy http://127.0.0.1:44921 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel > log/54/stdout209 2> log/54/stderr209 === End of file commands.log === Start of file http_server.log 09:40:38.626906 ====> Client connect 09:40:38.627915 accept_connection 3 returned 4 09:40:38.628170 accept_connection 3 returned 0 09:40:38.628679 Read 93 bytes 09:40:38.628851 Process 93 bytes request 09:40:38.628941 Got request: GET /verifiedserver HTTP/1.1 09:40:38.629137 Are-we-friendly question received 09:40:38.631737 Wrote request (93 bytes) input to log/54/server.input 09:40:38.632013 Identifying ourselves as friends 09:40:38.632976 Response sent (56 bytes) and written to log/54/server.response 09:40:38.633097 special request received, no persistency 09:40:38.633169 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind213 ../src/curl -q --output log/63/curl213.out --include --trace-ascii log/63/trace213 --trace-config all --trace-time http://test.remote.example.com.213:38797/path/2130002 --proxy1.0 http://127.0.0.1:38797 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/63/stdout213 2> log/63/stderr213 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 209 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind209 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind209 setenv MSYS2_ARG_CONV_EXCL = http:// test 0214...[HTTP URL with escaped { and }] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind214 ../src/curl -q --output log/58/curl214.out --include --trace-ascii log/58/trace214 --trace-config all --trace-time "http://127.0.0.1:46727/\{\}\/214" > log/58/stdout214 2> log/58/stderr214 214: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 214 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind214 ../src/curl -q --output log/58/curl214.out --include --trace-ascii log/58/trace214 --trace-config all --trace-time "http://127.0.0.1:46727/\{\}\/214" > log/58/stdout214 2> log/58/stderr214 === End of file commands.log === Start of file http_server.log 09:40:38.826842 ====> Client connect 09:40:38.827139 accept_connection 3 returned 4 09:40:38.827296 accept_connection 3 returned 0 09:40:38.827905 Read 93 bytes 09:40:38.828052 Process 93 bytes request 09:40:38.828134 Got request: GET /verifiedserver HTTP/1.1 09:40:38.828201 Are-we-friendly question received 09:40:38.828428 Wrote request (93 bytes) input to log/58/server.input 09:40:38.828695 Identifying ourselves as friends 09:40:38.831924 Response sent (56 bytes) and written to log/58/server.response 09:40:38.832059 special request received, no persistency 09:40:38.832132 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46727... * Connected to 127.0.0.1 (127.0.0.1) port 46727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73755 === End of file http_verify.out === Start of file server.cmd Testnum 214 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73755 === End of file server.response === Start of file valgrind214 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind214 test 0213...[HTTP 1.0 proxy CONNECT auth NTLM and then POST] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind213 ../src/curl -q --output log/63/curl213.out --include --trace-ascii log/63/trace213 --trace-config all --trace-time http://test.remote.example.com.213:38797/path/2130002 --proxy1.0 http://127.0.0.1:38797 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/63/stdout213 2> log/63/stderr213 213: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 213 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind213 ../src/curl -q --output log/63/curl213.out --include --trace-ascii log/63/trace213 --trace-config all --trace-time http://test.remote.example.com.213:38797/path/2130002 --proxy1.0 http://127.0.0.1:38797 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/63/stdout213 2> log/63/stderr213 === End of file commands.log === Start of file http_server.log 09:40:38.764162 ====> Client connect 09:40:38.764594 accept_connection 3 returned 4 09:40:38.764798 accept_connection 3 returned 0 09:40:38.765838 Read 93 bytes 09:40:38.766001 Process 93 bytes request 09:40:38.766101 Got request: GET /verifiedserver HTTP/1.1 09:40:38.766195 Are-we-friendly question received 09:40:38.766604 Wrote request (93 bytes) input to log/63/server.input 09:40:38.766860 Identifying ourselves as friends 09:40:38.771738 Response sent (56 bytes) and written to log/63/server.response 09:40:38.771880 special request received, no persistency 09:40:38.771965 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38797... * Connected to 127.0.0.1 (127.0.0.1) port 38797 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38797 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73747 === End of file http_verify.out === Start of file server.cmd Testnum 2CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind216 ../src/curl -q --output log/57/curl216.out --include --trace-ascii log/57/trace216 --trace-config all --trace-time -T log/57/upload.216 ftp://127.0.0.1:42129/a/path/216/ -T log/57/upload.216 ftp://127.0.0.1:42129/a/path/216/%2e%2eanotherup.216 > log/57/stdout216 2> log/57/stderr216 13 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73747 === End of file server.response === Start of file valgrind213 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind213 test 0216...[FTP upload two files to the same dir] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind216 ../src/curl -q --output log/57/curl216.out --include --trace-ascii log/57/trace216 --trace-config all --trace-time -T log/57/upload.216 ftp://127.0.0.1:42129/a/path/216/ -T log/57/upload.216 ftp://127.0.0.1:42129/a/path/216/%2e%2eanotherup.216 > log/57/stdout216 2> log/57/stderr216 216: protocol FAILED! There was no content at all in the file log/57/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/57/ dir after test 216 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind216 ../src/curl -q --output log/57/curl216.out --include --trace-ascii log/57/trace216 --trace-config all --trace-time -T log/57/upload.216 ftp://127.0.0.1:42129/a/path/216/ -T log/57/upload.216 ftp://127.0.0.1:42129/a/path/216/%2e%2eanotherup.216 > log/57/stdout216 2> log/57/stderr216 === End of file commands.log === Start of file ftp_server.log 09:40:38.741045 ====> Client connect 09:40:38.742521 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:38.749368 < "USER anonymous" 09:40:38.750925 > "331 We are happy you popped in![CR][LF]" 09:40:38.752507 < "PASS ftp@example.com" 09:40:38.752931 > "230 Welcome you silly person[CR][LF]" 09:40:38.754927 < "PWD" 09:40:38.756075 > "257 "/" is current directory[CR][LF]" 09:40:38.757488 < "EPSV" 09:40:38.757860 ====> Passive DATA channel requested by client 09:40:38.758089 DATA sockfilt for passive data channel starting... 09:40:38.770206 DATA sockfilt for passive data channel started (pid 85393) 09:40:38.771175 DATA sockfilt for passive data channel listens on port 39227 09:40:38.771603 > "229 Entering Passive Mode (|||39227|)[LF]" 09:40:38.772111 Client has been notified that DATA conn will be accepted on port 39227 09:40:38.775411 Client connects to port 39227 09:40:38.776088 ====> Client established passive DATA connection on port 39227 09:40:38.776943 < "TYPE I" 09:40:38.777431 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:38.780279 < "SIZE verifiedserver" 09:40:38.781106 > "213 17[CR][LF]" 09:40:38.784199 < "RETR verifiedserver" 09:40:38.784993 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:38.785883 =====> Closing passive DATA connection... 09:40:38.786176 Server disconnects passive DATA connection 09:40:38.787145 Server disconnected passive DATA connection 09:40:38.787420 DATA sockfilt for passive data channel quits (pid 85393) 09:40:38.789459 DATA sockfilt for passive data channel quit (pid 85393) 09:40:38.789723 =====> Closed passive DATA connection 09:40:38.790733 > "226 File transfer complete[CR][LF]" 09:40:38.829546 < "QUIT" 09:40:38.830205 > "221 bye bye baby[CR][LF]" 09:40:38.834199 MAIN sockfilt said DISC 09:40:38.835114 ====> Client disconnected 09:40:38.835651 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:38.994060 ====> Client connect 09:40:39.000570 Received DATA (on stdin) 09:40:39.000735 > 160 bytes data, server => client 09:40:39.000839 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:39.000936 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:39.001025 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:39.001847 < 16 bytes data, client => server 09:40:39.002011 'USER anonymous\r\n' 09:40:39.003507 Received DATA (on stdin) 09:40:39.003728 > 33 bytes data, server => client 09:40:39.004172 '331 We are happy you popped in!\r\n' 09:40:39.005254 < 22 bytes data, client => server 09:40:39.005399 'PASS ftp@example.com\r\n' 09:40:39.006939 Received DATA (on stdin) 09:40:39.007059 > 30 bytes data, server => client 09:40:39.007137 '230 Welcome you silly person\r\n' 09:40:39.007725 < 5 bytes data, client => server 09:40:39.007863 'PWD\r\n' 09:40:39.009028 Received DATA (on stdin) 09:40:39.009170 > 30 bytes data, server => client 09:40:39.009335 '257 "/" is current directory\r\n' 09:40:39.010391 < 6 bytes data, client => server 09:40:39.010615 'EPSV\r\n' 09:40:39.026145 Received DATA (on stdin) 09:40:39.026280 > 38 bytes data, server => client 09:40:39.026382 '229 Entering Passive Mode (|||39227|)\n' 09:40:39.028575 < 8 bytes data, client => server 09:40:39.028707 'TYPE I\r\n' 09:40:39.031502 Received DATA (on stdin) 09:40:39.031641 > 33 bytes data, server => client 09:40:39.031741 '200 I modify TYPE as you wanted\r\n' 09:40:39.032505 < 21 bytes data, client => server 09:40:39.032707 'SIZE verifiedserver\r\n' 09:40:39.035241 Received DATA (on stdin) 09:40:39.035605 > 8 bytes data, server => client 09:40:39.035704 '213 17\r\n' 09:40:39.036416 < 21 bytes data, client => server 09:40:39.036642 'RETR verifiedserver\r\n' 09:40:39.040201 Received DATA (on stdin) 09:40:39.040316 > 29 bytes data, server => client 09:40:39.040399 '150 Binary junk (17 bytes).\r\n' 09:40:39.043837 Received DATA (on stdin) 09:40:39.043973 > 28 bytes data, server => client 09:40:39.044162 '226 File transfer complete\r\n' 09:40:39.082617 < 6 bytes data, client => server 09:40:39.082813 'QUIT\r\n' 09:40:39.083939 Received DATA (on stdin) 09:40:39.084242 > 18 bytes data, server => client 09:40:39.084335 '221 bye bye baby\r\n' 09:40:39.087557 ====> Client disconnect 09:40:39.088255 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:38.022356 Running IPv4 version 09:40:38.023029 Listening on port 39227 09:40:38.023385 Wrote pid 85393 to log/57/server/ftp_sockdata.pid 09:40:38.023628 Received PING (on stdin) 09:40:38.024321 Received PORT (on stdin) 09:40:38.027945 ====> Client connect 09:40:38.039140 Received DATA (on stdin) 09:40:38.039282 > 17 bytes data, server => client 09:40:38.039386 'WE ROOLZ: 79056\r\n' 09:40:38.040180 Received DISC (on stdin) 09:40:38.040331 ====> Client forcibly disconnected 09:40:38.041672 Received QUIT (on stdin) 09:40:38.041815 quits 09:40:38.042194 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 216 === End of file server.cmd === Start of file upload.216 upload this file twice === EndCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind217 ../src/curl -q --include --trace-ascii log/52/trace217 --trace-config all --trace-time http://test.remote.example.com.217:40089/path/2170002 --proxy http://127.0.0.1:40089 --proxytunnel -w "%{http_code} %{http_connect}\n" > log/52/stdout217 2> log/52/stderr217 of file upload.216 === Start of file valgrind216 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind216 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind215 ../src/curl -q --output log/64/curl215.out --include --trace-ascii log/64/trace215 --trace-config all --trace-time ftp://127.0.0.1:37199/a/path/215/ ftp://127.0.0.1:37199/a/path/215/ > log/64/stdout215 2> log/64/stderr215 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind219 ../src/curl -q --output log/60/curl219.out --include --trace-ascii log/60/trace219 --trace-config all --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/60/stdout219 2> log/60/stderr219 test 0217...[HTTP proxy CONNECT to proxy returning 405] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind217 ../src/curl -q --include --trace-ascii log/52/trace217 --trace-config all --trace-time http://test.remote.example.com.217:40089/path/2170002 --proxy http://127.0.0.1:40089 --proxytunnel -w "%{http_code} %{http_connect}\n" > log/52/stdout217 2> log/52/stderr217 217: stdout FAILED: --- log/52/check-expected 2025-07-18 09:40:39.848178601 +0000 +++ log/52/check-generated 2025-07-18 09:40:39.846608622 +0000 @@ -1,3 +0,0 @@ -HTTP/1.1 405 Method Not Allowed swsclose[CR][LF] -[CR][LF] -000 405[LF] == Contents of files in the log/52/ dir after test 217 === Start of file check-expected HTTP/1.1 405 Method Not Allowed swsclose[CR][LF] [CR][LF] 000 405[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind217 ../src/curl -q --include --trace-ascii log/52/trace217 --trace-config all --trace-time http://test.remote.example.com.217:40089/path/2170002 --proxy http://127.0.0.1:40089 --proxytunnel -w "%{http_code} %{http_connect}\n" > log/52/stdout217 2> log/52/stderr217 === End of file commands.log === Start of file http_server.log 09:40:39.131985 ====> Client connect 09:40:39.132579 accept_connection 3 returned 4 09:40:39.132900 accept_connection 3 returned 0 09:40:39.133041 Read 93 bytes 09:40:39.133212 Process 93 bytes request 09:40:39.133568 Got request: GET /verifiedserver HTTP/1.1 09:40:39.133807 Are-we-friendly question received 09:40:39.134053 Wrote request (93 bytes) input to log/52/server.input 09:40:39.134428 Identifying ourselves as friends 09:40:39.138760 Response sent (56 bytes) and written to log/52/server.response 09:40:39.138918 special request received, no persistency 09:40:39.139079 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40089... * Connected to 127.0.0.1 (127.0.0.1) port 40089 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40089 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73758 === End of file http_verify.out === Start of file server.cmd Testnum 217 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73758 === End of file server.response === Start of file valgrind217 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind217 test 0215...[Get two FTP dir listings from the same remote dir: no second CWD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind215 ../src/curl -q --output log/64/curl215.out --include --trace-ascii log/64/trace215 --trace-config all --trace-time ftp://127.0.0.1:37199/a/path/215/ ftp://127.0.0.1:37199/a/path/215/ > log/64/stdout215 2> log/64/stderr215 215: protocol FAILED! There was no content at all in the file log/64/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/64/ dir after test 215 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind215 ../src/curl -q --output log/64/curl215.out --include --trace-ascii log/64/trace215 --trace-config all --trace-time ftp://127.0.0.1:37199/a/path/215/ ftp://127.0.0.1:37199/a/path/215/ > log/64/stdout215 2> log/64/stderr215 === End of file commands.log === Start of file ftp_server.log 09:40:38.698252 ====> Client connect 09:40:38.699882 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:38.703409 < "USER anonymous" 09:40:38.704554 > "331 We are happy you popped in![CR][LF]" 09:40:38.708533 < "PASS ftp@example.com" 09:40:38.709100 > "230 Welcome you silly person[CR][LF]" 09:40:38.711247 < "PWD" 09:40:38.712834 > "257 "/" is current directory[CR][LF]" 09:40:38.715256 < "EPSV" 09:40:38.715913 ====> Passive DATA channel requested by client 09:40:38.716215 DATA sockfilt for passive data channel starting... 09:40:38.731450 DATA sockfilt for passive data channel started (pid 85372) 09:40:38.732594 DATA sockfilt for passive data channel listens on port 37399 09:40:38.733222 > "229 Entering Passive Mode (|||37399|)[LF]" 09:40:38.733496 Client has been notified that DATA conn will be accepted on port 37399 09:40:38.736067 Client connects to port 37399 09:40:38.736406 ====> Client established passive DATA connection on port 37399 09:40:38.737318 < "TYPE I" 09:40:38.737813 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:38.740168 < "SIZE verifiedserver" 09:40:38.741896 > "213 17[CR][LF]" 09:40:38.743162 < "RETR verifiedserver" 09:40:38.744081 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:38.746210 =====> Closing passive DATA connection... 09:40:38.746475 Server disconnects passive DATA connection 09:40:38.746853 Fancy that; client wants to DISC, too 09:40:38.747239 Server disconnected passive DATA connection 09:40:38.747481 DATA sockfilt for passive data channel quits (pid 85372) 09:40:38.749307 DATA sockfilt for passive data channel quit (pid 85372) 09:40:38.749557 =====> Closed passive DATA connection 09:40:38.750410 > "226 File transfer complete[CR][LF]" 09:40:38.788047 < "QUIT" 09:40:38.789475 > "221 bye bye baby[CR][LF]" 09:40:38.794049 MAIN sockfilt said DISC 09:40:38.795365 ====> Client disconnected 09:40:38.796091 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:38.951164 ====> Client connect 09:40:38.954176 Received DATA (on stdin) 09:40:38.954352 > 160 bytes data, server => client 09:40:38.954542 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:38.954661 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:38.954751 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:38.955702 < 16 bytes data, client => server 09:40:38.955922 'USER anonymous\r\n' 09:40:38.957862 Received DATA (on stdin) 09:40:38.958021 > 33 bytes data, server => client 09:40:38.958714 '331 We are happy you popped in!\r\n' 09:40:38.959559 < 22 byteCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind218 ../src/curl -q --output log/62/curl218.out --include --trace-ascii log/62/trace218 --trace-config all --trace-time -T log/62/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:38899/218 > log/62/stdout218 2> log/62/stderr218 s data, client => server 09:40:38.959756 'PASS ftp@example.com\r\n' 09:40:38.963177 Received DATA (on stdin) 09:40:38.963310 > 30 bytes data, server => client 09:40:38.963398 '230 Welcome you silly person\r\n' 09:40:38.964098 < 5 bytes data, client => server 09:40:38.964248 'PWD\r\n' 09:40:38.965294 Received DATA (on stdin) 09:40:38.965524 > 30 bytes data, server => client 09:40:38.965809 '257 "/" is current directory\r\n' 09:40:38.967886 < 6 bytes data, client => server 09:40:38.968043 'EPSV\r\n' 09:40:38.987573 Received DATA (on stdin) 09:40:38.987873 > 38 bytes data, server => client 09:40:38.988018 '229 Entering Passive Mode (|||37399|)\n' 09:40:38.989721 < 8 bytes data, client => server 09:40:38.989901 'TYPE I\r\n' 09:40:38.991557 Received DATA (on stdin) 09:40:38.991744 > 33 bytes data, server => client 09:40:38.991844 '200 I modify TYPE as you wanted\r\n' 09:40:38.992662 < 21 bytes data, client => server 09:40:38.992847 'SIZE verifiedserver\r\n' 09:40:38.994335 Received DATA (on stdin) 09:40:38.994584 > 8 bytes data, server => client 09:40:38.994797 '213 17\r\n' 09:40:38.996022 < 21 bytes data, client => server 09:40:38.996156 'RETR verifiedserver\r\n' 09:40:38.997314 Received DATA (on stdin) 09:40:38.997544 > 29 bytes data, server => client 09:40:38.998546 '150 Binary junk (17 bytes).\r\n' 09:40:39.003612 Received DATA (on stdin) 09:40:39.003822 > 28 bytes data, server => client 09:40:39.004409 '226 File transfer complete\r\n' 09:40:39.040661 < 6 bytes data, client => server 09:40:39.040862 'QUIT\r\n' 09:40:39.042166 Received DATA (on stdin) 09:40:39.042333 > 18 bytes data, server => client 09:40:39.042643 '221 bye bye baby\r\n' 09:40:39.047326 ====> Client disconnect 09:40:39.048425 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:38.983271 Running IPv4 version 09:40:38.984005 Listening on port 37399 09:40:38.984411 Wrote pid 85372 to log/64/server/ftp_sockdata.pid 09:40:38.984700 Received PING (on stdin) 09:40:38.985730 Received PORT (on stdin) 09:40:38.989369 ====> Client connect 09:40:38.998245 Received DATA (on stdin) 09:40:38.998411 > 17 bytes data, server => client 09:40:38.998621 'WE ROOLZ: 78009\r\n' 09:40:38.999610 ====> Client disconnect 09:40:39.000571 Received DISC (on stdin) 09:40:39.000724 Crikey! Client also wants to disconnect 09:40:39.000927 Received ACKD (on stdin) 09:40:39.001534 Received QUIT (on stdin) 09:40:39.001676 quits 09:40:39.002062 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 215 === End of file server.cmd === Start of file valgrind215 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind215 * starts no server test 0219...[try using proxy with unsupported scheme] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind219 ../src/curl -q --output log/60/curl219.out --include --trace-ascii log/60/trace219 --trace-config all --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/60/stdout219 2> log/60/stderr219 curl returned 1, when expecting 7 219: exit FAILED == Contents of files in the log/60/ dir after test 219 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind219 ../src/curl -q --output log/60/curl219.out --include --trace-ascii log/60/trace219 --trace-config all --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/60/stdout219 2> log/60/stderr219 === End of file commands.log === Start of file server.cmd Testnum 219 === End of file server.cmd === Start of file valgrind219 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind219 test 0218...[HTTP PUT from a file but enforce chunked transfer-encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind218 ../src/curl -q --output log/62/curl218.out --include --trace-ascii log/62/trace218 --trace-config all --trace-time -T log/62/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:38899/218 > log/62/stdout218 2> log/62/stderr218 218: protocol FAILED! There was no content at all in the file log/62/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/62/ dir after test 218 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind218 ../src/curl -q --output log/62/curl218.out --include --trace-ascii log/62/trace218 --trace-config all --trace-time -T log/62/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:38899/218 > log/62/stdout218 2> log/62/stderr218 === End of file commands.log === Start of file file218 just some tiny teeny contents === End of file file218 === Start of file http_server.log 09:40:39.257348 ====> Client connect 09:40:39.257849 accept_connection 3 returned 4 09:40:39.258036 accept_connection 3 returned 0 09:40:39.258176 Read 93 bytes 09:40:39.258283 Process 93 bytes request 09:40:39.258392 Got request: GET /verifiedserver HTTP/1.1 09:40:39.25857CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind231 ../src/curl -q --output log/31/curl231.out --trace-ascii log/31/trace231 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/31/test231.txt -C 10 > log/31/stdout231 2> log/31/stderr231 5 Are-we-friendly question received 09:40:39.258832 Wrote request (93 bytes) input to log/62/server.input 09:40:39.259363 Identifying ourselves as friends 09:40:39.260241 Response sent (56 bytes) and written to log/62/server.response 09:40:39.260352 special request received, no persistency 09:40:39.260426 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38899... * Connected to 127.0.0.1 (127.0.0.1) port 38899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73749 === End of file http_verify.out === Start of file server.cmd Testnum 218 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73749 === End of file server.response === Start of file valgrind218 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind218 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind226 ../src/curl -q --output log/36/curl226.out --include --trace-ascii log/36/trace226 --trace-config all --trace-time ftp://127.0.0.1:45965/226%0d > log/36/stdout226 2> log/36/stderr226 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind224 ../src/curl -q --output log/37/curl224.out --include --trace-ascii log/37/trace224 --trace-config all --trace-time http://127.0.0.1:37551/224 --compressed > log/37/stdout224 2> log/37/stderr224 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind220 ../src/curl -q --output log/38/curl220.out --include --trace-ascii log/38/trace220 --trace-config all --trace-time http://127.0.0.1:33511/220 --compressed > log/38/stdout220 2> log/38/stderr220 test 0231...[file:// with resume] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind231 ../src/curl -q --output log/31/curl231.out --trace-ascii log/31/trace231 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/31/test231.txt -C 10 > log/31/stdout231 2> log/31/stderr231 231: data FAILED: --- log/31/check-expected 2025-07-18 09:40:40.207450299 +0000 +++ log/31/check-generated 2025-07-18 09:40:40.206608440 +0000 @@ -1,2 +0,0 @@ -B01234567[LF] -C01234567[LF] == Contents of files in the log/31/ dir after test 231 === Start of file check-expected B01234567[LF] C01234567[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind231 ../src/curl -q --output log/31/curl231.out --trace-ascii log/31/trace231 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/31/test231.txt -C 10 > log/31/stdout231 2> log/31/stderr231 === End of file commands.log === Start of file server.cmd Testnum 231 === End of file server.cmd === Start of file test231.txt A01234567 B01234567 C01234567 === End of file test231.txt === Start of file valgrind231 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind231 test 0226...[FTP %0d-code in URL's CWD part] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind226 ../src/curl -q --output log/36/curl226.out --include --trace-ascii log/36/trace226 --trace-config all --trace-time ftp://127.0.0.1:45965/226%0d > log/36/stdout226 2> log/36/stderr226 curl returned 1, when expecting 3 226: exit FAILED == Contents of files in the log/36/ dir after test 226 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind226 ../src/curl -q --output log/36/curl226.out --include --trace-ascii log/36/trace226 --trace-config all --trace-time ftp://127.0.0.1:45965/226%0d > log/36/stdout226 2> log/36/stderr226 === End of file commands.log === Start of file ftp_server.log 09:40:39.432227 ====> Client connect 09:40:39.434891 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.437055 < "USER anonymous" 09:40:39.439273 > "331 We are happy you popped in![CR][LF]" 09:40:39.440119 < "PASS ftp@example.com" 09:40:39.440912 > "230 Welcome you silly person[CR][LF]" 09:40:39.442680 < "PWD" 09:40:39.444189 > "257 "/" is current directory[CR][LF]" 09:40:39.445388 < "EPSV" 09:40:39.445833 ====> Passive DATA channel requested by client 09:40:39.446114 DATA sockfilt for passive data channel starting... 09:40:39.463539 DATA sockfilt for passive data channel started (pid 86115) 09:40:39.465628 DATA sockfilt for passive data channel listens on port 40125 09:40:39.468512 > "229 Entering Passive Mode (|||40125|)[LF]" 09:40:39.469013 Client has been notified that DATA conn will be accepted on port 40125 09:40:39.469340 Client connects to port 40125 09:40:39.469617 ====> Client established passive DATA connection on port 40125 09:40:39.470473 < "TYPE I" 09:40:39.471917 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:39.473492 < "SIZE verifiedserver" 09:40:39.474322 > "213 17[CR][LF]" 09:40:39.476573 < "RETR verifiedserver" 09:40:39.477420 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:39.478247 =====> Closing passive DATA connection... 09:40:39.478516 Server disconnects passive DATA connection 09:40:39.480321 Fancy that; client wants to DISC, too 09:40:39.480657 Server disconnected passive DATA connection 09:40:39.480973 DATA sockfilt for passive data channel quits (pid 86115) 09:40:39.483830 DATA sockfilt for passive data channel quit (pid 86115) 09:40:39.484168 =====> Closed passive DATA connection 09:40:39.485389 > "226 File transfer complete[CR][LF]" 09:40:39.522984 < "QUIT" 09:40:39.523402 > "221 bye bye baby[CR][LF]" 09:40:39.528203 MAIN sockfilt said DISC 09:40:39.529169 ====> Client disconnected 09:40:39.529725 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:39.685167 ====> Client connect 09:40:39.687336 Received DATA (on stdin) 09:40:39.687576 > 160 bytes data, server => client 09:40:39.687799 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:39.687950 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:39.688046 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:39.689568 < 16 bytes data, client => server 09:40:39.689718 'USER anonymous\r\n' 09:40:39.691499 Received DATA (on stdin) 09:40:39.691662 > 33 bytes data, server => client 09:40:39.691862 '331 We are happy you popped in!\r\n' 09:40:39.692594 < 22 bytes data, client => server 09:40:39.692742 'PASS ftp@example.com\r\n' 09:40:39.694195 Received DATA (on stdin) 09:40:39.694343 > 30 bytes data, server => client 09:40:39.694913 '230 Welcome you silly person\r\n' 09:40:39.695644 < 5 bytes data, client => server 09:40:39.695790 'PWD\r\n' 09:40:39.696854 Received DATA (on stdin) 09:40:39.696995 > 30 bytes data, server => client 09:40:39.697166 '257 "/" is current directory\r\n' 09:40:39.698356 < 6 bytes data, client => server 09:40:39.700641 'EPSV\r\n' 09:40:39.719903 Received DATA (on stdin) 09:40:39.720053 > 38 bytes data, server => client 09:40:39.720252 '229 Entering Passive Mode (|||40125|)\n' 09:40:39.721821 < 8 bytes data, client => server 09:40:39.721955 'TYPE I\r\n' 09:40:39.724765 Received DATA (on stdin) 09:40:39.724915 > 33 bytes data, server => client 09:40:39.725103 '200 I modify TYPE as you wanted\r\n' 09:40:39.726307 < 21 bytes data, client => server 09:40:39.726543 'SIZE verifiedserver\r\n' 09:40:39.727643 Received DATA (on stdin) 09:40:39.727791 > 8 bytes data, server => client 09:40:39.728620 '213 17\r\n' 09:40:39.729515 < 21 bytes data, client => server 09:40:39.729668 'RETR verifiedserver\r\n' 09:40:39.730773 Received DATA (on stdin) 09:40:39.730913 > 29 bytes data, server => client 09:40:39.732539 '150 Binary junk (17 bytes).\r\n' 09:40:39.738278 Received DATA (on stdin) 09:40:39.738510 > 28 bytes data, server => client 09:40:39.738728 '226 File transfer complete\r\n' 09:40:39.775577 < 6 bytes data, client => server 09:40:39.775806 'QUIT\r\n' 09:40:39.777776 ReceiveCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind221 ../src/curl -q --output log/25/curl221.out --include --trace-ascii log/25/trace221 --trace-config all --trace-time http://127.0.0.1:41727/221 --compressed > log/25/stdout221 2> log/25/stderr221 d DATA (on stdin) 09:40:39.777944 > 18 bytes data, server => client 09:40:39.778049 '221 bye bye baby\r\n' 09:40:39.781567 ====> Client disconnect 09:40:39.782245 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.715680 Running IPv4 version 09:40:39.716245 Listening on port 40125 09:40:39.716743 Wrote pid 86115 to log/36/server/ftp_sockdata.pid 09:40:39.716905 Received PING (on stdin) 09:40:39.718569 Received PORT (on stdin) 09:40:39.721587 ====> Client connect 09:40:39.731600 Received DATA (on stdin) 09:40:39.731761 > 17 bytes data, server => client 09:40:39.731854 'WE ROOLZ: 82698\r\n' 09:40:39.733643 ====> Client disconnect 09:40:39.734008 Received DISC (on stdin) 09:40:39.734139 Crikey! Client also wants to disconnect 09:40:39.735116 Received ACKD (on stdin) 09:40:39.735616 Received QUIT (on stdin) 09:40:39.735744 quits 09:40:39.736180 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 226 === End of file server.cmd === Start of file valgrind226 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind226 test 0224...[HTTP GET gzip compressed content with huge comment and extra field] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind224 ../src/curl -q --output log/37/curl224.out --include --trace-ascii log/37/trace224 --trace-config all --trace-time http://127.0.0.1:37551/224 --compressed > log/37/stdout224 2> log/37/stderr224 224: protocol FAILED! There was no content at all in the file log/37/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/37/ dir after test 224 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind224 ../src/curl -q --output log/37/curl224.out --include --trace-ascii log/37/trace224 --trace-config all --trace-time http://127.0.0.1:37551/224 --compressed > log/37/stdout224 2> log/37/stderr224 === End of file commands.log === Start of file http_server.log 09:40:39.617714 ====> Client connect 09:40:39.618049 accept_connection 3 returned 4 09:40:39.618236 accept_connection 3 returned 0 09:40:39.618383 Read 93 bytes 09:40:39.618595 Process 93 bytes request 09:40:39.618717 Got request: GET /verifiedserver HTTP/1.1 09:40:39.618811 Are-we-friendly question received 09:40:39.619046 Wrote request (93 bytes) input to log/37/server.input 09:40:39.619235 Identifying ourselves as friends 09:40:39.621156 Response sent (56 bytes) and written to log/37/server.response 09:40:39.623745 special request received, no persistency 09:40:39.623865 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37551... * Connected to 127.0.0.1 (127.0.0.1) port 37551 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37551 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73772 === End of file http_verify.out === Start of file server.cmd Testnum 224 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73772 === End of file server.response === Start of file valgrind224 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind224 test 0220...[HTTP GET gzip compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind220 ../src/curl -q --output log/38/curl220.out --include --trace-ascii log/38/trace220 --trace-config all --trace-time http://127.0.0.1:33511/220 --compressed > log/38/stdout220 2> log/38/stderr220 220: protocol FAILED! There was no content at all in the file log/38/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/38/ dir after test 220 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind220 ../src/curl -q --output log/38/curl220.out --include --trace-ascii log/38/trace220 --trace-config all --trace-time http://127.0.0.1:33511/220 --compressed > log/38/stdout220 2> log/38/stderr220 === End of file commands.log === Start of file http_server.log 09:40:39.663859 ====> Client connect 09:40:39.664191 accept_connection 3 returned 4 09:40:39.664393 accept_connection 3 returned 0 09:40:39.664685 Read 93 bytes 09:40:39.664814 Process 93 bytes request 09:40:39.664920 Got request: GET /verifiedserver HTTP/1.1 09:40:39.665016 Are-we-friendly question received 09:40:39.665286 Wrote request (93 bytes) input to log/38/server.input 09:40:39.665550 Identifying ourselves as friends 09:40:39.666351 Response sent (56 bytes) and written to log/38/server.response 09:40:39.666605 special request received, no persistency 09:40:39.666730 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * TrCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind225 ../src/curl -q --output log/53/curl225.out --include --trace-ascii log/53/trace225 --trace-config all --trace-time ftp://bad%0auser:passwd@127.0.0.1:42281/225%0a > log/53/stdout225 2> log/53/stderr225 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind222 ../src/curl -q --output log/49/curl222.out --include --trace-ascii log/49/trace222 --trace-config all --trace-time http://127.0.0.1:42667/222 --compressed > log/49/stdout222 2> log/49/stderr222 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind228 ../src/curl -q --output log/21/curl228.out --include --trace-ascii log/21/trace228 --trace-config all --trace-time ftp://127.0.0.1:40295/228 --ftp-account "one count" > log/21/stdout228 2> log/21/stderr228 ying 127.0.0.1:33511... * Connected to 127.0.0.1 (127.0.0.1) port 33511 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33511 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73775 === End of file http_verify.out === Start of file server.cmd Testnum 220 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73775 === End of file server.response === Start of file valgrind220 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind220 test 0221...[HTTP GET gzip compressed content with broken gzip header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind221 ../src/curl -q --output log/25/curl221.out --include --trace-ascii log/25/trace221 --trace-config all --trace-time http://127.0.0.1:41727/221 --compressed > log/25/stdout221 2> log/25/stderr221 221: protocol FAILED! There was no content at all in the file log/25/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/25/ dir after test 221 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind221 ../src/curl -q --output log/25/curl221.out --include --trace-ascii log/25/trace221 --trace-config all --trace-time http://127.0.0.1:41727/221 --compressed > log/25/stdout221 2> log/25/stderr221 === End of file commands.log === Start of file http_server.log 09:40:39.614930 ====> Client connect 09:40:39.615335 accept_connection 3 returned 4 09:40:39.615648 accept_connection 3 returned 0 09:40:39.615853 Read 93 bytes 09:40:39.615982 Process 93 bytes request 09:40:39.616104 Got request: GET /verifiedserver HTTP/1.1 09:40:39.616239 Are-we-friendly question received 09:40:39.616598 Wrote request (93 bytes) input to log/25/server.input 09:40:39.616827 Identifying ourselves as friends 09:40:39.621788 Response sent (56 bytes) and written to log/25/server.response 09:40:39.621927 special request received, no persistency 09:40:39.622011 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41727... * Connected to 127.0.0.1 (127.0.0.1) port 41727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73784 === End of file http_verify.out === Start of file server.cmd Testnum 221 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73784 === End of file server.response === Start of file valgrind221 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind221 test 0225...[FTP %0a-code in URL's name part] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind225 ../src/curl -q --output log/53/curl225.out --include --trace-ascii log/53/trace225 --trace-config all --trace-time ftp://bad%0auser:passwd@127.0.0.1:42281/225%0a > log/53/stdout225 2> log/53/stderr225 curl returned 1, when expecting 3 225: exit FAILED == Contents of files in the log/53/ dir after test 225 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind225 ../src/curl -q --output log/53/curl225.out --include --trace-ascii log/53/trace225 --trace-config all --trace-time ftp://bad%0auser:passwd@127.0.0.1:42281/225%0a > log/53/stdout225 2> log/53/stderr225 === End of file commands.log === Start of file ftp_server.log 09:40:39.545888 ====> Client connect 09:40:39.547348 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.552997 < "USER anonymous" 09:40:39.553434 > "331 We are happy you popped in![CR][LF]" 09:40:39.559073 < "PASS ftp@example.com" 09:40:39.559601 > "230 Welcome you silly person[CR][LF]" 09:40:39.565563 < "PWD" 09:40:39.566033 > "257 "/" is current directory[CR][LF]" 09:40:39.574656 < "EPSV" 09:40:39.575098 ====> Passive DATA channel requested by client 09:40:39.575398 DATA sockfilt for passive data channel starting... 09:40:39.593331 DATA sockfilt for passive data channel started (pid 86281) 09:40:39.597197 DATA sockfilt for passive data channel listens on port 45521 09:40:39.597677 > "229 Entering Passive Mode (|||45521|)[LF]" 09:40:39.598018 Client has been notified that DATA conn will be accepted on port 45521 09:40:39.603864 Client connects to port 45521 09:40:39.604162 ====> Client established passive DATA connection on port 45521 09:40:39.604949 < "TYPE I" 09:40:39.605360 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:39.611314 < "SIZE verifiedserver" 09:40:39.611699 > "213 17[CR][LF]" 09:40:39.613913 < "RETR verifiedserver" 09:40:39.614327 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:39.618518 =====> Closing passive DATA connection... 09:40:39.619022 Server disconnects passive DATA connection 09:40:39.621890 Server disconnected passive DATA connection 09:40:39.622156 DATA sockfilt for passive data channel quits (pid 86281) 09:40:39.625041 DATA sockfilt for passive data channel quit (pid 86281) 09:40:39.625289 =====> Closed passive DATA connection 09:40:39.625619 > "226 File transfer complete[CR][LF]" 09:40:39.660174 < "QUIT" 09:40:39.660583 > "221 bye bye baby[CR][LF]" 09:40:39.676885 MAIN sockfilt said DISC 09:40:39.677188 ====> Client disconnected 09:40:39.677601 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:39.797976 ====> Client connect 09:40:39.802611 Received DATA (on stdin) 09:40:39.802771 > 160 bytes data, server => client 09:40:39.802866 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:39.802947 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:39.803022 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:39.803791 < 16 bytes data, client => server 09:40:39.803928 'USER anonymous\r\n' 09:40:39.810623 Received DATA (on stdin) 09:40:39.810772 > 33 bytes data, server => client 09:40:39.810846 '331 We are happy you popped in!\r\n' 09:40:39.811695 < 22 bytes data, client => server 09:40:39.811860 'PASS ftp@example.com\r\n' 09:40:39.817575 Received DATA (on stdin) 09:40:39.817726 > 30 bytes data, server => client 09:40:39.817807 '230 Welcome you silly person\r\n' 09:40:39.818509 < 5 bytes data, client => server 09:40:39.818655 'PWD\r\n' 09:40:39.821650 Received DATA (on stdin) 09:40:39.821813 > 30 bytes data, server => client 09:40:39.821906 '257 "/" is current directory\r\n' 09:40:39.826006 < 6 bytes data, client => server 09:40:39.826161 'EPSV\r\n' 09:40:39.852044 Received DATA (on stdin) 09:40:39.852215 > 38 bytes data, server => client 09:40:39.852310 '229 Entering Passive Mode (|||45521|)\n' 09:40:39.854479 < 8 bytes data, client => server 09:40:39.854614 'TYPE I\r\n' 09:40:39.860570 Received DATA (on stdin) 09:40:39.860725 > 33 bytes data, server => client 09:40:39.860807 '200 I modify TYPE as you wanted\r\n' 09:40:39.861523 < 21 bytes data, client => server 09:40:39.861673 'SIZE verifiedserver\r\n' 09:40:39.865858 Received DATA (on stdin) 09:40:39.865996 > 8 bytes data, server => client 09:40:39.866092 '213 17\r\n' 09:40:39.866808 < 21 bytes data, client => server 09:40:39.866951 'RETR verifiedserver\r\n' 09:40:39.868746 Received DATA (on stdin) 09:40:39.868865 > 29 bytes data, server => client 09:40:39.868947 '150 Binary junk (17 bytes).\r\n' 09:40:39.880576 Received DATA (on stdin) 09:40:39.880737 > 28 bytes data, server => client 09:40:39.880826 '226 File transfer complete\r\n' 09:40:39.912828 < 6 bytes data, client => server 09:40:39.912999 'QUIT\r\n' 09:40:39.919670 Received DATA (on stdin) 09:40:39.919843 > 18 bytes data, server => client 09:40:39.919945 '221 bye bye baby\r\n' 09:40:39.927287 ====> Client disconnect 09:40:39.931635 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.845394 Running IPv4 version 09:40:39.846066 Listening on port 45521 09:40:39.846418 Wrote pid 86281 to log/53/server/ftp_sockdata.pid 09:40:39.846690 Received PING (on stdin) 09:40:39.847768 Received PORT (on stdin) 09:40:39.856750 ====> Client connect 09:40:39.868385 Received DATA (on stdin) 09:40:39.868594 > 17 bytes data, server => client 09:40:39.870683 'WE ROOLZ: 77508\r\n' 09:40:39.873043 Received DISC (on stdin) 09:40:39.873184 ====> Client forcibly disconnected 09:40:39.876167 Received QUIT (on stdin) 09:40:39.876300 quits 09:40:39.876784 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 225 === End of file server.cmd === Start of file valgrind225 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind225 test 0228...[FTP RETR with ACCT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind228 ../src/curl -q --output log/21/curl228.out --include --trace-ascii log/21/trace228 --trace-config all --trace-time ftp://127.0.0.1:40295/228 --ftp-account "one count" > log/21/stdout228 2> log/21/stderr228 228: protocol FAILED! There was no content at all in the file log/21/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/21/ dir after test 228 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind228 ../src/curl -q --output log/21/curl228.out --include --trace-ascii log/21/trace228 --trace-config all --trace-time ftp://127.0.0.1:40295/228 --ftp-account "one count" > log/21/stdout228 2> log/21/stderr228 === End of file commands.log === Start of file ftp_server.log 09:40:39.493476 ====> Client connect 09:40:39.496850 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.497883 < "USER anonymous" 09:40:39.499013 > "331 We are happy you popped in![CR][LF]" 09:40:39.500609 < "PASS ftp@example.com" 09:40:39.501409 > "230 Welcome you silly person[CR][LF]" 09:40:39.503299 < "PWD" 09:40:39.504126 > "257 "/" is current directory[CR][LF]" 09:40:39.506019 < "EPSV" 09:40:39.506393 ====> Passive DATA channel requested by client 09:40:39.506599 DATA sockfilt for passive data channel starting... 09:40:39.532489 DATA sockfilt for passive data channel started (pid 86193) 09:40:39.536059 DATA sockfilt for passive data channel listens on port 41397 09:40:39.536552 > "229 Entering Passive Mode (|||41397|)[LF]" 09:40:39.536932 Client has been notified that DATA conn will be accepted on port 41397 09:40:39.540944 Client connects to port 41397 09:40:39.541296 ====> Client established passive DATA connection on port 41397 09:40:39.542569 < "TYPE I" 09:40:39.545170 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:39.547055 < "SIZE verifiedserver" 09:40:39.547462 > "213 17[CR][LF]" 09:40:39.551027 < "RETR verifiedserver" 09:40:39.552229 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:39.554597 =====> Closing passive DATA connection... 09:40:39.554913 Server disconnects passive DATA connection 09:40:39.556376 Fancy that; client wants to DISC, too 09:40:39.557460 Server disconnected passive DATA connection 09:40:39.558061 DATA sockfilt for passive data channel quits (pid 86193) 09:40:39.562159 DATA sockfilt for passive data channel quit (pid 86193) 09:40:39.562427 =====> Closed passive DATA connection 09:40:39.563817 > "226 File transfer complete[CR][LF]" 09:40:39.596495 < "QUIT" 09:40:39.597292 > "221 bye bye baby[CR][LF]" 09:40:39.598922 MAIN sockfilt said DISC 09:40:39.599285 ====> Client disconnected 09:40:39.599889 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:39.746651 ====> Client connect 09:40:39.748540 Received DATA (on stdin) 09:40:39.748695 > 160 bytes data, server => client 09:40:39.749080 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:39.749232 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:39.749314 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:39.750098 < 16 bytes data, client => server 09:40:39.750233 'USER anonymous\r\n' 09:40:39.751951 Received DATA (on stdin) 09:40:39.752088 > 33 bytes data, server => client 09:40:39.752265 '331 We are happy you popped in!\r\n' 09:40:39.753706 < 22 bytes data, client => server 09:40:39.753858 'PASS ftp@example.com\r\n' 09:40:39.754762 Received DATA (on stdin) 09:40:39.754901 > 30 bytes data, server => client 09:40:39.755408 '230 Welcome you silly person\r\n' 09:40:39.756072 < 5 bytes data, client => server 09:40:39.756216 'PWD\r\n' 09:40:39.757335 Received DATA (on stdin) 09:40:39.757572 > 30 bytes data, server => client 09:40:39.758110 '257 "/" is current directory\r\n' 09:40:39.758787 < 6 bytes data, client => server 09:40:39.758921 'EPSV\r\n' 09:40:39.792560 Received DATA (on stdin) 09:40:39.792756 > 38 bytes data, server => client 09:40:39.792863 '229 Entering Passive Mode (|||41397|)\n' 09:40:39.795643 < 8 bytes data, client => server 09:40:39.795821 'TYPE I\r\n' 09:40:39.798925 Received DATA (on stdin) 09:40:39.799126 > 33 bytes data, server => client 09:40:39.799213 '200 I modify TYPE as you wanted\r\n' 09:40:39.801496 < 21 bytes data, client => server 09:40:39.801636 'SIZE verifiedserver\r\n' 09:40:39.801733 Received DATA (on stdin) 09:40:39.801817 > 8 bytes data, server => client 09:40:39.801896 '213 17\r\n' 09:40:39.803896 < 21 bytes data, client => server 09:40:39.804043 'RETR verifiedserver\r\n' 09:40:39.806806 Received DATA (on stdin) 09:40:39.806951 > 29 bytes data, server => client 09:40:39.807035 '150 Binary junk (17 bytes).\r\n' 09:40:39.816841 Received DATA (on stdin) 09:40:39.816985 > 28 bytes data, server => client 09:40:39.817163 '226 File transfer complete\r\n' 09:40:39.849267 < 6 bytes data, client => server 09:40:39.849418 'QUIT\r\n' 09:40:39.850607 Received DATA (on stdin) 09:40:39.850797 > 18 bytes data, server => client 09:40:39.851295 '221 bye bye baby\r\n' 09:40:39.851879 ====> Client disconnect 09:40:39.856594 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.782745 Running IPv4 version 09:40:39.783345 Listening on port 41397 09:40:39.783902 Wrote pid 86193 to log/21/server/ftp_sockdata.pid 09:40:39.784094 Received PING (on stdin) 09:40:39.786872 Received PORT (on stdin) 09:40:39.794253 ====> Client connect 09:40:39.808016 Received DATA (on stdin) 09:40:39.808205 > 17 bytes data, server => client 09:40:39.808311 'WE ROOLZ: 78763\r\n' 09:40:39.809344 ====> Client disconnect 09:40:39.809914 Received DISC (on stdin) 09:40:39.810140 Crikey! Client also wants to disconnect 09:40:39.812503 Received ACKD (on stdin) 09:40:39.813175 Received QUIT (on stdin) 09:40:39.813306 quits 09:40:39.813995 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 332 please provide account name REPLY ACCT 230 thank you Testnum 228 === End of file server.cmd === Start of file valgrind228 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind228 test 0222...[HTTP GET deflate compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind222 ../src/curl -q --output log/49/curl222.out --include --trace-ascii log/49/trace222 --trace-config all --trace-time http://127.0.0.1:42667/222 --compressed > log/49/stdout222 2> log/49/stderr222 222: protocol FAILED! There was no content at all in the file log/49/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/49/ dir after test 222 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind222 ../src/curl -q --output log/49/curl222.out --include --trace-ascii log/49/trace222 --trace-config all --trace-time http://127.0.0.1:42667/222 --compressed > log/49/stdout222 2> log/49/stderr222 === End of file commands.log === Start of file http_server.log 09:40:39.607597 ====> Client connect 09:40:39.607908 accept_connection 3 returned 4 09:40:39.608076 accept_connection 3 returned 0 09:40:39.608814 Read 93 bytes 09:40:39.608960 Process 93 bytes request 09:40:39.609040 Got request: GET /verifiedserver HTTP/1.1 09:40:39.609115 Are-we-friendly question received 09:40:39.609359 Wrote request (93 bytes) input to log/49/server.input 09:40:39.609636 Identifying ourselves as friends 09:40:39.610214 Response sent (56 bytes) and written to log/49/server.response 09:40:39.610321 special request received, no persistency 09:40:39.610384 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42667... * Connected to 127.0.0.1 (127.0.0.1) port 42667 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42667 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73760 === End of file http_verify.out === Start of file server.cmd Testnum 222 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73760 === End of file server.response === Start of file valgrind222 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst proCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind237 ../src/curl -q --output log/14/curl237.out --include --trace-ascii log/14/trace237 --trace-config all --trace-time ftp://127.0.0.1:36271/237 --disable-epsv > log/14/stdout237 2> log/14/stderr237 cessing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind222 test 0237...[FTP getting bad host in 227-response to PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind237 ../src/curl -q --output log/14/curl237.out --include --trace-ascii log/14/trace237 --trace-config all --trace-time ftp://127.0.0.1:36271/237 --disable-epsv > log/14/stdout237 2> log/14/stderr237 237: protocol FAILED! There was no content at all in the file log/14/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/14/ dir after test 237 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind237 ../src/curl -q --output log/14/curl237.out --include --trace-ascii log/14/trace237 --trace-config all --trace-time ftp://127.0.0.1:36271/237 --disable-epsv > log/14/stdout237 2> log/14/stderr237 === End of file commands.log === Start of file ftp_server.log 09:40:39.611607 ====> Client connect 09:40:39.617883 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.619515 < "USER anonymous" 09:40:39.621455 > "331 We are happy you popped in![CR][LF]" 09:40:39.622183 < "PASS ftp@example.com" 09:40:39.622503 > "230 Welcome you silly person[CR][LF]" 09:40:39.624503 < "PWD" 09:40:39.625251 > "257 "/" is current directory[CR][LF]" 09:40:39.629169 < "EPSV" 09:40:39.629426 ====> Passive DATA channel requested by client 09:40:39.629618 DATA sockfilt for passive data channel starting... 09:40:39.644876 DATA sockfilt for passive data channel started (pid 86343) 09:40:39.646236 DATA sockfilt for passive data channel listens on port 46287 09:40:39.646729 > "229 Entering Passive Mode (|||46287|)[LF]" 09:40:39.647034 Client has been notified that DATA conn will be accepted on port 46287 09:40:39.648610 Client connects to port 46287 09:40:39.648997 ====> Client established passive DATA connection on port 46287 09:40:39.649706 < "TYPE I" 09:40:39.650167 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:39.652160 < "SIZE verifiedserver" 09:40:39.653448 > "213 17[CR][LF]" 09:40:39.654231 < "RETR verifiedserver" 09:40:39.654616 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:39.655426 =====> Closing passive DATA connection... 09:40:39.655636 Server disconnects passive DATA connection 09:40:39.658187 Server disconnected passive DATA connection 09:40:39.658455 DATA sockfilt for passive data channel quits (pid 86343) 09:40:39.660503 DATA sockfilt for passive data channel quit (pid 86343) 09:40:39.660729 =====> Closed passive DATA connection 09:40:39.661421 > "226 File transfer complete[CR][LF]" 09:40:39.701408 < "QUIT" 09:40:39.702055 > "221 bye bye baby[CR][LF]" 09:40:39.703203 MAIN sockfilt said DISC 09:40:39.703531 ====> Client disconnected 09:40:39.704056 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:39.864832 ====> Client connect 09:40:39.868566 Received DATA (on stdin) 09:40:39.868734 > 160 bytes data, server => client 09:40:39.868823 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:39.868899 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:39.868972 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:39.872039 < 16 bytes data, client => server 09:40:39.872201 'USER anonymous\r\n' 09:40:39.873702 Received DATA (on stdin) 09:40:39.873889 > 33 bytes data, server => client 09:40:39.874132 '331 We are happy you popped in!\r\n' 09:40:39.874830 < 22 bytes data, client => server 09:40:39.874966 'PASS ftp@example.com\r\n' 09:40:39.876580 Received DATA (on stdin) 09:40:39.876717 > 30 bytes data, server => client 09:40:39.876795 '230 Welcome you silly person\r\n' 09:40:39.877398 < 5 bytes data, client => server 09:40:39.877602 'PWD\r\n' 09:40:39.878625 Received DATA (on stdin) 09:40:39.878762 > 30 bytes data, server => client 09:40:39.879215 '257 "/" is current directory\r\n' 09:40:39.881998 < 6 bytes data, client => server 09:40:39.882155 'EPSV\r\n' 09:40:39.900405 Received DATA (on stdin) 09:40:39.900687 > 38 bytes data, server => client 09:40:39.900774 '229 Entering Passive Mode (|||46287|)\n' 09:40:39.902346 < 8 bytes data, client => server 09:40:39.902555 'TYPE I\r\n' 09:40:39.904147 Received DATA (on stdin) 09:40:39.904282 > 33 bytes data, server => client 09:40:39.904360 '200 I modify TYPE as you wanted\r\n' 09:40:39.905077 < 21 bytes data, client => server 09:40:39.905216 'SIZE verifiedserver\r\n' 09:40:39.906248 Received DATA (on stdin) 09:40:39.906384 > 8 bytes data, server => client 09:40:39.906606 '213 17\r\n' 09:40:39.907320 < 21 bytes data, client => server 09:40:39.907537 'RETR verifiedserver\r\n' 09:40:39.909551 Received DATA (on stdin) 09:40:39.909711 > 29 bytes data, server => client 09:40:39.909810 '150 Binary junk (17 bytes).\r\n' 09:40:39.914777 Received DATA (on stdin) 09:40:39.914905 > 28 bytes data, server => client 09:40:39.915402 '226 File transfer complete\r\n' 09:40:39.952250 < 6 bytes data, client => server 09:40:39.952400 'QUIT\r\n' 09:40:39.955582 Received DATA (on stdin) 09:40:39.955757 > 18 bytes data, server => client 09:40:39.955851 '221 bye bye baby\r\n' 09:40:39.956613 ====> Client disconnect 09:40:39.957237 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.897188 Running IPv4 version 09:40:39.897752 Listening on port 46287 09:40:39.898058 Wrote pid 86343 to log/14/server/ftp_sockdata.pid 09:40:39.898202 Received PING (on stdin) 09:40:39.899053 Received PORT (on stdin) 09:40:39.901987 ====> Client connect 09:40:39.908760 Received DATA (on stdin) 09:40:39.908942 > 17 bytes data, server => client 09:40:39.909094 'WE ROOLZ: 79507\r\n' 09:40:39.911187 Received DISC (on stdin) 09:40:39.911374 ====> Client forcibly disconnected 09:40:39.912518 Received QUIT (on stdin) 09:40:39.912698 quits 09:40:39.913120 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASV 227 Entering Passiv Mode (1216,256,2,127,127,127) Testnum 237 === End of file server.cmd === Start of file valgrind237 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind223 ../src/curl -q --output log/47/curl223.out --include --trace-ascii log/47/trace223 --trace-config all --trace-time http://127.0.0.1:41103/223 --compressed > log/47/stdout223 2> log/47/stderr223 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind229 ../src/curl -q --output log/56/curl229.out --include --trace-ascii log/56/trace229 --trace-config all --trace-time ftp://127.0.0.1:36539/229 --ftp-account "one count" > log/56/stdout229 2> log/56/stderr229 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind234 ../src/curl -q --output log/12/curl234.out --include --trace-ascii log/12/trace234 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:45579 --user iam:myself --proxy-user testing:this --location-trusted > log/12/stdout234 2> log/12/stderr234 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind233 ../src/curl -q --output log/32/curl233.out --include --trace-ascii log/32/trace233 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/233 -x 127.0.0.1:45607 --user iam:myself --proxy-user testing:this --location > log/32/stdout233 2> log/32/stderr233 valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind237 test 0223...[HTTP GET deflate compressed content with broken deflate header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind223 ../src/curl -q --output log/47/curl223.out --include --trace-ascii log/47/trace223 --trace-config all --trace-time http://127.0.0.1:41103/223 --compressed > log/47/stdout223 2> log/47/stderr223 223: protocol FAILED! There was no content at all in the file log/47/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/47/ dir after test 223 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind223 ../src/curl -q --output log/47/curl223.out --include --trace-ascii log/47/trace223 --trace-config all --trace-time http://127.0.0.1:41103/223 --compressed > log/47/stdout223 2> log/47/stderr223 === End of file commands.log === Start of file http_server.log 09:40:39.709893 ====> Client connect 09:40:39.710276 accept_connection 3 returned 4 09:40:39.710690 accept_connection 3 returned 0 09:40:39.710890 Read 93 bytes 09:40:39.710988 Process 93 bytes request 09:40:39.711086 Got request: GET /verifiedserver HTTP/1.1 09:40:39.711171 Are-we-friendly question received 09:40:39.711410 Wrote request (93 bytes) input to log/47/server.input 09:40:39.711720 Identifying ourselves as friends 09:40:39.712548 Response sent (56 bytes) and written to log/47/server.response 09:40:39.712680 special request received, no persistency 09:40:39.712758 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41103... * Connected to 127.0.0.1 (127.0.0.1) port 41103 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41103 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73762 === End of file http_verify.out === Start of file server.cmd Testnum 223 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73762 === End of file server.response === Start of file valgrind223 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind223 test 0234...[HTTP, proxy, site+proxy auth and Location: to new host location-trusted] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind234 ../src/curl -q --output log/12/curl234.out --include --trace-ascii log/12/trace234 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:45579 --user iam:myself --proxy-user testing:this --location-trusted > log/12/stdout234 2> log/12/stderr234 234: protocol FAILED! There was no content at all in the file log/12/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/12/ dir after test 234 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind234 ../src/curl -q --output log/12/curl234.out --include --trace-ascii log/12/trace234 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:45579 --user iam:myself --proxy-user testing:this --location-trusted > log/12/stdout234 2> log/12/stderr234 === End of file commands.log === Start of file http_server.log 09:40:39.845022 ====> Client connect 09:40:39.845312 accept_connection 3 returned 4 09:40:39.845834 accept_connection 3 returned 0 09:40:39.845992 Read 93 bytes 09:40:39.846070 Process 93 bytes request 09:40:39.846161 Got request: GET /verifiedserver HTTP/1.1 09:40:39.846241 Are-we-friendly question received 09:40:39.846555 Wrote request (93 bytes) input to log/12/server.input 09:40:39.846750 Identifying ourselves as friends 09:40:39.848376 Response sent (56 bytes) and written to log/12/server.response 09:40:39.848571 special request received, no persistency 09:40:39.848646 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45579... * Connected to 127.0.0.1 (127.0.0.1) port 45579 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45579 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73799 === End of file http_verify.out === Start of file server.cmd Testnum 234 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73799 === End of file server.response === Start of file valgrind234 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The packagCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind227 ../src/curl -q --output log/22/curl227.out --include --trace-ascii log/22/trace227 --trace-config all --trace-time ftp://127.0.0.1:41867/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/22/stdout227 2> log/22/stderr227 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind235 ../src/curl -q --output log/61/curl235.out --include --trace-ascii log/61/trace235 --trace-config all --trace-time ftp://127.0.0.1:46133/235 -T log/61/upload235 -C - > log/61/stdout235 2> log/61/stderr235 e you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind234 test 0233...[HTTP, proxy, site+proxy auth and Location: to new host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind233 ../src/curl -q --output log/32/curl233.out --include --trace-ascii log/32/trace233 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/233 -x 127.0.0.1:45607 --user iam:myself --proxy-user testing:this --location > log/32/stdout233 2> log/32/stderr233 233: protocol FAILED! There was no content at all in the file log/32/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/32/ dir after test 233 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind233 ../src/curl -q --output log/32/curl233.out --include --trace-ascii log/32/trace233 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/233 -x 127.0.0.1:45607 --user iam:myself --proxy-user testing:this --location > log/32/stdout233 2> log/32/stderr233 === End of file commands.log === Start of file http_server.log 09:40:39.744358 ====> Client connect 09:40:39.744799 accept_connection 3 returned 4 09:40:39.744961 accept_connection 3 returned 0 09:40:39.745086 Read 93 bytes 09:40:39.745175 Process 93 bytes request 09:40:39.745253 Got request: GET /verifiedserver HTTP/1.1 09:40:39.745327 Are-we-friendly question received 09:40:39.745613 Wrote request (93 bytes) input to log/32/server.input 09:40:39.745790 Identifying ourselves as friends 09:40:39.749917 Response sent (56 bytes) and written to log/32/server.response 09:40:39.750030 special request received, no persistency 09:40:39.750094 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45607... * Connected to 127.0.0.1 (127.0.0.1) port 45607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45607 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73778 === End of file http_verify.out === Start of file server.cmd Testnum 233 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73778 === End of file server.response === Start of file valgrind233 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind233 test 0229...[FTP RETR with bad ACCT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind229 ../src/curl -q --output log/56/curl229.out --include --trace-ascii log/56/trace229 --trace-config all --trace-time ftp://127.0.0.1:36539/229 --ftp-account "one count" > log/56/stdout229 2> log/56/stderr229 229: protocol FAILED! There was no content at all in the file log/56/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/56/ dir after test 229 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind229 ../src/curl -q --output log/56/curl229.out --include --trace-ascii log/56/trace229 --trace-config all --trace-time ftp://127.0.0.1:36539/229 --ftp-account "one count" > log/56/stdout229 2> log/56/stderr229 === End of file commands.log === Start of file ftp_server.log 09:40:39.519075 ====> Client connect 09:40:39.520443 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.525414 < "USER anonymous" 09:40:39.525913 > "331 We are happy you popped in![CR][LF]" 09:40:39.530548 < "PASS ftp@example.com" 09:40:39.532363 > "230 Welcome you silly person[CR][LF]" 09:40:39.536169 < "PWD" 09:40:39.536592 > "257 "/" is current directory[CR][LF]" 09:40:39.538605 < "EPSV" 09:40:39.538997 ====> Passive DATA channel requested by client 09:40:39.539224 DATA sockfilt for passive data channel starting... 09:40:39.573952 DATA sockfilt for passive data channel started (pid 86240) 09:40:39.579647 DATA sockfilt for passive data channel listens on port 38859 09:40:39.580316 > "229 Entering Passive Mode (|||38859|)[LF]" 09:40:39.580559 Client has been notified that DATA conn will be accepted on port 38859 09:40:39.583728 Client connects to port 38859 09:40:39.584100 ====> Client established passive DATA connection on port 38859 09:40:39.585364 < "TYPE I" 09:40:39.585914 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:39.591958 < "SIZE verifiedserver" 09:40:39.593897 > "213 17[CR][LF]" 09:40:39.594859 < "RETR verifiedserver" 09:40:39.595355 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:39.600283 =====> Closing passive DATA connection... 09:40:39.600493 Server disconnects passive DATA connection 09:40:39.601408 Server disconnected passive DATA connection 09:40:39.601722 DATA sockfilt for passive data channel quits (pid 86240) 09:40:39.607042 DATA sockfilt for passive data channel quit (pid 86240) 09:40:39.607276 =====> Closed passive DATA connection 09:40:39.611925 > "226 File transfer complete[CR][LF]" 09:40:39.643411 < "QUIT" 09:40:39.643860 > "221 bye bye baby[CR][LF]" 09:40:39.645365 MAIN sockfilt said DISC 09:40:39.645631 ====> Client disconnected 09:40:39.646208 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:39.772122 ====> Client connect 09:40:39.775571 Received DATA (on stdin) 09:40:39.775818 > 160 bytes data, server => client 09:40:39.775957 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:39.776055 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:39.776142 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:39.777952 < 16 bytes data, client => server 09:40:39.778106 'USER anonymous\r\n' 09:40:39.782553 RecCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind230 ../src/curl -q --output log/35/curl230.out --include --trace-ascii log/35/trace230 --trace-config all --trace-time http://127.0.0.1:43179/230 --compressed > log/35/stdout230 2> log/35/stderr230 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind238 ../src/curl -q --output log/8/curl238.out --include --trace-ascii log/8/trace238 --trace-config all --trace-time ftp://127.0.0.1:32769/238 > log/8/stdout238 2> log/8/stderr238 eived DATA (on stdin) 09:40:39.782711 > 33 bytes data, server => client 09:40:39.782810 '331 We are happy you popped in!\r\n' 09:40:39.783533 < 22 bytes data, client => server 09:40:39.783665 'PASS ftp@example.com\r\n' 09:40:39.784646 Received DATA (on stdin) 09:40:39.784773 > 30 bytes data, server => client 09:40:39.784973 '230 Welcome you silly person\r\n' 09:40:39.785731 < 5 bytes data, client => server 09:40:39.785869 'PWD\r\n' 09:40:39.790660 Received DATA (on stdin) 09:40:39.790795 > 30 bytes data, server => client 09:40:39.790887 '257 "/" is current directory\r\n' 09:40:39.793529 < 6 bytes data, client => server 09:40:39.793691 'EPSV\r\n' 09:40:39.834938 Received DATA (on stdin) 09:40:39.835178 > 38 bytes data, server => client 09:40:39.835268 '229 Entering Passive Mode (|||38859|)\n' 09:40:39.837071 < 8 bytes data, client => server 09:40:39.837215 'TYPE I\r\n' 09:40:39.843661 Received DATA (on stdin) 09:40:39.843820 > 33 bytes data, server => client 09:40:39.843914 '200 I modify TYPE as you wanted\r\n' 09:40:39.844711 < 21 bytes data, client => server 09:40:39.844848 'SIZE verifiedserver\r\n' 09:40:39.846052 Received DATA (on stdin) 09:40:39.846167 > 8 bytes data, server => client 09:40:39.846327 '213 17\r\n' 09:40:39.847073 < 21 bytes data, client => server 09:40:39.847247 'RETR verifiedserver\r\n' 09:40:39.852575 Received DATA (on stdin) 09:40:39.852771 > 29 bytes data, server => client 09:40:39.852897 '150 Binary junk (17 bytes).\r\n' 09:40:39.861336 Received DATA (on stdin) 09:40:39.861597 > 28 bytes data, server => client 09:40:39.861867 '226 File transfer complete\r\n' 09:40:39.896164 < 6 bytes data, client => server 09:40:39.896522 'QUIT\r\n' 09:40:39.897936 Received DATA (on stdin) 09:40:39.898100 > 18 bytes data, server => client 09:40:39.898184 '221 bye bye baby\r\n' 09:40:39.898766 ====> Client disconnect 09:40:39.900207 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.820982 Running IPv4 version 09:40:39.826420 Listening on port 38859 09:40:39.827031 Wrote pid 86240 to log/56/server/ftp_sockdata.pid 09:40:39.827219 Received PING (on stdin) 09:40:39.829598 Received PORT (on stdin) 09:40:39.836575 ====> Client connect 09:40:39.853767 Received DATA (on stdin) 09:40:39.853908 > 17 bytes data, server => client 09:40:39.853994 'WE ROOLZ: 77376\r\n' 09:40:39.854775 Received DISC (on stdin) 09:40:39.854914 ====> Client forcibly disconnected 09:40:39.855925 Received QUIT (on stdin) 09:40:39.856115 quits 09:40:39.856598 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 332 please provide account name REPLY ACCT 532 bluah Testnum 229 === End of file server.cmd === Start of file valgrind229 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind229 test 0227...[FTP with quote ops] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind227 ../src/curl -q --output log/22/curl227.out --include --trace-ascii log/22/trace227 --trace-config all --trace-time ftp://127.0.0.1:41867/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/22/stdout227 2> log/22/stderr227 227: protocol FAILED! There was no content at all in the file log/22/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/22/ dir after test 227 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind227 ../src/curl -q --output log/22/curl227.out --include --trace-ascii log/22/trace227 --trace-config all --trace-time ftp://127.0.0.1:41867/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/22/stdout227 2> log/22/stderr227 === End of file commands.log === Start of file ftp_server.log 09:40:39.563476 ====> Client connect 09:40:39.564617 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.567255 < "USER anonymous" 09:40:39.567625 > "331 We are happy you popped in![CR][LF]" 09:40:39.569592 < "PASS ftp@example.com" 09:40:39.570632 > "230 Welcome you silly person[CR][LF]" 09:40:39.572222 < "PWD" 09:40:39.573625 > "257 "/" is current directory[CR][LF]" 09:40:39.575364 < "EPSV" 09:40:39.575576 ====> Passive DATA channel requested by client 09:40:39.575703 DATA sockfilt for passive data channel starting... 09:40:39.596950 DATA sockfilt for passive data channel started (pid 86273) 09:40:39.601136 DATA sockfilt for passive data channel listens on port 42811 09:40:39.601573 > "229 Entering Passive Mode (|||42811|)[LF]" 09:40:39.601916 Client has been notified that DATA conn will be accepted on port 42811 09:40:39.603804 Client connects to port 42811 09:40:39.604117 ====> Client established passive DATA connection on port 42811 09:40:39.609162 < "TYPE I" 09:40:39.611248 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:39.612039 < "SIZE verifiedserver" 09:40:39.612467 > "213 17[CR][LF]" 09:40:39.616390 < "RETR verifiedserver" 09:40:39.618950 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:39.619733 =====> Closing passive DATA connection... 09:40:39.620184 Server disconnects passive DATA connection 09:40:39.625872 Server disconnected passive DATA connection 09:40:39.626125 DATA sockfilt for passive data channel quits (pid 86273) 09:40:39.627884 DATA sockfilt for passive data channel quit (pid 86273) 09:40:39.628121 =====> Closed passive DATA connection 09:40:39.628402 > "226 File transfer complete[CR][LF]" 09:40:39.668844 < "QUIT" 09:40:39.673142 > "221 bye bye baby[CR][LF]" 09:40:39.673450 MAIN sockfilt said DISC 09:40:39.674265 ====> Client disconnected 09:40:39.674821 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:39.816698 ====> Client connect 09:40:39.818813 Received DATA (on stdin) 09:40:39.818940 > 160 bytes data, server => client 09:40:39.819018 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:39.819093 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:39.819167 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:39.819907 < 16 bytes data, client => server 09:40:39.820037 'USER anonymous\r\n' 09:40:39.821673 Received DATA (on stdin) 09:40:39.821825 > 33 bytes data, server => client 09:40:39.821917 '331 We are happy you popped in!\r\n' 09:40:39.822495 < 22 bytes data, client => server 09:40:39.822635 'PASS ftp@example.com\r\n' 09:40:39.823CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind247 ../src/curl -q --output log/10/curl247.out --include --trace-ascii log/10/trace247 --trace-config all --trace-time ftp://127.0.0.1:32859/247 -T log/10/test247.txt -z "apr 1 2005 08:00:00" > log/10/stdout247 2> log/10/stderr247 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind246 ../src/curl -q --output log/43/curl246.out --include --trace-ascii log/43/trace246 --trace-config all --trace-time http://127.0.0.1:41267/246 -u auser:apasswd --digest -d "junkelijunk" > log/43/stdout246 2> log/43/stderr246 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind245 ../src/curl -q --output log/39/curl245.out --include --trace-ascii log/39/trace245 --trace-config all --trace-time http://127.0.0.1:42899/245 -u auser:apasswd --digest -d "junkelijunk" > log/39/stdout245 2> log/39/stderr245 686 Received DATA (on stdin) 09:40:39.823818 > 30 bytes data, server => client 09:40:39.823975 '230 Welcome you silly person\r\n' 09:40:39.825216 < 5 bytes data, client => server 09:40:39.825372 'PWD\r\n' 09:40:39.826293 Received DATA (on stdin) 09:40:39.826712 > 30 bytes data, server => client 09:40:39.826941 '257 "/" is current directory\r\n' 09:40:39.828516 < 6 bytes data, client => server 09:40:39.828660 'EPSV\r\n' 09:40:39.855958 Received DATA (on stdin) 09:40:39.856126 > 38 bytes data, server => client 09:40:39.856218 '229 Entering Passive Mode (|||42811|)\n' 09:40:39.861951 < 8 bytes data, client => server 09:40:39.862098 'TYPE I\r\n' 09:40:39.863230 Received DATA (on stdin) 09:40:39.863368 > 33 bytes data, server => client 09:40:39.863631 '200 I modify TYPE as you wanted\r\n' 09:40:39.864602 < 21 bytes data, client => server 09:40:39.864740 'SIZE verifiedserver\r\n' 09:40:39.868546 Received DATA (on stdin) 09:40:39.868692 > 8 bytes data, server => client 09:40:39.868763 '213 17\r\n' 09:40:39.869339 < 21 bytes data, client => server 09:40:39.869538 'RETR verifiedserver\r\n' 09:40:39.870598 Received DATA (on stdin) 09:40:39.870801 > 29 bytes data, server => client 09:40:39.874153 '150 Binary junk (17 bytes).\r\n' 09:40:39.882381 Received DATA (on stdin) 09:40:39.882584 > 28 bytes data, server => client 09:40:39.882674 '226 File transfer complete\r\n' 09:40:39.921613 < 6 bytes data, client => server 09:40:39.921762 'QUIT\r\n' 09:40:39.922939 Received DATA (on stdin) 09:40:39.923085 > 18 bytes data, server => client 09:40:39.923273 '221 bye bye baby\r\n' 09:40:39.926559 ====> Client disconnect 09:40:39.927424 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.848923 Running IPv4 version 09:40:39.849402 Listening on port 42811 09:40:39.849937 Wrote pid 86273 to log/22/server/ftp_sockdata.pid 09:40:39.850153 Received PING (on stdin) 09:40:39.851158 Received PORT (on stdin) 09:40:39.857181 ====> Client connect 09:40:39.874846 Received DATA (on stdin) 09:40:39.875015 > 17 bytes data, server => client 09:40:39.875110 'WE ROOLZ: 77494\r\n' 09:40:39.876047 Received DISC (on stdin) 09:40:39.876207 ====> Client forcibly disconnected 09:40:39.880101 Received QUIT (on stdin) 09:40:39.880236 quits 09:40:39.880697 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command REPLY FAIL 500 this might not be a failure Testnum 227 === End of file server.cmd === Start of file valgrind227 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind227 test 0230...[HTTP GET multiply compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind230 ../src/curl -q --output log/35/curl230.out --include --trace-ascii log/35/trace230 --trace-config all --trace-time http://127.0.0.1:43179/230 --compressed > log/35/stdout230 2> log/35/stderr230 230: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 230 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind230 ../src/curl -q --output log/35/curl230.out --include --trace-ascii log/35/trace230 --trace-config all --trace-time http://127.0.0.1:43179/230 --compressed > log/35/stdout230 2> log/35/stderr230 === End of file commands.log === Start of file http_server.log 09:40:39.764901 ====> Client connect 09:40:39.765281 accept_connection 3 returned 4 09:40:39.765589 accept_connection 3 returned 0 09:40:39.765767 Read 93 bytes 09:40:39.765876 Process 93 bytes request 09:40:39.765984 Got request: GET /verifiedserver HTTP/1.1 09:40:39.766095 Are-we-friendly question received 09:40:39.766334 Wrote request (93 bytes) input to log/35/server.input 09:40:39.766721 Identifying ourselves as friends 09:40:39.777591 Response sent (56 bytes) and written to log/35/server.response 09:40:39.777736 special request received, no persistency 09:40:39.777827 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43179... * Connected to 127.0.0.1 (127.0.0.1) port 43179 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43179 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73771 === End of file http_verify.out === Start of file server.cmd Testnum 230 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73771 === End of file server.response === Start of file valgrind230 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind230 test 0235...[FTP resumed upload but no file present remotely] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind235 ../src/curl -q --output log/61/curl235.out --include --trace-ascii loCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind232 ../src/curl -q --output log/45/curl232.out --include --trace-ascii log/45/trace232 --trace-config all --trace-time http://127.0.0.1:34239/232 --compressed > log/45/stdout232 2> log/45/stderr232 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind236 ../src/curl -q --output log/59/curl236.out --include --trace-ascii log/59/trace236 --trace-config all --trace-time ftp://127.0.0.1:43961/236 -T log/59/file236.txt -C - > log/59/stdout236 2> log/59/stderr236 g/61/trace235 --trace-config all --trace-time ftp://127.0.0.1:46133/235 -T log/61/upload235 -C - > log/61/stdout235 2> log/61/stderr235 235: protocol FAILED! There was no content at all in the file log/61/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/61/ dir after test 235 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind235 ../src/curl -q --output log/61/curl235.out --include --trace-ascii log/61/trace235 --trace-config all --trace-time ftp://127.0.0.1:46133/235 -T log/61/upload235 -C - > log/61/stdout235 2> log/61/stderr235 === End of file commands.log === Start of file ftp_server.log 09:40:39.638429 ====> Client connect 09:40:39.639991 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.647405 < "USER anonymous" 09:40:39.650916 > "331 We are happy you popped in![CR][LF]" 09:40:39.653002 < "PASS ftp@example.com" 09:40:39.653408 > "230 Welcome you silly person[CR][LF]" 09:40:39.656237 < "PWD" 09:40:39.656671 > "257 "/" is current directory[CR][LF]" 09:40:39.662262 < "EPSV" 09:40:39.662527 ====> Passive DATA channel requested by client 09:40:39.662701 DATA sockfilt for passive data channel starting... 09:40:39.675279 DATA sockfilt for passive data channel started (pid 86373) 09:40:39.676243 DATA sockfilt for passive data channel listens on port 36259 09:40:39.676722 > "229 Entering Passive Mode (|||36259|)[LF]" 09:40:39.677029 Client has been notified that DATA conn will be accepted on port 36259 09:40:39.678298 Client connects to port 36259 09:40:39.678599 ====> Client established passive DATA connection on port 36259 09:40:39.679581 < "TYPE I" 09:40:39.680201 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:39.683515 < "SIZE verifiedserver" 09:40:39.684979 > "213 17[CR][LF]" 09:40:39.686344 < "RETR verifiedserver" 09:40:39.686997 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:39.689441 =====> Closing passive DATA connection... 09:40:39.689703 Server disconnects passive DATA connection 09:40:39.691207 Server disconnected passive DATA connection 09:40:39.691447 DATA sockfilt for passive data channel quits (pid 86373) 09:40:39.693264 DATA sockfilt for passive data channel quit (pid 86373) 09:40:39.693558 =====> Closed passive DATA connection 09:40:39.693968 > "226 File transfer complete[CR][LF]" 09:40:39.732876 < "QUIT" 09:40:39.734946 > "221 bye bye baby[CR][LF]" 09:40:39.743416 MAIN sockfilt said DISC 09:40:39.744346 ====> Client disconnected 09:40:39.744964 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:38.891612 ====> Client connect 09:40:38.895548 Received DATA (on stdin) 09:40:38.895716 > 160 bytes data, server => client 09:40:38.895833 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:38.895949 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:38.896070 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:38.898918 < 16 bytes data, client => server 09:40:38.899055 'USER anonymous\r\n' 09:40:38.904970 Received DATA (on stdin) 09:40:38.905106 > 33 bytes data, server => client 09:40:38.905204 '331 We are happy you popped in!\r\n' 09:40:38.905896 < 22 bytes data, client => server 09:40:38.906018 'PASS ftp@example.com\r\n' 09:40:38.907418 Received DATA (on stdin) 09:40:38.907718 > 30 bytes data, server => client 09:40:38.908173 '230 Welcome you silly person\r\n' 09:40:38.909124 < 5 bytes data, client => server 09:40:38.909265 'PWD\r\n' 09:40:38.911643 Received DATA (on stdin) 09:40:38.911795 > 30 bytes data, server => client 09:40:38.911885 '257 "/" is current directory\r\n' 09:40:38.912580 < 6 bytes data, client => server 09:40:38.912717 'EPSV\r\n' 09:40:38.930388 Received DATA (on stdin) 09:40:38.930620 > 38 bytes data, server => client 09:40:38.930728 '229 Entering Passive Mode (|||36259|)\n' 09:40:38.932704 < 8 bytes data, client => server 09:40:38.932870 'TYPE I\r\n' 09:40:38.933886 Received DATA (on stdin) 09:40:38.934085 > 33 bytes data, server => client 09:40:38.934201 '200 I modify TYPE as you wanted\r\n' 09:40:38.936698 < 21 bytes data, client => server 09:40:38.936864 'SIZE verifiedserver\r\n' 09:40:38.937684 Received DATA (on stdin) 09:40:38.937847 > 8 bytes data, server => client 09:40:38.938060 '213 17\r\n' 09:40:38.938890 < 21 bytes data, client => server 09:40:38.939059 'RETR verifiedserver\r\n' 09:40:38.941259 Received DATA (on stdin) 09:40:38.941428 > 29 bytes data, server => client 09:40:38.941627 '150 Binary junk (17 bytes).\r\n' 09:40:38.948115 Received DATA (on stdin) 09:40:38.948289 > 28 bytes data, server => client 09:40:38.948384 '226 File transfer complete\r\n' 09:40:38.985613 < 6 bytes data, client => server 09:40:38.985773 'QUIT\r\n' 09:40:38.986938 Received DATA (on stdin) 09:40:38.987074 > 18 bytes data, server => client 09:40:38.992549 '221 bye bye baby\r\n' 09:40:38.995551 ====> Client disconnect 09:40:38.997547 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.927386 Running IPv4 version 09:40:39.928000 Listening on port 36259 09:40:39.928405 Wrote pid 86373 to log/61/server/ftp_sockdata.pid 09:40:39.928693 Received PING (on stdin) 09:40:39.929378 Received PORT (on stdin) 09:40:39.931718 ====> Client connect 09:40:39.942185 Received DATA (on stdin) 09:40:39.942384 > 17 bytes data, server => client 09:40:39.943737 'WE ROOLZ: 79508\r\n' 09:40:39.944136 Received DISC (on stdin) 09:40:39.944281 ====> Client forcibly disconnected 09:40:39.945337 Received QUIT (on stdin) 09:40:39.945519 quits 09:40:39.945915 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY SIZE 500 command not understood Testnum 235 === End of file server.cmd === Start of file upload235 this is the *****crap******** that we're gonna upload worx? === End of file upload235 === Start of file valgrind235 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind235 test 0238...[FTP getting bad port in response to EPSV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind238 ../src/curl -q --output log/8/curl238.out --include --trace-ascii log/8/trace238 --trace-config all --trace-time ftp://127.0.0.1:32769/238 > log/8/stdout238 2> log/8/stderr238 238: protocol FAILED! There was no content at all in the file log/8/server.input. Server glitch? CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind249 ../src/curl -q --output log/63/curl249.out --include --trace-ascii log/63/trace249 --trace-config all --trace-time http://127.0.0.1:38797/249 -z "dec 12 12:00:00 1999 GMT" > log/63/stdout249 2> log/63/stderr249 Total curl failure? Returned: 1 == Contents of files in the log/8/ dir after test 238 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind238 ../src/curl -q --output log/8/curl238.out --include --trace-ascii log/8/trace238 --trace-config all --trace-time ftp://127.0.0.1:32769/238 > log/8/stdout238 2> log/8/stderr238 === End of file commands.log === Start of file ftp_server.log 09:40:39.660683 ====> Client connect 09:40:39.664378 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.667605 < "USER anonymous" 09:40:39.668555 > "331 We are happy you popped in![CR][LF]" 09:40:39.670483 < "PASS ftp@example.com" 09:40:39.671695 > "230 Welcome you silly person[CR][LF]" 09:40:39.673418 < "PWD" 09:40:39.674931 > "257 "/" is current directory[CR][LF]" 09:40:39.676153 < "EPSV" 09:40:39.676405 ====> Passive DATA channel requested by client 09:40:39.676563 DATA sockfilt for passive data channel starting... 09:40:39.687500 DATA sockfilt for passive data channel started (pid 86385) 09:40:39.688707 DATA sockfilt for passive data channel listens on port 43875 09:40:39.689333 > "229 Entering Passive Mode (|||43875|)[LF]" 09:40:39.689691 Client has been notified that DATA conn will be accepted on port 43875 09:40:39.691299 Client connects to port 43875 09:40:39.691587 ====> Client established passive DATA connection on port 43875 09:40:39.692320 < "TYPE I" 09:40:39.692680 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:39.695911 < "SIZE verifiedserver" 09:40:39.696463 > "213 17[CR][LF]" 09:40:39.698646 < "RETR verifiedserver" 09:40:39.699153 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:39.699913 =====> Closing passive DATA connection... 09:40:39.700146 Server disconnects passive DATA connection 09:40:39.701852 Server disconnected passive DATA connection 09:40:39.702086 DATA sockfilt for passive data channel quits (pid 86385) 09:40:39.704121 DATA sockfilt for passive data channel quit (pid 86385) 09:40:39.704389 =====> Closed passive DATA connection 09:40:39.705377 > "226 File transfer complete[CR][LF]" 09:40:39.744379 < "QUIT" 09:40:39.744836 > "221 bye bye baby[CR][LF]" 09:40:39.749239 MAIN sockfilt said DISC 09:40:39.750203 ====> Client disconnected 09:40:39.750733 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:39.913846 ====> Client connect 09:40:39.918590 Received DATA (on stdin) 09:40:39.918751 > 160 bytes data, server => client 09:40:39.918847 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:39.918930 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:39.919016 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:39.920237 < 16 bytes data, client => server 09:40:39.920412 'USER anonymous\r\n' 09:40:39.921785 Received DATA (on stdin) 09:40:39.921938 > 33 bytes data, server => client 09:40:39.922531 '331 We are happy you popped in!\r\n' 09:40:39.923355 < 22 bytes data, client => server 09:40:39.923558 'PASS ftp@example.com\r\n' 09:40:39.924560 Received DATA (on stdin) 09:40:39.924742 > 30 bytes data, server => client 09:40:39.924951 '230 Welcome you silly person\r\n' 09:40:39.926555 < 5 bytes data, client => server 09:40:39.926699 'PWD\r\n' 09:40:39.927540 Received DATA (on stdin) 09:40:39.927669 > 30 bytes data, server => client 09:40:39.927869 '257 "/" is current directory\r\n' 09:40:39.929099 < 6 bytes data, client => server 09:40:39.929221 'EPSV\r\n' 09:40:39.943030 Received DATA (on stdin) 09:40:39.943302 > 38 bytes data, server => client 09:40:39.943402 '229 Entering Passive Mode (|||43875|)\n' 09:40:39.945273 < 8 bytes data, client => server 09:40:39.945409 'TYPE I\r\n' 09:40:39.946721 Received DATA (on stdin) 09:40:39.946838 > 33 bytes data, server => client 09:40:39.946912 '200 I modify TYPE as you wanted\r\n' 09:40:39.948132 < 21 bytes data, client => server 09:40:39.948276 'SIZE verifiedserver\r\n' 09:40:39.950533 Received DATA (on stdin) 09:40:39.950669 > 8 bytes data, server => client 09:40:39.950777 '213 17\r\n' 09:40:39.951545 < 21 bytes data, client => server 09:40:39.951698 'RETR verifiedserver\r\n' 09:40:39.954125 Received DATA (on stdin) 09:40:39.954248 > 29 bytes data, server => client 09:40:39.954369 '150 Binary junk (17 bytes).\r\n' 09:40:39.958413 Received DATA (on stdin) 09:40:39.958640 > 28 bytes data, server => client 09:40:39.958822 '226 File transfer complete\r\n' 09:40:39.997487 < 6 bytes data, client => server 09:40:39.997667 'QUIT\r\n' 09:40:39.998568 Received DATA (on stdin) 09:40:39.998761 > 18 bytes data, server => client 09:40:39.998857 '221 bye bye baby\r\n' 09:40:40.002591 ====> Client disconnect 09:40:40.003238 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.939418 Running IPv4 version 09:40:39.940162 Listening on port 43875 09:40:39.940742 Wrote pid 86385 to log/8/server/ftp_sockdata.pid 09:40:39.940939 Received PING (on stdin) 09:40:39.941699 Received PORT (on stdin) 09:40:39.944649 ====> Client connect 09:40:39.953261 Received DATA (on stdin) 09:40:39.953513 > 17 bytes data, server => client 09:40:39.953645 'WE ROOLZ: 77502\r\n' 09:40:39.954121 Received DISC (on stdin) 09:40:39.954287 ====> Client forcibly disconnected 09:40:39.956052 Received QUIT (on stdin) 09:40:39.956202 quits 09:40:39.956700 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 229 Entering Passiv Mode (|||1000000|) Testnum 238 === End of file server.cmd === Start of file valgrind238 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind238 test 0247...[FTP upload time condition evaluates TRUE => skip upload] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind247 ../src/curl -q --output log/10/curl247.out --include --trace-ascii log/10/trace247 --trace-config all --trace-time ftp://127.0.0.1:32859/247 -T log/10/test247.txt -z "apr 1 2005 08:00:00" > log/10/stdout247 2> log/10/stderr247 247: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 247 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind247CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind244 ../src/curl -q --output log/58/curl244.out --include --trace-ascii log/58/trace244 --trace-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:38901/fir%23t/th%69rd/244/ > log/58/stdout244 2> log/58/stderr244 ../src/curl -q --output log/10/curl247.out --include --trace-ascii log/10/trace247 --trace-config all --trace-time ftp://127.0.0.1:32859/247 -T log/10/test247.txt -z "apr 1 2005 08:00:00" > log/10/stdout247 2> log/10/stderr247 === End of file commands.log === Start of file ftp_server.log 09:40:39.824911 ====> Client connect 09:40:39.827460 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.830152 < "USER anonymous" 09:40:39.830570 > "331 We are happy you popped in![CR][LF]" 09:40:39.834216 < "PASS ftp@example.com" 09:40:39.834617 > "230 Welcome you silly person[CR][LF]" 09:40:39.837290 < "PWD" 09:40:39.837726 > "257 "/" is current directory[CR][LF]" 09:40:39.840121 < "EPSV" 09:40:39.840452 ====> Passive DATA channel requested by client 09:40:39.840623 DATA sockfilt for passive data channel starting... 09:40:39.874450 DATA sockfilt for passive data channel started (pid 86651) 09:40:39.875640 DATA sockfilt for passive data channel listens on port 43525 09:40:39.876205 > "229 Entering Passive Mode (|||43525|)[LF]" 09:40:39.876471 Client has been notified that DATA conn will be accepted on port 43525 09:40:39.878049 Client connects to port 43525 09:40:39.878395 ====> Client established passive DATA connection on port 43525 09:40:39.879297 < "TYPE I" 09:40:39.879732 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:39.884346 < "SIZE verifiedserver" 09:40:39.886971 > "213 17[CR][LF]" 09:40:39.888982 < "RETR verifiedserver" 09:40:39.889411 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:39.890498 =====> Closing passive DATA connection... 09:40:39.894402 Server disconnects passive DATA connection 09:40:39.895367 Fancy that; client wants to DISC, too 09:40:39.898692 Server disconnected passive DATA connection 09:40:39.899087 DATA sockfilt for passive data channel quits (pid 86651) 09:40:39.906123 DATA sockfilt for passive data channel quit (pid 86651) 09:40:39.906400 =====> Closed passive DATA connection 09:40:39.906807 > "226 File transfer complete[CR][LF]" 09:40:39.940053 < "QUIT" 09:40:39.940902 > "221 bye bye baby[CR][LF]" 09:40:39.949900 MAIN sockfilt said DISC 09:40:39.950257 ====> Client disconnected 09:40:39.950692 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:40.077396 ====> Client connect 09:40:40.081177 Received DATA (on stdin) 09:40:40.081351 > 160 bytes data, server => client 09:40:40.081543 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:40.081690 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:40.081788 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:40.082799 < 16 bytes data, client => server 09:40:40.083013 'USER anonymous\r\n' 09:40:40.084322 Received DATA (on stdin) 09:40:40.084553 > 33 bytes data, server => client 09:40:40.084743 '331 We are happy you popped in!\r\n' 09:40:40.085598 < 22 bytes data, client => server 09:40:40.085737 'PASS ftp@example.com\r\n' 09:40:40.088354 Received DATA (on stdin) 09:40:40.088645 > 30 bytes data, server => client 09:40:40.088750 '230 Welcome you silly person\r\n' 09:40:40.090354 < 5 bytes data, client => server 09:40:40.090580 'PWD\r\n' 09:40:40.091816 Received DATA (on stdin) 09:40:40.091949 > 30 bytes data, server => client 09:40:40.092040 '257 "/" is current directory\r\n' 09:40:40.092972 < 6 bytes data, client => server 09:40:40.093152 'EPSV\r\n' 09:40:40.129936 Received DATA (on stdin) 09:40:40.130128 > 38 bytes data, server => client 09:40:40.130241 '229 Entering Passive Mode (|||43525|)\n' 09:40:40.132120 < 8 bytes data, client => server 09:40:40.132266 'TYPE I\r\n' 09:40:40.136584 Received DATA (on stdin) 09:40:40.136761 > 33 bytes data, server => client 09:40:40.136857 '200 I modify TYPE as you wanted\r\n' 09:40:40.137601 < 21 bytes data, client => server 09:40:40.137762 'SIZE verifiedserver\r\n' 09:40:40.138535 Received DATA (on stdin) 09:40:40.138691 > 8 bytes data, server => client 09:40:40.141049 '213 17\r\n' 09:40:40.141850 < 21 bytes data, client => server 09:40:40.141983 'RETR verifiedserver\r\n' 09:40:40.146670 Received DATA (on stdin) 09:40:40.146854 > 29 bytes data, server => client 09:40:40.146961 '150 Binary junk (17 bytes).\r\n' 09:40:40.160852 Received DATA (on stdin) 09:40:40.160999 > 28 bytes data, server => client 09:40:40.161097 '226 File transfer complete\r\n' 09:40:40.192655 < 6 bytes data, client => server 09:40:40.192848 'QUIT\r\n' 09:40:40.194141 Received DATA (on stdin) 09:40:40.194302 > 18 bytes data, server => client 09:40:40.195258 '221 bye bye baby\r\n' 09:40:40.199627 ====> Client disconnect 09:40:40.204848 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.119291 Running IPv4 version 09:40:39.127033 Listening on port 43525 09:40:39.127545 Wrote pid 86651 to log/10/server/ftp_sockdata.pid 09:40:39.127798 Received PING (on stdin) 09:40:39.128800 Received PORT (on stdin) 09:40:39.131357 ====> Client connect 09:40:39.143853 Received DATA (on stdin) 09:40:39.144029 > 17 bytes data, server => client 09:40:39.144119 'WE ROOLZ: 77425\r\n' 09:40:39.148001 ====> Client disconnect 09:40:39.148623 Received DISC (on stdin) 09:40:39.148945 Crikey! Client also wants to disconnect 09:40:39.152546 Received ACKD (on stdin) 09:40:39.154591 Received QUIT (on stdin) 09:40:39.154786 quits 09:40:39.155247 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 247 === End of file server.cmd === Start of file test247.txt data to see that FTP works so does it? === End of file test247.txt === Start of file valgrind247 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind247 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/33/server/http_ipv6_server.pid" --logfile "log/33/http_ipv6_server.log" --logdir "log/33" --portfile log/33/server/http_ipv6_server.port --config log/33/server.cmd --ipv6 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP-IPv6 server is on PID 86151 port 46415 * pid http-ipv6 => 86151 86151 prechecked ./server/servers resolve --ipv6 ip6-localhost test 0241 SKIPPED: Resolving IPv6 'ip6-localhost' didn't work test 0245...[HTTP POST --digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind245 ../src/curl -q --output log/39/curl245.out --include --trace-ascii log/39/trace245 --trace-config all --trace-time http://127.0.0.1:42899/245 -u auser:apasswd --digest -d CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind243 ../src/curl -q --output log/54/curl243.out --include --trace-ascii log/54/trace243 --trace-config all --trace-time http://127.0.0.1:44921/243 --proxy http://127.0.0.1:44921 --proxy-user testuser:testpass --proxy-anyauth -d "postit" > log/54/stdout243 2> log/54/stderr243 "junkelijunk" > log/39/stdout245 2> log/39/stderr245 245: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 245 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind245 ../src/curl -q --output log/39/curl245.out --include --trace-ascii log/39/trace245 --trace-config all --trace-time http://127.0.0.1:42899/245 -u auser:apasswd --digest -d "junkelijunk" > log/39/stdout245 2> log/39/stderr245 === End of file commands.log === Start of file http_server.log 09:40:40.145877 ====> Client connect 09:40:40.146249 accept_connection 3 returned 4 09:40:40.146903 accept_connection 3 returned 0 09:40:40.147089 Read 93 bytes 09:40:40.147234 Process 93 bytes request 09:40:40.147377 Got request: GET /verifiedserver HTTP/1.1 09:40:40.147589 Are-we-friendly question received 09:40:40.147868 Wrote request (93 bytes) input to log/39/server.input 09:40:40.148064 Identifying ourselves as friends 09:40:40.152034 Response sent (56 bytes) and written to log/39/server.response 09:40:40.152250 special request received, no persistency 09:40:40.152345 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 245 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind245 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind245 test 0246...[HTTP POST --digest with server doing a 100 before 401 response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind246 ../src/curl -q --output log/43/curl246.out --include --trace-ascii log/43/trace246 --trace-config all --trace-time http://127.0.0.1:41267/246 -u auser:apasswd --digest -d "junkelijunk" > log/43/stdout246 2> log/43/stderr246 246: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 246 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind246 ../src/curl -q --output log/43/curl246.out --include --trace-ascii log/43/trace246 --trace-config all --trace-time http://127.0.0.1:41267/246 -u auser:apasswd --digest -d "junkelijunk" > log/43/stdout246 2> log/43/stderr246 === End of file commands.log === Start of file http_server.log 09:40:40.125077 ====> Client connect 09:40:40.125378 accept_connection 3 returned 4 09:40:40.125697 accept_connection 3 returned 0 09:40:40.126521 Read 93 bytes 09:40:40.126660 Process 93 bytes request 09:40:40.126744 Got request: GET /verifiedserver HTTP/1.1 09:40:40.126819 Are-we-friendly question received 09:40:40.127039 Wrote request (93 bytes) input to log/43/server.input 09:40:40.127236 Identifying ourselves as friends 09:40:40.127838 Response sent (56 bytes) and written to log/43/server.response 09:40:40.127944 special request received, no persistency 09:40:40.128009 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd Testnum 246 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file valgrind246 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind246 test 0232...[HTTP GET deflate raw-compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind232 ../src/curl -q --output log/45/curl232.out --include --trace-ascii log/45/trace232 --trace-config all --trace-time http://127.0.0.1:34239/232 --compressed > log/45/stdout232 2> log/45/stderr232 232: protocol FAILED! There was no content at all in the file log/45/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/45/ dir after test 232 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-checCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind260 ../src/curl -q --output log/64/curl260.out --include --trace-ascii log/64/trace260 --trace-config all --trace-time "http://127.0.0.1:33073?260" > log/64/stdout260 2> log/64/stderr260 k=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind232 ../src/curl -q --output log/45/curl232.out --include --trace-ascii log/45/trace232 --trace-config all --trace-time http://127.0.0.1:34239/232 --compressed > log/45/stdout232 2> log/45/stderr232 === End of file commands.log === Start of file http_server.log 09:40:38.855880 ====> Client connect 09:40:38.856188 accept_connection 3 returned 4 09:40:38.856369 accept_connection 3 returned 0 09:40:38.856651 Read 93 bytes 09:40:38.856765 Process 93 bytes request 09:40:38.856851 Got request: GET /verifiedserver HTTP/1.1 09:40:38.856932 Are-we-friendly question received 09:40:38.857154 Wrote request (93 bytes) input to log/45/server.input 09:40:38.857347 Identifying ourselves as friends 09:40:38.858173 Response sent (56 bytes) and written to log/45/server.response 09:40:38.858287 special request received, no persistency 09:40:38.858358 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34239... * Connected to 127.0.0.1 (127.0.0.1) port 34239 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34239 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 75108 === End of file http_verify.out === Start of file server.cmd Testnum 232 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 75108 === End of file server.response === Start of file valgrind232 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind232 test 0243...[HTTP POST with --proxy-anyauth, picking NTLM] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind243 ../src/curl -q --output log/54/curl243.out --include --trace-ascii log/54/trace243 --trace-config all --trace-time http://127.0.0.1:44921/243 --proxy http://127.0.0.1:44921 --proxy-user testuser:testpass --proxy-anyauth -d "postit" > log/54/stdout243 2> log/54/stderr243 243: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 243 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind243 ../src/curl -q --output log/54/curl243.out --include --trace-ascii log/54/trace243 --trace-config all --trace-time http://127.0.0.1:44921/243 --proxy http://127.0.0.1:44921 --proxy-user testuser:testpass --proxy-anyauth -d "postit" > log/54/stdout243 2> log/54/stderr243 === End of file commands.log === Start of file http_server.log 09:40:40.080353 ====> Client connect 09:40:40.080965 accept_connection 3 returned 4 09:40:40.081156 accept_connection 3 returned 0 09:40:40.081851 Read 93 bytes 09:40:40.081989 Process 93 bytes request 09:40:40.082076 Got request: GET /verifiedserver HTTP/1.1 09:40:40.082141 Are-we-friendly question received 09:40:40.082370 Wrote request (93 bytes) input to log/54/server.input 09:40:40.082661 Identifying ourselves as friends 09:40:40.083347 Response sent (56 bytes) and written to log/54/server.response 09:40:40.087717 special request received, no persistency 09:40:40.087833 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 243 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind243 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind243 test 0244...[FTP dir listing with nocwd and URL encoded path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind244 ../src/curl -q --output log/58/curl244.out --include --trace-ascii log/58/trace244 --trace-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:38901/fir%23t/th%69rd/244/ > log/58/stdout244 2> log/58/stderr244 244: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 244 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind244 ../src/curl -q --output log/58/curl244.out --include --trace-ascii log/58/trace244 --trace-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:38901/fir%23t/thCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind239 ../src/curl -q --output log/55/curl239.out --include --trace-ascii log/55/trace239 --trace-config all --trace-time http://127.0.0.1:33071/239 --proxy http://127.0.0.1:33071 --proxy-user testuser:testpass --proxy-ntlm -d "postit" > log/55/stdout239 2> log/55/stderr239 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind250 ../src/curl -q --output log/1/curl250.out --include --trace log/1/trace250 --trace-config all --trace-time ftp://127.0.0.1:33417/ > log/1/stdout250 2> log/1/stderr250 %69rd/244/ > log/58/stdout244 2> log/58/stderr244 === End of file commands.log === Start of file ftp_server.log 09:40:39.944968 ====> Client connect 09:40:39.946194 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.948697 < "USER anonymous" 09:40:39.953157 > "331 We are happy you popped in![CR][LF]" 09:40:39.954317 < "PASS ftp@example.com" 09:40:39.955546 > "230 Welcome you silly person[CR][LF]" 09:40:39.956718 < "PWD" 09:40:39.957558 > "257 "/" is current directory[CR][LF]" 09:40:39.959318 < "EPSV" 09:40:39.959544 ====> Passive DATA channel requested by client 09:40:39.959702 DATA sockfilt for passive data channel starting... 09:40:39.972940 DATA sockfilt for passive data channel started (pid 86836) 09:40:39.973990 DATA sockfilt for passive data channel listens on port 46265 09:40:39.974386 > "229 Entering Passive Mode (|||46265|)[LF]" 09:40:39.974612 Client has been notified that DATA conn will be accepted on port 46265 09:40:39.977045 Client connects to port 46265 09:40:39.977305 ====> Client established passive DATA connection on port 46265 09:40:39.978056 < "TYPE I" 09:40:39.978379 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:39.980237 < "SIZE verifiedserver" 09:40:39.980993 > "213 17[CR][LF]" 09:40:39.982571 < "RETR verifiedserver" 09:40:39.983087 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:39.983989 =====> Closing passive DATA connection... 09:40:39.984202 Server disconnects passive DATA connection 09:40:39.987109 Server disconnected passive DATA connection 09:40:39.987343 DATA sockfilt for passive data channel quits (pid 86836) 09:40:39.989380 DATA sockfilt for passive data channel quit (pid 86836) 09:40:39.989621 =====> Closed passive DATA connection 09:40:39.990405 > "226 File transfer complete[CR][LF]" 09:40:40.029201 < "QUIT" 09:40:40.030908 > "221 bye bye baby[CR][LF]" 09:40:40.031525 MAIN sockfilt said DISC 09:40:40.031912 ====> Client disconnected 09:40:40.032399 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:40.196818 ====> Client connect 09:40:40.200194 Received DATA (on stdin) 09:40:40.200339 > 160 bytes data, server => client 09:40:40.200549 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:40.200675 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:40.200749 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:40.201424 < 16 bytes data, client => server 09:40:40.201627 'USER anonymous\r\n' 09:40:40.202831 Received DATA (on stdin) 09:40:40.202962 > 33 bytes data, server => client 09:40:40.203107 '331 We are happy you popped in!\r\n' 09:40:40.207266 < 22 bytes data, client => server 09:40:40.207390 'PASS ftp@example.com\r\n' 09:40:40.208331 Received DATA (on stdin) 09:40:40.208534 > 30 bytes data, server => client 09:40:40.208708 '230 Welcome you silly person\r\n' 09:40:40.209727 < 5 bytes data, client => server 09:40:40.209852 'PWD\r\n' 09:40:40.210923 Received DATA (on stdin) 09:40:40.211054 > 30 bytes data, server => client 09:40:40.211530 '257 "/" is current directory\r\n' 09:40:40.212276 < 6 bytes data, client => server 09:40:40.212409 'EPSV\r\n' 09:40:40.228679 Received DATA (on stdin) 09:40:40.228818 > 38 bytes data, server => client 09:40:40.228896 '229 Entering Passive Mode (|||46265|)\n' 09:40:40.230083 < 8 bytes data, client => server 09:40:40.230222 'TYPE I\r\n' 09:40:40.232498 Received DATA (on stdin) 09:40:40.232640 > 33 bytes data, server => client 09:40:40.232714 '200 I modify TYPE as you wanted\r\n' 09:40:40.233212 < 21 bytes data, client => server 09:40:40.233333 'SIZE verifiedserver\r\n' 09:40:40.234295 Received DATA (on stdin) 09:40:40.234421 > 8 bytes data, server => client 09:40:40.234961 '213 17\r\n' 09:40:40.235614 < 21 bytes data, client => server 09:40:40.235745 'RETR verifiedserver\r\n' 09:40:40.238104 Received DATA (on stdin) 09:40:40.238229 > 29 bytes data, server => client 09:40:40.238312 '150 Binary junk (17 bytes).\r\n' 09:40:40.243682 Received DATA (on stdin) 09:40:40.243836 > 28 bytes data, server => client 09:40:40.244519 '226 File transfer complete\r\n' 09:40:40.281945 < 6 bytes data, client => server 09:40:40.282109 'QUIT\r\n' 09:40:40.283255 Received DATA (on stdin) 09:40:40.283398 > 18 bytes data, server => client 09:40:40.283673 '221 bye bye baby\r\n' 09:40:40.284990 ====> Client disconnect 09:40:40.287528 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.224978 Running IPv4 version 09:40:39.225662 Listening on port 46265 09:40:39.226085 Wrote pid 86836 to log/58/server/ftp_sockdata.pid 09:40:39.226246 Received PING (on stdin) 09:40:39.227041 Received PORT (on stdin) 09:40:39.230397 ====> Client connect 09:40:39.238885 Received DATA (on stdin) 09:40:39.239019 > 17 bytes data, server => client 09:40:39.239092 'WE ROOLZ: 77973\r\n' 09:40:39.239611 Received DISC (on stdin) 09:40:39.239761 ====> Client forcibly disconnected 09:40:39.241297 Received QUIT (on stdin) 09:40:39.241530 quits 09:40:39.241989 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 244 === End of file server.cmd === Start of file valgrind244 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind244 test 0236...[FTP resume upload but denied access to remote file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind236 ../src/curl -q --output log/59/curl236.out --include --trace-ascii log/59/trace236 --trace-config all --trace-time ftp://127.0.0.1:43961/236 -T log/59/file236.txt -C - > log/59/stdout236 2> log/59/stderr236 236: protocol FAILED! There was no content at all in the file log/59/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/59/ dir after test 236 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind236 ../src/curl -q --output log/59/curl236.out --include --trace-ascii log/59/trace236 --trace-config all --trace-time ftp://127.0.0.1:43961/236 -T log/59/file236.txt -C - > log/59/stdout236 2> log/59/stderr236 === End of file commands.log === Start of file file236.txt Test data === End of file file236.txt === Start of file ftp_server.log 09:40:39.705467 ====> Client connect 09:40:39.706871 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.713285 < "USER anonymous" 09:40:39.718089 > "331 We are happy you popped in![CR][LF]" 09:40:39.720368 < "PASS ftp@example.com" 09:40:39.720700 > "230 Welcome you silly person[CR][LF]" 09:40:39.724218 < "PWD" 09:40:39.725149 > "257 "/" is current directory[CR][LF]" 09:40:39.727092 < "EPSV" 09:40:39.727353 ====> Passive DATA channel requested by client 09:40:39.727544 DATA sockfilt for passive data channel starting... 09:40:39.740506 DATA sockfilt for passive data channel started (pid 86464) 09:40:39.741718 DATA sockfilt for passive data channel listens on port 33851 09:40:39.744379 > "229 Entering Passive Mode (|||33851|)[LF]" 09:40:39.744696 Client has been notified that DATA conn will be accepted on port 33851 09:40:39.747981 Client connects to port 33851 09:40:39.748281 ====> Client established passive DATA connection on port 33851 09:40:39.749198 < "TYPE I" 09:40:39.750567 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:39.752387 < "SIZE verifiedserver" 09:40:39.752912 > "213 17[CR][LF]" 09:40:39.755312 < "RETR verifiedserver" 09:40:39.756397 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:39.757337 =====> Closing passive DATA connection... 09:40:39.757584 Server disconnects passive DATA connection 09:40:39.760433 Server disconnected passive DATA connection 09:40:39.760729 DATA sockfilt for passive data channel quits (pid 86464) 09:40:39.762887 DATA sockfilt for passive data channel quit (pid 86464) 09:40:39.763129 =====> Closed passive DATA connection 09:40:39.764057 > "226 File transfer complete[CR][LF]" 09:40:39.807612 < "QUIT" 09:40:39.808085 > "221 bye bye baby[CR][LF]" 09:40:39.812456 MAIN sockfilt said DISC 09:40:39.812863 ====> Client disconnected 09:40:39.813405 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:39.958609 ====> Client connect 09:40:39.963977 Received DATA (on stdin) 09:40:39.964173 > 160 bytes data, server => client 09:40:39.964279 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:39.964372 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:39.964609 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:39.965730 < 16 bytes data, client => server 09:40:39.965874 'USER anonymous\r\n' 09:40:39.967360 Received DATA (on stdin) 09:40:39.967572 > 33 bytes data, server => client 09:40:39.972214 '331 We are happy you popped in!\r\n' 09:40:39.974852 < 22 bytes data, client => server 09:40:39.974991 'PASS ftp@example.com\r\n' 09:40:39.975088 Received DATA (on stdin) 09:40:39.975163 > 30 bytes data, server => client 09:40:39.975246 '230 Welcome you silly person\r\n' 09:40:39.976731 < 5 bytes data, client => server 09:40:39.976928 'PWD\r\n' 09:40:39.978260 Received DATA (on stdin) 09:40:39.978384 > 30 bytes data, server => client 09:40:39.979141 '257 "/" is current directory\r\n' 09:40:39.979991 < 6 bytes data, client => server 09:40:39.980116 'EPSV\r\n' 09:40:39.998861 Received DATA (on stdin) 09:40:39.999027 > 38 bytes data, server => client 09:40:39.999183 '229 Entering Passive Mode (|||33851|)\n' 09:40:40.001249 < 8 bytes data, client => server 09:40:40.001380 'TYPE I\r\n' 09:40:40.003331 Received DATA (on stdin) 09:40:40.003569 > 33 bytes data, server => client 09:40:40.003800 '200 I modify TYPE as you wanted\r\n' 09:40:40.005325 < 21 bytes data, client => server 09:40:40.005567 'SIZE verifiedserver\r\n' 09:40:40.006928 Received DATA (on stdin) 09:40:40.007067 > 8 bytes data, server => client 09:40:40.007160 '213 17\r\n' 09:40:40.008026 < 21 bytes data, client => server 09:40:40.008184 'RETR verifiedserver\r\n' 09:40:40.009606 Received DATA (on stdin) 09:40:40.009794 > 29 bytes data, server => client 09:40:40.011610 '150 Binary junk (17 bytes).\r\n' 09:40:40.017088 Received DATA (on stdin) 09:40:40.017218 > 28 bytes data, server => client 09:40:40.017390 '226 File transfer complete\r\n' 09:40:40.057319 < 6 bytes data, client => server 09:40:40.057571 'QUIT\r\n' 09:40:40.063565 Received DATA (on stdin) 09:40:40.063738 > 18 bytes data, server => client 09:40:40.063833 '221 bye bye baby\r\n' 09:40:40.065795 ====> Client disconnect 09:40:40.067413 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.992501 Running IPv4 version 09:40:39.993036 Listening on port 33851 09:40:39.993403 Wrote pid 86464 to log/59/server/ftp_sockdata.pid 09:40:39.993665 Received PING (on stdin) 09:40:39.994762 Received PORT (on stdin) 09:40:40.000949 ====> Client connect 09:40:40.012034 Received DATA (on stdin) 09:40:40.012224 > 17 bytes data, server => client 09:40:40.012307 'WE ROOLZ: 78816\r\n' 09:40:40.012704 Received DISC (on stdin) 09:40:40.012905 ====> Client forcibly disconnected 09:40:40.014857 Received QUIT (on stdin) 09:40:40.014987 quits 09:40:40.015419 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY SIZE 550 access to this file is very much denied REPLY APPE 550 I said: access to this file is very much denied REPLY STOR 550 I said: access to this file is very much denied REPLY SIZE 500 command not understood Testnum 236 === End of file server.cmd === Start of file valgrind236 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind236 test 0249...[HTTP 304 response with "illegal" Content-Length: header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind249 ../src/curl -q --output log/63/curl249.out --include --trace-ascii log/63/trace249 --trace-config all --trace-time http://127.0.0.1:38797/249 -z "dec 12 12:00:00 1999 GMT" > log/63/stdout249 2> log/63/stderr249 249: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 249 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind249 ../src/curl -q --output log/63/curl249.out --include --trace-ascii log/63/trace249 --trace-config all --trace-time http://127.0.0.1:38797/249 -z "dec 12 12:00:00 1999 GMT" > log/63/stdout249 2> log/63/stderr249 === End of file commands.log === Start of file http_server.log 09:40:40.170913 ====> Client connect 09:40:40.171362 accept_connection 3 returned 4 09:40:40.171849 accept_connection 3 returned 0 09:40:40.172028 Read 93 bytes 09:40:40.172124 Process 93 bytes request 09:40:40.172210 Got request: GET /verifiedserver HTTP/1.1 09:40:40.17CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind251 ../src/curl -q --output log/51/curl251.out --include --trace-ascii log/51/trace251 --trace-config all --trace-time ftp://127.0.0.1:42737/ -P 127.0.0.1 > log/51/stdout251 2> log/51/stderr251 2299 Are-we-friendly question received 09:40:40.172689 Wrote request (93 bytes) input to log/63/server.input 09:40:40.172872 Identifying ourselves as friends 09:40:40.173419 Response sent (56 bytes) and written to log/63/server.response 09:40:40.176688 special request received, no persistency 09:40:40.176776 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38797... * Connected to 127.0.0.1 (127.0.0.1) port 38797 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38797 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73747 === End of file http_verify.out === Start of file server.cmd Testnum 249 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73747 === End of file server.response === Start of file valgrind249 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind249 test 0250...[FTP dir list PASV with slow response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind250 ../src/curl -q --output log/1/curl250.out --include --trace log/1/trace250 --trace-config all --trace-time ftp://127.0.0.1:33417/ > log/1/stdout250 2> log/1/stderr250 250: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 250 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind250 ../src/curl -q --output log/1/curl250.out --include --trace log/1/trace250 --trace-config all --trace-time ftp://127.0.0.1:33417/ > log/1/stdout250 2> log/1/stderr250 === End of file commands.log === Start of file ftp_server.log 09:40:39.972599 ====> Client connect 09:40:39.974403 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.976958 < "USER anonymous" 09:40:39.977999 > "331 We are happy you popped in![CR][LF]" 09:40:39.979467 < "PASS ftp@example.com" 09:40:39.981048 > "230 Welcome you silly person[CR][LF]" 09:40:39.981611 < "PWD" 09:40:39.982192 > "257 "/" is current directory[CR][LF]" 09:40:39.984288 < "EPSV" 09:40:39.984558 ====> Passive DATA channel requested by client 09:40:39.984737 DATA sockfilt for passive data channel starting... 09:40:39.996963 DATA sockfilt for passive data channel started (pid 86885) 09:40:39.998412 DATA sockfilt for passive data channel listens on port 38913 09:40:39.999094 > "229 Entering Passive Mode (|||38913|)[LF]" 09:40:39.999349 Client has been notified that DATA conn will be accepted on port 38913 09:40:40.002232 Client connects to port 38913 09:40:40.002527 ====> Client established passive DATA connection on port 38913 09:40:40.003378 < "TYPE I" 09:40:40.004866 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:40.006023 < "SIZE verifiedserver" 09:40:40.007129 > "213 17[CR][LF]" 09:40:40.008564 < "RETR verifiedserver" 09:40:40.009383 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:40.010189 =====> Closing passive DATA connection... 09:40:40.010405 Server disconnects passive DATA connection 09:40:40.012805 Server disconnected passive DATA connection 09:40:40.013084 DATA sockfilt for passive data channel quits (pid 86885) 09:40:40.015140 DATA sockfilt for passive data channel quit (pid 86885) 09:40:40.015410 =====> Closed passive DATA connection 09:40:40.016382 > "226 File transfer complete[CR][LF]" 09:40:40.054600 < "QUIT" 09:40:40.055417 > "221 bye bye baby[CR][LF]" 09:40:40.059941 MAIN sockfilt said DISC 09:40:40.060267 ====> Client disconnected 09:40:40.060723 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:39.225765 ====> Client connect 09:40:39.227689 Received DATA (on stdin) 09:40:39.227849 > 160 bytes data, server => client 09:40:39.228407 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:39.228693 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:39.228788 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:39.229562 < 16 bytes data, client => server 09:40:39.229710 'USER anonymous\r\n' 09:40:39.230995 Received DATA (on stdin) 09:40:39.231119 > 33 bytes data, server => client 09:40:39.231279 '331 We are happy you popped in!\r\n' 09:40:39.232519 < 22 bytes data, client => server 09:40:39.232665 'PASS ftp@example.com\r\n' 09:40:39.233548 Received DATA (on stdin) 09:40:39.233674 > 30 bytes data, server => client 09:40:39.233830 '230 Welcome you silly person\r\n' 09:40:39.234345 < 5 bytes data, client => server 09:40:39.234544 'PWD\r\n' 09:40:39.236184 Received DATA (on stdin) 09:40:39.236307 > 30 bytes data, server => client 09:40:39.236392 '257 "/" is current directory\r\n' 09:40:39.237238 < 6 bytes data, client => server 09:40:39.237369 'EPSV\r\n' 09:40:39.253365 Received DATA (on stdin) 09:40:39.253583 > 38 bytes data, server => client 09:40:39.253708 '229 Entering Passive Mode (|||38913|)\n' 09:40:39.255246 < 8 bytes data, client => server 09:40:39.255393 'TYPE I\r\n' 09:40:39.257513 Received DATA (on stdin) 09:40:39.257663 > 33 bytes data, server => client 09:40:39.257838 '200 I modify TYPE as you wanted\r\n' 09:40:39.258945 < 21 bytes data, client => server 09:40:39.259068 'SIZE verifiedserver\r\n' 09:40:39.260124 Received DATA (on stdin) 09:40:39.260260 > 8 bytes data, server => client 09:40:39.260517 '213 17\r\n' 09:40:39.261570 < 21 bytes data, client => server 09:40:39.261708 'RETR verifiedserver\r\n' 09:40:39.262737 Received DATA (on stdin) 09:40:39.262888 > 29 bytes data, server => client 09:40:39.264350 '150 Binary junk (17 bytes).\r\n' 09:40:39.269430 Received DATA (on stdin) 09:40:39.269636 > 28 bytes data, server => client 09:40:39.269806 '226 File transfer complete\r\n' 09:40:39.307422 < 6 bytes data, client => server 09:40:39.307647 'QUIT\r\n' 09:40:39.308770 Received DATA (on stdin) 09:40:39.308913 > 18 bytes data, server => client 09:40:39.309413 '221 bye bye baby\r\n' 09:40:39.310003 ====> Client disconnect 09:40:39.314824 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:39.249086 Running IPv4 version 09:40:39.249756 Listening on port 38913 09:40:39.250152 Wrote pid 86885 to log/1/server/ftCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind256 ../src/curl -q --include --trace-ascii log/34/trace256 --trace-config all --trace-time -x http://127.0.0.1:33117 http://127.0.0.1:33117/want/256 -C - --no-include -o log/34/fewl256.txt -U daniel:stenberg > log/34/stdout256 2> log/34/stderr256 p_sockdata.pid 09:40:39.250310 Received PING (on stdin) 09:40:39.251134 Received PORT (on stdin) 09:40:39.255674 ====> Client connect 09:40:39.264792 Received DATA (on stdin) 09:40:39.264930 > 17 bytes data, server => client 09:40:39.265020 'WE ROOLZ: 77379\r\n' 09:40:39.265279 Received DISC (on stdin) 09:40:39.265493 ====> Client forcibly disconnected 09:40:39.267087 Received QUIT (on stdin) 09:40:39.267232 quits 09:40:39.267696 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd SLOWDOWN Testnum 250 === End of file server.cmd === Start of file valgrind250 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind250 test 0239...[HTTP proxy-auth NTLM and then POST] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind239 ../src/curl -q --output log/55/curl239.out --include --trace-ascii log/55/trace239 --trace-config all --trace-time http://127.0.0.1:33071/239 --proxy http://127.0.0.1:33071 --proxy-user testuser:testpass --proxy-ntlm -d "postit" > log/55/stdout239 2> log/55/stderr239 239: protocol FAILED! There was no content at all in the file log/55/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/55/ dir after test 239 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind239 ../src/curl -q --output log/55/curl239.out --include --trace-ascii log/55/trace239 --trace-config all --trace-time http://127.0.0.1:33071/239 --proxy http://127.0.0.1:33071 --proxy-user testuser:testpass --proxy-ntlm -d "postit" > log/55/stdout239 2> log/55/stderr239 === End of file commands.log === Start of file http_server.log 09:40:40.068865 ====> Client connect 09:40:40.069561 accept_connection 3 returned 4 09:40:40.069779 accept_connection 3 returned 0 09:40:40.069937 Read 93 bytes 09:40:40.070048 Process 93 bytes request 09:40:40.070152 Got request: GET /verifiedserver HTTP/1.1 09:40:40.070246 Are-we-friendly question received 09:40:40.070590 Wrote request (93 bytes) input to log/55/server.input 09:40:40.070802 Identifying ourselves as friends 09:40:40.071715 Response sent (56 bytes) and written to log/55/server.response 09:40:40.071853 special request received, no persistency 09:40:40.071937 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33071... * Connected to 127.0.0.1 (127.0.0.1) port 33071 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33071 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73757 === End of file http_verify.out === Start of file server.cmd Testnum 239 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73757 === End of file server.response === Start of file valgrind239 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind239 test 0260...[HTTP GET URL without slash but with question mark] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind260 ../src/curl -q --output log/64/curl260.out --include --trace-ascii log/64/trace260 --trace-config all --trace-time "http://127.0.0.1:33073?260" > log/64/stdout260 2> log/64/stderr260 260: protocol FAILED! There was no content at all in the file log/64/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/64/ dir after test 260 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind260 ../src/curl -q --output log/64/curl260.out --include --trace-ascii log/64/trace260 --trace-config all --trace-time "http://127.0.0.1:33073?260" > log/64/stdout260 2> log/64/stderr260 === End of file commands.log === Start of file http_server.log 09:40:40.479888 ====> Client connect 09:40:40.480200 accept_connection 3 returned 4 09:40:40.480628 accept_connection 3 returned 0 09:40:40.480796 Read 93 bytes 09:40:40.480975 Process 93 bytes request 09:40:40.481156 Got request: GET /verifiedserver HTTP/1.1 09:40:40.481279 Are-we-friendly question received 09:40:40.481844 Wrote request (93 bytes) input to log/64/server.input 09:40:40.482056 Identifying ourselves as friends 09:40:40.486828 Response sent (56 bytes) and written to log/64/server.response 09:40:40.487297 special request received, no persistency 09:40:40.487426 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33073... * Connected to 127.0.0.1 (127.0.0.1) port 33073 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33073 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73748 === End of file http_verify.out === Start of file server.cmd Testnum 260 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73748 === End of file server.response === Start of file valgrind260 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind260 test 0256...[HTTP resume request over proxy with auth without server supporting it] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind256 ../src/curl -q --include --trace-ascii log/34/trace256 --trace-config all --trace-time -x http://127.0.0.1:33117 http://127.0.0.1:33117/want/256 -C - --no-include -o log/34/fewl256.txt -U daniel:stenberg > log/34/stdout256 2> log/34/stderr256 256: protocol FAILED! There was no content at all in the file log/34/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/34/ dir after test 256 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind256 ../src/curl -q --include --trace-ascii log/34/trace256 --trace-config all --trace-time -x http://127.0.0.1:33117 http://127.0.0.1:33117/want/256 -C - --no-include -o log/34/fewl256.txt -U daniel:stenberg > log/34/stdout256 2> log/34/stderr256 === End of file commands.log === Start of file fewl256.txt This text is here to simulate a partly downloaded file to resume download on. === End of file fewl256.txt === Start of file http_server.log 09:40:40.387883 ====> Client connect 09:40:40.388220 accept_connection 3 returned 4 09:40:40.388388 accept_connection 3 returned 0 09:40:40.388670 Read 93 bytes 09:40:40.388779 Process 93 bytes request 09:40:40.388858 Got request: GET /verifiedserver HTTP/1.1 09:40:40.388927 Are-we-friendly question received 09:40:40.389162 Wrote request (93 bytes) input to log/34/server.input 09:40:40.389345 Identifying ourselves as friends 09:40:40.392586 Response sent (56 bytes) and written to log/34/server.response 09:40:40.392721 special request received, no persistency 09:40:40.392796 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33117... * Connected to 127.0.0.1 (127.0.0.1) port 33117 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33117 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73777 === End of file http_verify.out === Start of file server.cmd Testnum 256 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73777 === End of file server.response === Start of file valgrind256 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind256 test 0251...[FTP dir list, PORT with specified IP and slow response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind251 ../src/curl -q --output log/51/curl251.out --include --trace-ascii log/51/trace251 --trace-config all --trace-time ftp://127.0.0.1:42737/ -P 127.0.0.1 > log/51/stdout251 2> log/51/stderr251 251: protocol FAILED! There was no content at all in the file log/51/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/51/ dir after test 251 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind251 ../src/curl -q --output log/51/curl251.out --include --trace-ascii log/51/trace251 --trace-config all --trace-time ftp://127.0.0.1:42737/ -P 127.0.0.1 > log/51/stdout251 2> log/51/stderr251 === End of file commands.log === Start of file ftp_server.log 09:40:39.975883 ====> Client connect 09:40:39.979273 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:39.983357 < "USER anonymous" 09:40:39.984705 > "331 We are happy you popped in![CR][LF]" 09:40:39.986376 < "PASS ftp@example.com" 09:40:39.987055 > "230 Welcome you silly person[CR][LF]" 09:40:39.989531 < "PWD" 09:40:39.989977 > "257 "/" is current directory[CR][LF]" 09:40:39.992617 < "EPSV" 09:40:39.992968 ====> Passive DATA channel requested by client 09:40:39.993154 DATA sockfilt for passive data channel starting... 09:40:40.022897 DATA sockfilt for passive data channel started (pid 86897) 09:40:40.024048 DATA sockfilt for passive data channel listens on port 35505 09:40:40.026059 > "229 Entering Passive Mode (|||35505|)[LF]" 09:40:40.026487 Client has been notified that DATA conn will be accepted on port 35505 09:40:40.030060 Client connects to port 35505 09:40:40.030427 ====> Client established passive DATA connection on port 35505 09:40:40.031370 < "TYPE I" 09:40:40.033958 > "200 I modify TYPE as you wanted[CR][LF]" 09:40CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind258 ../src/curl -q --output log/18/curl258.out --include --trace-ascii log/18/trace258 --trace-config all --trace-time -x http://127.0.0.1:41285 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/18/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/18/stdout258 2> log/18/stderr258 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind269 ../src/curl -q --output log/31/curl269.out --include --trace-ascii log/31/trace269 --trace-config all --trace-time http://127.0.0.1:45557/269 --ignore-content-length > log/31/stdout269 2> log/31/stderr269 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind264 ../src/curl -q --output log/3/curl264.out --include --trace-ascii log/3/trace264 --trace-config all --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:42107 > log/3/stdout264 2> log/3/stderr264 :40.036658 < "SIZE verifiedserver" 09:40:40.037690 > "213 17[CR][LF]" 09:40:40.040480 < "RETR verifiedserver" 09:40:40.041140 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:40.043517 =====> Closing passive DATA connection... 09:40:40.044067 Server disconnects passive DATA connection 09:40:40.046919 Server disconnected passive DATA connection 09:40:40.047228 DATA sockfilt for passive data channel quits (pid 86897) 09:40:40.049887 DATA sockfilt for passive data channel quit (pid 86897) 09:40:40.050147 =====> Closed passive DATA connection 09:40:40.050503 > "226 File transfer complete[CR][LF]" 09:40:40.084956 < "QUIT" 09:40:40.086213 > "221 bye bye baby[CR][LF]" 09:40:40.090353 MAIN sockfilt said DISC 09:40:40.091309 ====> Client disconnected 09:40:40.091961 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:40.228898 ====> Client connect 09:40:40.233298 Received DATA (on stdin) 09:40:40.233550 > 160 bytes data, server => client 09:40:40.233677 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:40.233763 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:40.233837 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:40.235603 < 16 bytes data, client => server 09:40:40.235764 'USER anonymous\r\n' 09:40:40.237717 Received DATA (on stdin) 09:40:40.237868 > 33 bytes data, server => client 09:40:40.238028 '331 We are happy you popped in!\r\n' 09:40:40.239513 < 22 bytes data, client => server 09:40:40.239661 'PASS ftp@example.com\r\n' 09:40:40.241042 Received DATA (on stdin) 09:40:40.241166 > 30 bytes data, server => client 09:40:40.241251 '230 Welcome you silly person\r\n' 09:40:40.242053 < 5 bytes data, client => server 09:40:40.242188 'PWD\r\n' 09:40:40.244310 Received DATA (on stdin) 09:40:40.244564 > 30 bytes data, server => client 09:40:40.244689 '257 "/" is current directory\r\n' 09:40:40.245415 < 6 bytes data, client => server 09:40:40.245731 'EPSV\r\n' 09:40:40.280556 Received DATA (on stdin) 09:40:40.280744 > 38 bytes data, server => client 09:40:40.280848 '229 Entering Passive Mode (|||35505|)\n' 09:40:40.283067 < 8 bytes data, client => server 09:40:40.283202 'TYPE I\r\n' 09:40:40.288011 Received DATA (on stdin) 09:40:40.288198 > 33 bytes data, server => client 09:40:40.288313 '200 I modify TYPE as you wanted\r\n' 09:40:40.289038 < 21 bytes data, client => server 09:40:40.289195 'SIZE verifiedserver\r\n' 09:40:40.291856 Received DATA (on stdin) 09:40:40.292061 > 8 bytes data, server => client 09:40:40.292181 '213 17\r\n' 09:40:40.293153 < 21 bytes data, client => server 09:40:40.293311 'RETR verifiedserver\r\n' 09:40:40.295210 Received DATA (on stdin) 09:40:40.295349 > 29 bytes data, server => client 09:40:40.295538 '150 Binary junk (17 bytes).\r\n' 09:40:40.304604 Received DATA (on stdin) 09:40:40.304756 > 28 bytes data, server => client 09:40:40.304850 '226 File transfer complete\r\n' 09:40:40.337630 < 6 bytes data, client => server 09:40:40.337815 'QUIT\r\n' 09:40:40.339053 Received DATA (on stdin) 09:40:40.339199 > 18 bytes data, server => client 09:40:40.339389 '221 bye bye baby\r\n' 09:40:40.343704 ====> Client disconnect 09:40:40.344373 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:40.274659 Running IPv4 version 09:40:40.275258 Listening on port 35505 09:40:40.275790 Wrote pid 86897 to log/51/server/ftp_sockdata.pid 09:40:40.276018 Received PING (on stdin) 09:40:40.277101 Received PORT (on stdin) 09:40:40.282744 ====> Client connect 09:40:40.295929 Received DATA (on stdin) 09:40:40.296170 > 17 bytes data, server => client 09:40:40.298408 'WE ROOLZ: 77543\r\n' 09:40:40.298895 Received DISC (on stdin) 09:40:40.299292 ====> Client forcibly disconnected 09:40:40.301226 Received QUIT (on stdin) 09:40:40.301361 quits 09:40:40.301855 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd SLOWDOWN Testnum 251 === End of file server.cmd === Start of file valgrind251 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind251 test 0258...[HTTP POST multipart without Expect: header using proxy anyauth (Digest)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind258 ../src/curl -q --output log/18/curl258.out --include --trace-ascii log/18/trace258 --trace-config all --trace-time -x http://127.0.0.1:41285 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/18/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/18/stdout258 2> log/18/stderr258 258: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 258 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind258 ../src/curl -q --output log/18/curl258.out --include --trace-ascii log/18/trace258 --trace-config all --trace-time -x http://127.0.0.1:41285 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/18/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/18/stdout258 2> log/18/stderr258 === End of file commands.log === Start of file http_server.log 09:40:40.362831 ====> Client connect 09:40:40.363135 accept_connection 3 returned 4 09:40:40.363306 accept_connection 3 returned 0 09:40:40.363574 Read 93 bytes 09:40:40.363712 Process 93 bytes request 09:40:40.363811 Got request: GET /verifiedserver HTTP/1.1 09:40:40.363885 Are-we-friendly question received 09:40:40.364109 Wrote request (93 bytes) input to log/18/server.input 09:40:40.364308 Identifying ourselves as friends 09:40:40.365149 Response sent (56 bytes) and written to log/18/server.response 09:40:40.365262 special request received, no persistency 09:40:40.365336 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41285... * Connected to 127.0.0.1 (127.0.0.1) port 41285 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41285 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73790 === End of file http_verify.out === Start of file server.cmd Testnum 258 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73790 =CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind240 ../src/curl -q --output log/46/curl240.out --include --trace-ascii log/46/trace240 --trace-config all --trace-time -g "http://[::1]:44225/240" > log/46/stdout240 2> log/46/stderr240 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind257 ../src/curl -q --output log/23/curl257.out --include --trace-ascii log/23/trace257 --trace-config all --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:42467 --netrc-optional --netrc-file log/23/netrc257 > log/23/stdout257 2> log/23/stderr257 == End of file server.response === Start of file test258.txt foo- This is a moo- bar === End of file test258.txt === Start of file valgrind258 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind258 test 0264...[HTTP with proxy string including http:// and user+password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind264 ../src/curl -q --output log/3/curl264.out --include --trace-ascii log/3/trace264 --trace-config all --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:42107 > log/3/stdout264 2> log/3/stderr264 264: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 264 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind264 ../src/curl -q --output log/3/curl264.out --include --trace-ascii log/3/trace264 --trace-config all --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:42107 > log/3/stdout264 2> log/3/stderr264 === End of file commands.log === Start of file http_server.log 09:40:40.655148 ====> Client connect 09:40:40.655689 accept_connection 3 returned 4 09:40:40.655904 accept_connection 3 returned 0 09:40:40.656058 Read 93 bytes 09:40:40.656183 Process 93 bytes request 09:40:40.656300 Got request: GET /verifiedserver HTTP/1.1 09:40:40.656401 Are-we-friendly question received 09:40:40.656785 Wrote request (93 bytes) input to log/3/server.input 09:40:40.656994 Identifying ourselves as friends 09:40:40.658165 Response sent (56 bytes) and written to log/3/server.response 09:40:40.658309 special request received, no persistency 09:40:40.658391 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42107... * Connected to 127.0.0.1 (127.0.0.1) port 42107 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42107 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73802 === End of file http_verify.out === Start of file server.cmd Testnum 264 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73802 === End of file server.response === Start of file valgrind264 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind264 test 0269...[HTTP --ignore-content-length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind269 ../src/curl -q --output log/31/curl269.out --include --trace-ascii log/31/trace269 --trace-config all --trace-time http://127.0.0.1:45557/269 --ignore-content-length > log/31/stdout269 2> log/31/stderr269 269: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 269 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind269 ../src/curl -q --output log/31/curl269.out --include --trace-ascii log/31/trace269 --trace-config all --trace-time http://127.0.0.1:45557/269 --ignore-content-length > log/31/stdout269 2> log/31/stderr269 === End of file commands.log === Start of file http_server.log 09:40:40.834950 ====> Client connect 09:40:40.835419 accept_connection 3 returned 4 09:40:40.836356 accept_connection 3 returned 0 09:40:40.836627 Read 93 bytes 09:40:40.836796 Process 93 bytes request 09:40:40.836978 Got request: GET /verifiedserver HTTP/1.1 09:40:40.837066 Are-we-friendly question received 09:40:40.837373 Wrote request (93 bytes) input to log/31/server.input 09:40:40.837798 Identifying ourselves as friends 09:40:40.840205 Response sent (56 bytes) and written to log/31/server.response 09:40:40.840350 special request received, no persistency 09:40:40.840428 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45557... * Connected to 127.0.0.1 (127.0.0.1) port 45557 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45557 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73776 === End of file http_verify.out === Start of file server.cmd Testnum 269 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73776 === End of file server.response === Start of file valgrind269 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind:CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind266 ../src/curl -q --output log/40/curl266.out --include --trace-ascii log/40/trace266 --trace-config all --trace-time http://127.0.0.1:42139/266 -D log/40/heads266 > log/40/stdout266 2> log/40/stderr266 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind261 ../src/curl -q --output log/60/curl261.out --include --trace-ascii log/60/trace261 --trace-config all --trace-time ftp://127.0.0.1:41385/261 > log/60/stdout261 2> log/60/stderr261 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind262 ../src/curl -q --output log/62/curl262.out --include --trace-ascii log/62/trace262 --trace-config all --trace-time http://127.0.0.1:38899/262 > log/62/stdout262 2> log/62/stderr262 A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind269 test 0257...[HTTP Location: following with --netrc-optional] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind257 ../src/curl -q --output log/23/curl257.out --include --trace-ascii log/23/trace257 --trace-config all --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:42467 --netrc-optional --netrc-file log/23/netrc257 > log/23/stdout257 2> log/23/stderr257 257: protocol FAILED! There was no content at all in the file log/23/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/23/ dir after test 257 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind257 ../src/curl -q --output log/23/curl257.out --include --trace-ascii log/23/trace257 --trace-config all --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:42467 --netrc-optional --netrc-file log/23/netrc257 > log/23/stdout257 2> log/23/stderr257 === End of file commands.log === Start of file http_server.log 09:40:40.373998 ====> Client connect 09:40:40.374772 accept_connection 3 returned 4 09:40:40.374972 accept_connection 3 returned 0 09:40:40.375112 Read 93 bytes 09:40:40.375202 Process 93 bytes request 09:40:40.375286 Got request: GET /verifiedserver HTTP/1.1 09:40:40.375364 Are-we-friendly question received 09:40:40.375704 Wrote request (93 bytes) input to log/23/server.input 09:40:40.375902 Identifying ourselves as friends 09:40:40.376835 Response sent (56 bytes) and written to log/23/server.response 09:40:40.376966 special request received, no persistency 09:40:40.377039 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42467... * Connected to 127.0.0.1 (127.0.0.1) port 42467 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42467 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73788 === End of file http_verify.out === Start of file netrc257 machine supersite.com login user1 password passwd1 machine anotherone.com login user2 password passwd2 === End of file netrc257 === Start of file server.cmd Testnum 257 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73788 === End of file server.response === Start of file valgrind257 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind257 test 0266...[HTTP GET with chunked Transfer-Encoding and chunked trailer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind266 ../src/curl -q --output log/40/curl266.out --include --trace-ascii log/40/trace266 --trace-config all --trace-time http://127.0.0.1:42139/266 -D log/40/heads266 > log/40/stdout266 2> log/40/stderr266 266: protocol FAILED! There was no content at all in the file log/40/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/40/ dir after test 266 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind266 ../src/curl -q --output log/40/curl266.out --include --trace-ascii log/40/trace266 --trace-config all --trace-time http://127.0.0.1:42139/266 -D log/40/heads266 > log/40/stdout266 2> log/40/stderr266 === End of file commands.log === Start of file http_server.log 09:40:40.706287 ====> Client connect 09:40:40.706831 accept_connection 3 returned 4 09:40:40.707028 accept_connection 3 returned 0 09:40:40.707156 Read 93 bytes 09:40:40.707240 Process 93 bytes request 09:40:40.707313 Got request: GET /verifiedserver HTTP/1.1 09:40:40.707385 Are-we-friendly question received 09:40:40.707703 Wrote request (93 bytes) input to log/40/server.input 09:40:40.707898 Identifying ourselves as friends 09:40:40.708796 Response sent (56 bytes) and written to log/40/server.response 09:40:40.708909 special request received, no persistency 09:40:40.708973 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42139... * Connected to 127.0.0.1 (127.0.0.1) port 42139 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42139 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73767 === End of file http_verify.out === Start of file server.cmd writedelay: 10 Testnum 266 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73767 === End of file server.response === Start of file valgrind266 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind268 ../src/curl -q --output log/19/curl268.out --include --trace-ascii log/19/trace268 --trace-config all --trace-time http://127.0.0.1:35697/268 --variable hello@log/19/junk --expand-data {{hello:json}} > log/19/stdout268 2> log/19/stderr268 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind242 ../src/curl -q --output log/50/curl242.out --include --trace-ascii log/50/trace242 --trace-config all --trace-time -g "http://foobar:barfoo@[::1]:33399/242" > log/50/stdout242 2> log/50/stderr242 grind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind266 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/46/server/http_ipv6_server.pid" --logfile "log/46/http_ipv6_server.log" --logdir "log/46" --portfile log/46/server/http_ipv6_server.port --config log/46/server.cmd --ipv6 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP-IPv6 server is on PID 86139 port 44225 * pid http-ipv6 => 86139 86139 test 0240...[HTTP-IPv6 GET] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind240 ../src/curl -q --output log/46/curl240.out --include --trace-ascii log/46/trace240 --trace-config all --trace-time -g "http://[::1]:44225/240" > log/46/stdout240 2> log/46/stderr240 240: protocol FAILED! There was no content at all in the file log/46/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/46/ dir after test 240 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind240 ../src/curl -q --output log/46/curl240.out --include --trace-ascii log/46/trace240 --trace-config all --trace-time -g "http://[::1]:44225/240" > log/46/stdout240 2> log/46/stderr240 === End of file commands.log === Start of file http_ipv6_server.log 09:40:39.037355 Running HTTP IPv6 version on port 44225 09:40:39.038212 Wrote pid 86139 to log/46/server/http_ipv6_server.pid 09:40:39.038661 Wrote port 44225 to log/46/server/http_ipv6_server.port === End of file http_ipv6_server.log === Start of file server.cmd Testnum 240 === End of file server.cmd === Start of file valgrind240 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind240 test 0268...[JSON encoding of Unicode string] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind268 ../src/curl -q --output log/19/curl268.out --include --trace-ascii log/19/trace268 --trace-config all --trace-time http://127.0.0.1:35697/268 --variable hello@log/19/junk --expand-data {{hello:json}} > log/19/stdout268 2> log/19/stderr268 268: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 268 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind268 ../src/curl -q --output log/19/curl268.out --include --trace-ascii log/19/trace268 --trace-config all --trace-time http://127.0.0.1:35697/268 --variable hello@log/19/junk --expand-data {{hello:json}} > log/19/stdout268 2> log/19/stderr268 === End of file commands.log === Start of file http_server.log 09:40:40.865001 ====> Client connect 09:40:40.865383 accept_connection 3 returned 4 09:40:40.865659 accept_connection 3 returned 0 09:40:40.865802 Read 93 bytes 09:40:40.865911 Process 93 bytes request 09:40:40.866005 Got request: GET /verifiedserver HTTP/1.1 09:40:40.866097 Are-we-friendly question received 09:40:40.866354 Wrote request (93 bytes) input to log/19/server.input 09:40:40.866655 Identifying ourselves as friends 09:40:40.871731 Response sent (56 bytes) and written to log/19/server.response 09:40:40.871873 special request received, no persistency 09:40:40.871986 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35697... * Connected to 127.0.0.1 (127.0.0.1) port 35697 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35697 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73791 === End of file http_verify.out === Start of file junk “ === End of file junk === Start of file server.cmd Testnum 268 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73791 === End of file server.response === Start of file valgrind268 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind268 test 0261...[FTP RETR with 226 response code to TYPE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind261 ../src/curl -q --output log/60/curl261.out --include --trace-ascii log/60/trace261 --trace-config all --trace-time ftp://127.0.0.1:41385/261 > log/60/stdout261 2> log/60/stderr261 261: protocol FAILED! There was no content at all in the file log/60/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/60/ dir after test 261 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind261 ../src/curl -q --output log/60/curl261.out --include --trace-ascii log/60/trace261 --trace-config all --trace-time ftp://127.0.0.1:41385/261 > log/60/stdout261 2> log/60/stderr261 === End of file commands.log === Start of file ftp_server.log 09:40:40.340393 ====> Client connect 09:40:40.343388 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:40.345377 < "USER anonymous" 09:40:40.347315 > "331 We are happy you popped in![CR][LF]" 09:40:40.348106 < "PASS ftp@example.com" 09:40:40.348474 > "230 Welcome you silly person[CR][LF]" 09:40:40.350530 < "PWD" 09:40:40.351258 > "257 "/" is current directory[CR][LF]" 09:40:40.415350 < "EPSV" 09:40:40.415694 ====> Passive DATA channel requested by client 09:40:40.415990 DATA sockfilt for passive data channel starting... 09:40:40.461737 DATA sockfilt for passive data channel started (pid 87635) 09:40:40.465190 DATA sockfilt for passive data channel listens on port 34035 09:40:40.465818 > "229 Entering Passive Mode (|||34035|)[LF]" 09:40:40.466050 Client has been notified that DATA conn will be accepted on port 34035 09:40:40.471408 Client connects to port 34035 09:40:40.471719 ====> Client established passive DATA connection on port 34035 09:40:40.472636 < "TYPE I" 09:40:40.473155 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:40.477204 < "SIZE verifiedserver" 09:40:40.480121 > "213 17[CR][LF]" 09:40:40.482406 < "RETR verifiedserver" 09:40:40.485906 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:40.486825 =====> Closing passive DATA connection... 09:40:40.487076 Server disconnects passive DATA connection 09:40:40.490088 Server disconnected passive DATA connection 09:40:40.490355 DATA sockfilt for passive data channel quits (pid 87635) 09:40:40.499971 DATA sockfilt for passive data channel quit (pid 87635) 09:40:40.500230 =====> Closed passive DATA connection 09:40:40.500553 > "226 File transfer complete[CR][LF]" 09:40:40.529971 < "QUIT" 09:40:40.530482 > "221 bye bye baby[CR][LF]" 09:40:40.540249 MAIN sockfilt said DISC 09:40:40.540713 ====> Client disconnected 09:40:40.541711 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:40.593228 ====> Client connect 09:40:40.595503 Received DATA (on stdin) 09:40:40.595671 > 160 bytes data, server => client 09:40:40.595876 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:40.596013 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:40.596100 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:40.597732 < 16 bytes data, client => server 09:40:40.597879 'USER anonymous\r\n' 09:40:40.599557 Received DATA (on stdin) 09:40:40.599716 > 33 bytes data, server => client 09:40:40.599909 '331 We are happy you popped in!\r\n' 09:40:40.600580 < 22 bytes data, client => server 09:40:40.600727 'PASS ftp@example.com\r\n' 09:40:40.602536 Received DATA (on stdin) 09:40:40.602682 > 30 bytes data, server => client 09:40:40.602770 '230 Welcome you silly person\r\n' 09:40:40.603360 < 5 bytes data, client => server 09:40:40.603573 'PWD\r\n' 09:40:40.605738 Received DATA (on stdin) 09:40:40.605997 > 30 bytes data, server => client 09:40:40.606103 '257 "/" is current directory\r\n' 09:40:40.647999 < 6 bytes data, client => server 09:40:40.648200 'EPSV\r\n' 09:40:40.720941 Received DATA (on stdin) 09:40:40.721118 > 38 bytes data, server => client 09:40:40.721209 '229 Entering Passive Mode (|||34035|)\n' 09:40:40.722648 < 8 bytes data, client => server 09:40:40.722802 'TYPE I\r\n' 09:40:40.728574 Received DATA (on stdin) 09:40:40.728726 > 33 bytes data, server => client 09:40:40.728878 '200 I modify TYPE as you wanted\r\n' 09:40:40.730068 < 21 bytes data, client => server 09:40:40.730220 'SIZE verifiedserver\r\n' 09:40:40.732668 Received DATA (on stdin) 09:40:40.732833 > 8 bytes data, server => client 09:40:40.733009 '213 17\r\n' 09:40:40.734203 < 21 bytes data, client => server 09:40:40.734336 'RETR verifiedserver\r\n' 09:40:40.740999 Received DATA (on stdin) 09:40:40.741140 > 29 bytes data, server => client 09:40:40.741227 '150 Binary junk (17 bytes).\r\n' 09:40:40.755620 Received DATA (on stdin) 09:40:40.755786 > 28 bytes data, server => client 09:40:40.755867 '226 File transfer complete\r\n' 09:40:40.782376 < 6 bytes data, client => server 09:40:40.782619 'QUIT\r\n' 09:40:40.784637 Received DATA (on stdin) 09:40:40.784790 > 18 bytes data, server => client 09:40:40.784884 '221 bye bye baby\r\n' 09:40:40.789587 ====> Client disconnect 09:40:40.795913 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:40.713903 Running IPv4 version 09:40:40.714392 Listening on port 34035 09:40:40.714911 Wrote pid 87635 to log/60/server/ftp_sockdata.pid 09:40:40.715170 Received PING (on stdin) 09:40:40.715931 Received PORT (on stdin) 09:40:40.724803 ====> Client connect 09:40:40.741611 Received DATA (on stdin) 09:40:40.741764 > 17 bytes data, server => client 09:40:40.741847 'WE ROOLZ: 78622\r\n' 09:40:40.742122 Received DISC (on stdin) 09:40:40.742408 ====> Client forcibly disconnected 09:40:40.745100 Received QUIT (on stdin) 09:40:40.745278 quits 09:40:40.745807 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY TYPE 226 Kind of on the positive side Testnum 261 === End of file server.cmd === Start of file valgrind261 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind261 test 0262...[Reject HTTP response with binary zero in header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind265 ../src/curl -q --output log/41/curl265.out --include --trace-ascii log/41/trace265 --trace-config all --trace-time http://test.remote.example.com.265:35093/path/2650002 --proxy http://127.0.0.1:35093 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/41/stdout265 2> log/41/stderr265 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind252 ../src/curl -q --output log/48/curl252.out --include --trace-ascii log/48/trace252 --trace-config all --trace-time -g "ftp://[::1]:32917/" > log/48/stdout252 2> log/48/stderr252 num-callers=16 --log-file=log/62/valgrind262 ../src/curl -q --output log/62/curl262.out --include --trace-ascii log/62/trace262 --trace-config all --trace-time http://127.0.0.1:38899/262 > log/62/stdout262 2> log/62/stderr262 262: protocol FAILED! There was no content at all in the file log/62/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/62/ dir after test 262 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind262 ../src/curl -q --output log/62/curl262.out --include --trace-ascii log/62/trace262 --trace-config all --trace-time http://127.0.0.1:38899/262 > log/62/stdout262 2> log/62/stderr262 === End of file commands.log === Start of file http_server.log 09:40:40.669832 ====> Client connect 09:40:40.670119 accept_connection 3 returned 4 09:40:40.670282 accept_connection 3 returned 0 09:40:40.673283 Read 93 bytes 09:40:40.673526 Process 93 bytes request 09:40:40.673645 Got request: GET /verifiedserver HTTP/1.1 09:40:40.673761 Are-we-friendly question received 09:40:40.674017 Wrote request (93 bytes) input to log/62/server.input 09:40:40.674199 Identifying ourselves as friends 09:40:40.674977 Response sent (56 bytes) and written to log/62/server.response 09:40:40.675085 special request received, no persistency 09:40:40.675166 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38899... * Connected to 127.0.0.1 (127.0.0.1) port 38899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73749 === End of file http_verify.out === Start of file server.cmd Testnum 262 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73749 === End of file server.response === Start of file valgrind262 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind262 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/50/server/http_ipv6_server.pid" --logfile "log/50/http_ipv6_server.log" --logdir "log/50" --portfile log/50/server/http_ipv6_server.port --config log/50/server.cmd --ipv6 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP-IPv6 server is on PID 86175 port 33399 * pid http-ipv6 => 86175 86175 test 0242...[HTTP-IPv6 GET with username+password in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind242 ../src/curl -q --output log/50/curl242.out --include --trace-ascii log/50/trace242 --trace-config all --trace-time -g "http://foobar:barfoo@[::1]:33399/242" > log/50/stdout242 2> log/50/stderr242 242: protocol FAILED! There was no content at all in the file log/50/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/50/ dir after test 242 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind242 ../src/curl -q --output log/50/curl242.out --include --trace-ascii log/50/trace242 --trace-config all --trace-time -g "http://foobar:barfoo@[::1]:33399/242" > log/50/stdout242 2> log/50/stderr242 === End of file commands.log === Start of file http_ipv6_server.log 09:40:39.194338 Running HTTP IPv6 version on port 33399 09:40:39.195179 Wrote pid 86175 to log/50/server/http_ipv6_server.pid 09:40:39.195740 Wrote port 33399 to log/50/server/http_ipv6_server.port === End of file http_ipv6_server.log === Start of file server.cmd Testnum 242 === End of file server.cmd === Start of file valgrind242 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind242 test 0300 SKIPPED: no stunnel test 0301 SKIPPED: no stunnel test 0302 SKIPPED: no stunnel test 0265...[HTTP proxy CONNECT auth NTLM and then POST, response-body in the 407] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind265 ../src/curl -q --output log/41/curl265.out --include --trace-ascii log/41/trace265 --trace-config all --trace-time http://test.remote.example.com.265:35093/path/2650002 --proxy http://127.0.0.1:35093 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/41/stdout265 2> log/41/stderr265 265: protocol FAILED! There was no content at all in the file log/41/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/41/ dir after test 265 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind265 ../src/curl -q --output log/41/curl265.out --include --trace-ascii log/41/trace265 --trace-config all --trace-time http://test.remote.example.com.265:35093/path/CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind253 ../src/curl -q --output log/44/curl253.out --include --trace-ascii log/44/trace253 --trace-config all --trace-time -g "ftp://[::1]:42753/" -P - > log/44/stdout253 2> log/44/stderr253 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind259 ../src/curl -q --output log/52/curl259.out --include --trace-ascii log/52/trace259 --trace-config all --trace-time -x http://127.0.0.1:40089 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/52/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/52/stdout259 2> log/52/stderr259 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind255 ../src/curl -q --output log/57/curl255.out --include --trace-ascii log/57/trace255 --trace-config all --trace-time -g "ftp://[::1]:35147/" -P - --disable-eprt > log/57/stdout255 2> log/57/stderr255 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind248 ../src/curl -q --output log/17/curl248.out --include --trace-ascii log/17/trace248 --trace-config all --trace-time ftp://127.0.0.1:33875/248 -T log/17/test248.txt -z "apr 1 2005 08:00:00" > log/17/stdout248 2> log/17/stderr248 2650002 --proxy http://127.0.0.1:35093 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/41/stdout265 2> log/41/stderr265 === End of file commands.log === Start of file http_server.log 09:40:40.682371 ====> Client connect 09:40:40.682970 accept_connection 3 returned 4 09:40:40.683184 accept_connection 3 returned 0 09:40:40.686814 Read 93 bytes 09:40:40.687007 Process 93 bytes request 09:40:40.687153 Got request: GET /verifiedserver HTTP/1.1 09:40:40.687320 Are-we-friendly question received 09:40:40.687790 Wrote request (93 bytes) input to log/41/server.input 09:40:40.688064 Identifying ourselves as friends 09:40:40.691238 Response sent (56 bytes) and written to log/41/server.response 09:40:40.691512 special request received, no persistency 09:40:40.691647 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35093... * Connected to 127.0.0.1 (127.0.0.1) port 35093 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35093 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73770 === End of file http_verify.out === Start of file server.cmd Testnum 265 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73770 === End of file server.response === Start of file valgrind265 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind265 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/44/server/ftp_ipv6_server.pid" --logfile "log/44/ftp_ipv6_server.log" --logdir "log/44" --portfile "log/44/server/ftp_ipv6_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]" PINGPONG runs on port 42753 (log/44/server/ftp_ipv6_server.port) RUN: FTP-IPv6 server is PID 86560 port 42753 * pid ftp-ipv6 => 86560 86560 test 0253...[FTP IPv6 dir list with EPRT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind253 ../src/curl -q --output log/44/curl253.out --include --trace-ascii log/44/trace253 --trace-config all --trace-time -g "ftp://[::1]:42753/" -P - > log/44/stdout253 2> log/44/stderr253 253: protocol FAILED! There was no content at all in the file log/44/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/44/ dir after test 253 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind253 ../src/curl -q --output log/44/curl253.out --include --trace-ascii log/44/trace253 --trace-config all --trace-time -g "ftp://[::1]:42753/" -P - > log/44/stdout253 2> log/44/stderr253 === End of file commands.log === Start of file ftp_ipv6_server.log 09:40:40.411845 FTP server listens on port IPv6/42753 09:40:40.412849 logged pid 86560 in log/44/server/ftp_ipv6_server.pid 09:40:40.413147 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 09:40:40.663067 Running IPv6 version 09:40:40.663719 Listening on port 42753 09:40:40.664247 Wrote pid 87592 to log/44/server/ftp_ipv6_sockctrl.pid 09:40:40.664727 Wrote port 42753 to log/44/server/ftp_ipv6_server.port 09:40:40.664902 Received PING (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file server.cmd Testnum 253 === End of file server.cmd === Start of file valgrind253 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind253 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/48/server/ftp_ipv6_server.pid" --logfile "log/48/ftp_ipv6_server.log" --logdir "log/48" --portfile "log/48/server/ftp_ipv6_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]" PINGPONG runs on port 32917 (log/48/server/ftp_ipv6_server.port) RUN: FTP-IPv6 server is PID 86581 port 32917 * pid ftp-ipv6 => 86581 86581 test 0252...[FTP IPv6 dir list PASV] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind252 ../src/curl -q --output log/48/curl252.out --include --trace-ascii log/48/trace252 --trace-config all --trace-time -g "ftp://[::1]:32917/" > log/48/stdout252 2> log/48/stderr252 252: protocol FAILED! There was no content at all in the file log/48/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/48/ dir after test 252 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind252 ../src/curl -q --output log/48/curl252.out --include --trace-ascii log/48/trace252 --trace-config all --trace-time -g "ftp://[::1]:32917/" > log/48/stdout252 2> log/48/stderr252 === End of file commands.log === Start of file ftp_ipv6_server.log 09:40:40.441543 FTP server listens on port IPv6/32917 09:40:40.442535 logged pid 865CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind278 ../src/curl -q --output log/20/curl278.out --include --trace-ascii log/20/trace278 --trace-config all --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:45475 > log/20/stdout278 2> log/20/stderr278 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind254 ../src/curl -q --output log/42/curl254.out --include --trace-ascii log/42/trace254 --trace-config all --trace-time -g "ftp://[::1]:40823/" --disable-epsv > log/42/stdout254 2> log/42/stderr254 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind274 ../src/curl -q --output log/49/curl274.out --include --trace-ascii log/49/trace274 --trace-config all --trace-time http://127.0.0.1:42667/want/274 -L --max-redirs 0 > log/49/stdout274 2> log/49/stderr274 81 in log/48/server/ftp_ipv6_server.pid 09:40:40.442887 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 09:40:40.691693 Running IPv6 version 09:40:40.693500 Listening on port 32917 09:40:40.694063 Wrote pid 87628 to log/48/server/ftp_ipv6_sockctrl.pid 09:40:40.694421 Wrote port 32917 to log/48/server/ftp_ipv6_server.port 09:40:40.694699 Received PING (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file server.cmd Testnum 252 === End of file server.cmd === Start of file valgrind252 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind252 test 0259...[HTTP POST multipart with Expect: header using proxy anyauth (Digest)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind259 ../src/curl -q --output log/52/curl259.out --include --trace-ascii log/52/trace259 --trace-config all --trace-time -x http://127.0.0.1:40089 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/52/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/52/stdout259 2> log/52/stderr259 259: protocol FAILED! There was no content at all in the file log/52/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/52/ dir after test 259 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind259 ../src/curl -q --output log/52/curl259.out --include --trace-ascii log/52/trace259 --trace-config all --trace-time -x http://127.0.0.1:40089 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/52/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/52/stdout259 2> log/52/stderr259 === End of file commands.log === Start of file http_server.log 09:40:40.509608 ====> Client connect 09:40:40.509943 accept_connection 3 returned 4 09:40:40.510120 accept_connection 3 returned 0 09:40:40.510286 Read 93 bytes 09:40:40.510391 Process 93 bytes request 09:40:40.510561 Got request: GET /verifiedserver HTTP/1.1 09:40:40.510657 Are-we-friendly question received 09:40:40.510894 Wrote request (93 bytes) input to log/52/server.input 09:40:40.511076 Identifying ourselves as friends 09:40:40.515720 Response sent (56 bytes) and written to log/52/server.response 09:40:40.515833 special request received, no persistency 09:40:40.515897 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40089... * Connected to 127.0.0.1 (127.0.0.1) port 40089 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40089 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73758 === End of file http_verify.out === Start of file server.cmd Testnum 259 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73758 === End of file server.response === Start of file test259.txt foo- This is a moo- bar === End of file test259.txt === Start of file valgrind259 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind259 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/17/server/ftp_server.pid" --logfile "log/17/ftp_server.log" --logdir "log/17" --portfile "log/17/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 33875 (log/17/server/ftp_server.port) RUN: FTP server is PID 86383 port 33875 * pid ftp => 86383 86383 test 0248...[FTP upload time condition evaluates FALSE => upload anyway] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind248 ../src/curl -q --output log/17/curl248.out --include --trace-ascii log/17/trace248 --trace-config all --trace-time ftp://127.0.0.1:33875/248 -T log/17/test248.txt -z "apr 1 2005 08:00:00" > log/17/stdout248 2> log/17/stderr248 248: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 248 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind248 ../src/curl -q --output log/17/curl248.out --include --trace-ascii log/17/trace248 --trace-config all --trace-time ftp://127.0.0.1:33875/248 -T log/17/test248.txt -z "apr 1 2005 08:00:00" > log/17/stdout248 2> log/17/stderr248 === End of file commands.log === Start of file ftp_server.log 09:40:40.352420 FTP server listens on port IPv4/33875 09:40:40.353452 logged pid 86383 in log/17/server/ftp_server.pid 09:40:40.354121 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:40.602929 Running IPv4 version 09:40:40.603627 Listening on port 33875 09:40:40.604162 Wrote pid 87513 to log/17/server/ftp_sockctrl.pid 09:40:40.604789 Wrote port 33875 to log/17/server/ftp_server.port 09:40:40.605064 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 248 === End of file server.cmd === Start of file test248.txt data to see that FTP works so does it? === End of file test248.txt === Start of file valgrind248 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind248 test 0278...[HTTP with proxy string including http:// and user+empty password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind278 ../src/curl -q --output log/20/curl278.out --include --trace-ascii log/20/trace278 --trace-config all --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:45475 > log/20/stdout278 2> log/20/stderr278 278: protocol FAILED! There was no content at all in the file log/20/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/20/ dir after test 278 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind278 ../src/curl -q --output log/20/curl278.out --include --trace-ascii log/20/trace278 --trace-config all --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:45475 > log/20/stdout278 2> log/20/stderr278 === End of file commands.log === Start of file http_server.log 09:40:41.150385 ====> Client connect 09:40:41.150840 accept_connection 3 returned 4 09:40:41.151010 accept_connection 3 returned 0 09:40:41.151130 Read 93 bytes 09:40:41.151224 Process 93 bytes request 09:40:41.151304 Got request: GET /verifiedserver HTTP/1.1 09:40:41.151378 Are-we-friendly question received 09:40:41.151720 Wrote request (93 bytes) input to log/20/server.input 09:40:41.151933 Identifying ourselves as friends 09:40:41.153559 Response sent (56 bytes) and written to log/20/server.response 09:40:41.153692 special request received, no persistency 09:40:41.153772 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45475... * Connected to 127.0.0.1 (127.0.0.1) port 45475 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45475 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73786 === End of file http_verify.out === Start of file server.cmd Testnum 278 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73786 === End of file server.response === Start of file valgrind278 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind278 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/57/server/ftp_ipv6_server.pid" --logfile "log/57/ftp_ipv6_server.log" --logdir "log/57" --portfile "log/57/server/ftp_ipv6_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]" PINGPONG runs on port 35147 (log/57/server/ftp_ipv6_server.port) RUN: FTP-IPv6 server is PID 86620 port 35147 * pid ftp-ipv6 => 86620 86620 test 0255...[FTP IPv6 dir list with EPRT and --disable-eprt] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind255 ../src/curl -q --output log/57/curl255.out --include --trace-ascii log/57/trace255 --trace-config all --trace-time -g "ftp://[::1]:35147/" -P - --disable-eprt > log/57/stdout255 2> log/57/stderr255 255: protocol FAILED! There was no content at all in the file log/57/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/57/ dir after test 255 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind255 ../src/curl -q --output log/57/curl255.out --include --trace-ascii log/57/trace255 --trace-config all --trace-time -g "ftp://[::1]:35147/" -P - --disable-eprt > log/57/stdout255 2> log/57/stderr255 === End of file commands.log === Start of file ftp_ipv6_server.log 09:40:40.443810 FTP server listens on port IPv6/35147 09:40:40.444959 logged pid 86620 in log/57/server/ftp_ipv6_server.pid 09:40:40.445274 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 09:40:40.693743 Running IPv6 version 09:40:40.694345 Listening on port 35147 09:40:40.695921 Wrote pid 87625 to log/57/server/ftp_ipv6_sockctrl.pid 09:40:40.696289 Wrote port 35147 to log/57/server/ftp_ipv6_server.port 09:40:40.696569 Received PING (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file server.cmd Testnum 255 === End of file server.cmd === Start of file valgrind255 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrinCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind267 ../src/curl -q --output log/27/curl267.out --include --trace-ascii log/27/trace267 --trace-config all --trace-time http://127.0.0.1:42323/267 -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no" > log/27/stdout267 2> log/27/stderr267 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind273 ../src/curl -q --output log/53/curl273.out --include --trace-ascii log/53/trace273 --trace-config all --trace-time http://127.0.0.1:34639/273 -u testuser:testpass --digest > log/53/stdout273 2> log/53/stderr273 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind277 ../src/curl -q --output log/36/curl277.out --include --trace-ascii log/36/trace277 --trace-config all --trace-time http://127.0.0.1:44255/want/277 -F name=daniel -H "Content-Type: text/info" > log/36/stdout277 2> log/36/stderr277 d: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind255 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/42/server/ftp_ipv6_server.pid" --logfile "log/42/ftp_ipv6_server.log" --logdir "log/42" --portfile "log/42/server/ftp_ipv6_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]" PINGPONG runs on port 40823 (log/42/server/ftp_ipv6_server.port) RUN: FTP-IPv6 server is PID 86585 port 40823 * pid ftp-ipv6 => 86585 86585 test 0254...[FTP IPv6 dir list PASV and --disable-epsv] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind254 ../src/curl -q --output log/42/curl254.out --include --trace-ascii log/42/trace254 --trace-config all --trace-time -g "ftp://[::1]:40823/" --disable-epsv > log/42/stdout254 2> log/42/stderr254 254: protocol FAILED! There was no content at all in the file log/42/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/42/ dir after test 254 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind254 ../src/curl -q --output log/42/curl254.out --include --trace-ascii log/42/trace254 --trace-config all --trace-time -g "ftp://[::1]:40823/" --disable-epsv > log/42/stdout254 2> log/42/stderr254 === End of file commands.log === Start of file ftp_ipv6_server.log 09:40:40.442547 FTP server listens on port IPv6/40823 09:40:40.443485 logged pid 86585 in log/42/server/ftp_ipv6_server.pid 09:40:40.443730 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 09:40:40.694075 Running IPv6 version 09:40:40.694718 Listening on port 40823 09:40:40.695120 Wrote pid 87630 to log/42/server/ftp_ipv6_sockctrl.pid 09:40:40.695521 Wrote port 40823 to log/42/server/ftp_ipv6_server.port 09:40:40.695719 Received PING (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file server.cmd Testnum 254 === End of file server.cmd === Start of file valgrind254 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind254 test 0274...[HTTP Location: following with --max-redirs 0] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind274 ../src/curl -q --output log/49/curl274.out --include --trace-ascii log/49/trace274 --trace-config all --trace-time http://127.0.0.1:42667/want/274 -L --max-redirs 0 > log/49/stdout274 2> log/49/stderr274 274: protocol FAILED! There was no content at all in the file log/49/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/49/ dir after test 274 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind274 ../src/curl -q --output log/49/curl274.out --include --trace-ascii log/49/trace274 --trace-config all --trace-time http://127.0.0.1:42667/want/274 -L --max-redirs 0 > log/49/stdout274 2> log/49/stderr274 === End of file commands.log === Start of file http_server.log 09:40:41.228834 ====> Client connect 09:40:41.229140 accept_connection 3 returned 4 09:40:41.229298 accept_connection 3 returned 0 09:40:41.230211 Read 93 bytes 09:40:41.230362 Process 93 bytes request 09:40:41.230581 Got request: GET /verifiedserver HTTP/1.1 09:40:41.230707 Are-we-friendly question received 09:40:41.230962 Wrote request (93 bytes) input to log/49/server.input 09:40:41.231233 Identifying ourselves as friends 09:40:41.238660 Response sent (56 bytes) and written to log/49/server.response 09:40:41.238781 special request received, no persistency 09:40:41.238858 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42667... * Connected to 127.0.0.1 (127.0.0.1) port 42667 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42667 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73760 === End of file http_verify.out === Start of file server.cmd Testnum 274 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73760 === End of file server.response === Start of file valgrind274 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind274 test 0267...[HTTP POST with NTLM authorization and added custom headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind267 ../src/curl -q --output log/27/curl267.out --include --trace-ascii log/27/trace267 --trace-config all --trace-time http://127.0.0.1:42323/267 -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no" > log/27/stdout267 2> log/27/stderr267 267: protocol FAILED! There was no content at all in the file log/27/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/27/ dir after test 267 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind267 ../src/curl -q --output log/27/curl267.out --include --trace-ascii log/27/trace267 --trace-config all --trace-time http://127.0.0.1:42323/267 -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no" > log/27/stdout267 2> log/27/stderr267 === End of file commands.log === Start of file http_server.log 09:40:40.776939 ====> Client connect 09:40:40.777237 accept_connection 3 returned 4 09:40:40.777388 accept_connection 3 returned 0 09:40:40.777596 Read 93 bytes 09:40:40.777707 Process 93 bytes request 09:40:40.777797 Got request: GET /verifiedserver HTTP/1.1 09:40:40.777872 Are-we-friendly question received 09:40:40.778096 Wrote request (93 bytes) input to log/27/server.input 09:40:40.778343 Identifying ourselves as friends 09:40:40.780231 Response sent (56 bytes) and written to log/27/server.response 09:40:40.780345 special request received, no persistency 09:40:40.780409 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42323... * Connected to 127.0.0.1 (127.0.0.1) port 42323 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42323 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73783 === End of file http_verify.out === Start of file server.cmd Testnum 267 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73783 === End of file server.response === Start of file valgrind267 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind267 test 0277...[HTTP RFC1867-type formposting with custom Content-Type] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind277 ../src/curl -q --output log/36/curl277.out --include --trace-ascii log/36/trace277 --trace-config all --trace-time http://127.0.0.1:44255/want/277 -F name=daniel -H "Content-Type: text/info" > log/36/stdout277 2> log/36/stderr277 277: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 277 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind277 ../src/curl -q --output log/36/curl277.out --include --trace-ascii log/36/trace277 --trace-config all --trace-time http://127.0.0.1:44255/want/277 -F name=daniel -H "Content-Type: text/info" > log/36/stdout277 2> log/36/stderr277 === End of file commands.log === Start of file http_server.log 09:40:41.299386 ====> Client connect 09:40:41.299885 accept_connection 3 returned 4 09:40:41.300078 accept_connection 3 returned 0 09:40:41.300219 Read 93 bytes 09:40:41.300331 Process 93 bytes request 09:40:41.300430 Got request: GET /verifiedserver HTTP/1.1 09:40:41.300627 Are-we-friendly question received 09:40:41.300875 Wrote request (93 bytes) input to log/36/server.input 09:40:41.301206 Identifying ourselves as friends 09:40:41.302154 Response sent (56 bytes) and written to log/36/server.response 09:40:41.302285 special request received, no persistency 09:40:41.302369 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44255... * Connected to 127.0.0.1 (127.0.0.1) port 44255 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44255 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 77175 === End of file http_verify.out === Start of file server.cmd Testnum 277 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 77175 === End of file server.response === Start of file valgrind277 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrinCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind276 ../src/curl -q --output log/14/curl276.out --include --trace-ascii log/14/trace276 --trace-config all --trace-time "http://127.0.0.1:43309/want?uri=http://anything/276?secondq/276" -L > log/14/stdout276 2> log/14/stderr276 d: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind277 test 0273...[HTTP with two Digest authorization headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind273 ../src/curl -q --output log/53/curl273.out --include --trace-ascii log/53/trace273 --trace-config all --trace-time http://127.0.0.1:34639/273 -u testuser:testpass --digest > log/53/stdout273 2> log/53/stderr273 273: protocol FAILED! There was no content at all in the file log/53/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/53/ dir after test 273 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind273 ../src/curl -q --output log/53/curl273.out --include --trace-ascii log/53/trace273 --trace-config all --trace-time http://127.0.0.1:34639/273 -u testuser:testpass --digest > log/53/stdout273 2> log/53/stderr273 === End of file commands.log === Start of file http_server.log 09:40:41.079405 ====> Client connect 09:40:41.079929 accept_connection 3 returned 4 09:40:41.080104 accept_connection 3 returned 0 09:40:41.080232 Read 93 bytes 09:40:41.080361 Process 93 bytes request 09:40:41.080562 Got request: GET /verifiedserver HTTP/1.1 09:40:41.080754 Are-we-friendly question received 09:40:41.081094 Wrote request (93 bytes) input to log/53/server.input 09:40:41.081331 Identifying ourselves as friends 09:40:41.082365 Response sent (56 bytes) and written to log/53/server.response 09:40:41.086688 special request received, no persistency 09:40:41.086793 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34639... * Connected to 127.0.0.1 (127.0.0.1) port 34639 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34639 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73761 === End of file http_verify.out === Start of file server.cmd Testnum 273 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73761 === End of file server.response === Start of file valgrind273 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind273 test 0320 SKIPPED: no gnutls-serv (with SRP support) test 0321 SKIPPED: no gnutls-serv (with SRP support) test 0324 SKIPPED: no gnutls-serv (with SRP support) test 0276...[HTTP Location: following with multiple question marks in URLs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind276 ../src/curl -q --output log/14/curl276.out --include --trace-ascii log/14/trace276 --trace-config all --trace-time "http://127.0.0.1:43309/want?uri=http://anything/276?secondq/276" -L > log/14/stdout276 2> log/14/stderr276 276: protocol FAILED! There was no content at all in the file log/14/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/14/ dir after test 276 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind276 ../src/curl -q --output log/14/curl276.out --include --trace-ascii log/14/trace276 --trace-config all --trace-time "http://127.0.0.1:43309/want?uri=http://anything/276?secondq/276" -L > log/14/stdout276 2> log/14/stderr276 === End of file commands.log === Start of file http_server.log 09:40:41.154841 ====> Client connect 09:40:41.155122 accept_connection 3 returned 4 09:40:41.155289 accept_connection 3 returned 0 09:40:41.156098 Read 93 bytes 09:40:41.156248 Process 93 bytes request 09:40:41.156343 Got request: GET /verifiedserver HTTP/1.1 09:40:41.156536 Are-we-friendly question received 09:40:41.156846 Wrote request (93 bytes) input to log/14/server.input 09:40:41.157082 Identifying ourselves as friends 09:40:41.157787 Response sent (56 bytes) and written to log/14/server.response 09:40:41.157972 special request received, no persistency 09:40:41.158049 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43309... * Connected to 127.0.0.1 (127.0.0.1) port 43309 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43309 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73795 === End of file http_verify.out === Start of file server.cmd Testnum 276 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73795 === End of file server.response === Start of file valgrind276 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a correspondiCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind280 ../src/curl -q --output log/56/curl280.out --include --trace-ascii log/56/trace280 --trace-config all --trace-time ftp://127.0.0.1:36539/280/ --ftp-alternative-to-user "USER replacement" > log/56/stdout280 2> log/56/stderr280 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind271 ../src/curl -q --output log/38/curl271.out --include --trace-ascii log/38/trace271 --trace-config all --trace-time tftp://127.0.0.1:40279//271 > log/38/stdout271 2> log/38/stderr271 ng 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind276 test 0280...[FTP --ftp-alternative-to-user on USER failure] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind280 ../src/curl -q --output log/56/curl280.out --include --trace-ascii log/56/trace280 --trace-config all --trace-time ftp://127.0.0.1:36539/280/ --ftp-alternative-to-user "USER replacement" > log/56/stdout280 2> log/56/stderr280 280: protocol FAILED! There was no content at all in the file log/56/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/56/ dir after test 280 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind280 ../src/curl -q --output log/56/curl280.out --include --trace-ascii log/56/trace280 --trace-config all --trace-time ftp://127.0.0.1:36539/280/ --ftp-alternative-to-user "USER replacement" > log/56/stdout280 2> log/56/stderr280 === End of file commands.log === Start of file ftp_server.log 09:40:41.182069 ====> Client connect 09:40:41.184503 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:41.187243 < "USER anonymous" 09:40:41.188094 > "331 We are happy you popped in![CR][LF]" 09:40:41.190430 < "PASS ftp@example.com" 09:40:41.190952 > "230 Welcome you silly person[CR][LF]" 09:40:41.193652 < "PWD" 09:40:41.194498 > "257 "/" is current directory[CR][LF]" 09:40:41.197259 < "EPSV" 09:40:41.197652 ====> Passive DATA channel requested by client 09:40:41.197940 DATA sockfilt for passive data channel starting... 09:40:41.212590 DATA sockfilt for passive data channel started (pid 88704) 09:40:41.213640 DATA sockfilt for passive data channel listens on port 39197 09:40:41.214165 > "229 Entering Passive Mode (|||39197|)[LF]" 09:40:41.214422 Client has been notified that DATA conn will be accepted on port 39197 09:40:41.215825 Client connects to port 39197 09:40:41.216184 ====> Client established passive DATA connection on port 39197 09:40:41.217079 < "TYPE I" 09:40:41.217459 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:41.219328 < "SIZE verifiedserver" 09:40:41.220879 > "213 17[CR][LF]" 09:40:41.222079 < "RETR verifiedserver" 09:40:41.223559 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:41.224527 =====> Closing passive DATA connection... 09:40:41.224974 Server disconnects passive DATA connection 09:40:41.225550 Server disconnected passive DATA connection 09:40:41.226131 DATA sockfilt for passive data channel quits (pid 88704) 09:40:41.228207 DATA sockfilt for passive data channel quit (pid 88704) 09:40:41.228445 =====> Closed passive DATA connection 09:40:41.229369 > "226 File transfer complete[CR][LF]" 09:40:41.266812 < "QUIT" 09:40:41.267234 > "221 bye bye baby[CR][LF]" 09:40:41.277260 MAIN sockfilt said DISC 09:40:41.278897 ====> Client disconnected 09:40:41.279423 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:41.435015 ====> Client connect 09:40:41.437126 Received DATA (on stdin) 09:40:41.437282 > 160 bytes data, server => client 09:40:41.437557 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:41.437714 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:41.437797 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:41.439835 < 16 bytes data, client => server 09:40:41.440007 'USER anonymous\r\n' 09:40:41.442130 Received DATA (on stdin) 09:40:41.442260 > 33 bytes data, server => client 09:40:41.442351 '331 We are happy you popped in!\r\n' 09:40:41.443150 < 22 bytes data, client => server 09:40:41.443293 'PASS ftp@example.com\r\n' 09:40:41.445106 Received DATA (on stdin) 09:40:41.445284 > 30 bytes data, server => client 09:40:41.445400 '230 Welcome you silly person\r\n' 09:40:41.446365 < 5 bytes data, client => server 09:40:41.446601 'PWD\r\n' 09:40:41.447833 Received DATA (on stdin) 09:40:41.447979 > 30 bytes data, server => client 09:40:41.448589 '257 "/" is current directory\r\n' 09:40:41.449762 < 6 bytes data, client => server 09:40:41.450000 'EPSV\r\n' 09:40:41.467891 Received DATA (on stdin) 09:40:41.468049 > 38 bytes data, server => client 09:40:41.468136 '229 Entering Passive Mode (|||39197|)\n' 09:40:41.469385 < 8 bytes data, client => server 09:40:41.469615 'TYPE I\r\n' 09:40:41.471189 Received DATA (on stdin) 09:40:41.471348 > 33 bytes data, server => client 09:40:41.471525 '200 I modify TYPE as you wanted\r\n' 09:40:41.472171 < 21 bytes data, client => server 09:40:41.472305 'SIZE verifiedserver\r\n' 09:40:41.473529 Received DATA (on stdin) 09:40:41.473678 > 8 bytes data, server => client 09:40:41.473852 '213 17\r\n' 09:40:41.474922 < 21 bytes data, client => server 09:40:41.475060 'RETR verifiedserver\r\n' 09:40:41.476188 Received DATA (on stdin) 09:40:41.476339 > 29 bytes data, server => client 09:40:41.476593 '150 Binary junk (17 bytes).\r\n' 09:40:41.482430 Received DATA (on stdin) 09:40:41.482638 > 28 bytes data, server => client 09:40:41.482816 '226 File transfer complete\r\n' 09:40:41.519346 < 6 bytes data, client => server 09:40:41.519628 'QUIT\r\n' 09:40:41.521411 Received DATA (on stdin) 09:40:41.521641 > 18 bytes data, server => client 09:40:41.521739 '221 bye bye baby\r\n' 09:40:41.530671 ====> Client disconnect 09:40:41.531620 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:41.464545 Running IPv4 version 09:40:41.465203 Listening on port 39197 09:40:41.465703 Wrote pid 88704 to log/56/server/ftp_sockdata.pid 09:40:41.465914 Received PING (on stdin) 09:40:41.466825 Received PORT (on stdin) 09:40:41.469171 ====> Client connect 09:40:41.477870 Received DATA (on stdin) 09:40:41.478046 > 17 bytes data, server => client 09:40:41.478136 'WE ROOLZ: 77376\r\n' 09:40:41.478953 Received DISC (on stdin) 09:40:41.479147 ====> Client forcibly disconnected 09:40:41.480195 Received QUIT (on stdin) 09:40:41.480342 quits 09:40:41.480839 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY USER 530 We don't like USER commands COUNT USER 1 Testnum 280 === End of file server.cmd === Start of file valgrind280 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind280 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind272 ../src/curl -q --output log/25/curl272.out --include --trace-ascii log/25/trace272 --trace-config all --trace-time ftp://127.0.0.1:34069/272 -z "2004 jan 1 12:12:12 UTC" > log/25/stdout272 2> log/25/stderr272 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind270 ../src/curl -q --output log/37/curl270.out --include --trace-ascii log/37/trace270 --trace-config all --trace-time ftp://127.0.0.1:40443/270 --ftp-skip-pasv-ip --disable-epsv > log/37/stdout270 2> log/37/stderr270 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind281 ../src/curl -q --output log/61/curl281.out --include --trace-ascii log/61/trace281 --trace-config all --trace-time http://127.0.0.1:44381/we/want/281 -f -T log/61/test281.txt > log/61/stdout281 2> log/61/stderr281 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind263 ../src/curl -q --output log/15/curl263.out --include --trace-ascii log/15/trace263 --trace-config all --trace-time -g -x "http://[::1]:35915" http://veryveryremotesite.com/263 > log/15/stdout263 2> log/15/stderr263 idfile "log/38/server/tftp_server.pid" --portfile "log/38/server/tftp_server.port" --logfile "log/38/tftp_server.log" --logdir "log/38" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: TFTP server on PID 87691 port 40279 * pid tftp => 87691 87691 test 0271...[TFTP retrieve] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind271 ../src/curl -q --output log/38/curl271.out --include --trace-ascii log/38/trace271 --trace-config all --trace-time tftp://127.0.0.1:40279//271 > log/38/stdout271 2> log/38/stderr271 271: protocol FAILED! There was no content at all in the file log/38/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/38/ dir after test 271 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind271 ../src/curl -q --output log/38/curl271.out --include --trace-ascii log/38/trace271 --trace-config all --trace-time tftp://127.0.0.1:40279//271 > log/38/stdout271 2> log/38/stderr271 === End of file commands.log === Start of file server.cmd Testnum 271 === End of file server.cmd === Start of file tftp_server.log 09:40:40.980831 Wrote pid 87691 to log/38/server/tftp_server.pid 09:40:40.981530 Wrote port 40279 to log/38/server/tftp_server.port 09:40:40.981727 Running IPv4 version on port UDP/40279 === End of file tftp_server.log === Start of file valgrind271 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind271 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/25/server/ftp_server.pid" --logfile "log/25/ftp_server.log" --logdir "log/25" --portfile "log/25/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 34069 (log/25/server/ftp_server.port) RUN: FTP server is PID 87701 port 34069 * pid ftp => 87701 87701 test 0272...[FTP timed conditioned get file with identical time stamp] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind272 ../src/curl -q --output log/25/curl272.out --include --trace-ascii log/25/trace272 --trace-config all --trace-time ftp://127.0.0.1:34069/272 -z "2004 jan 1 12:12:12 UTC" > log/25/stdout272 2> log/25/stderr272 272: protocol FAILED! There was no content at all in the file log/25/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/25/ dir after test 272 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind272 ../src/curl -q --output log/25/curl272.out --include --trace-ascii log/25/trace272 --trace-config all --trace-time ftp://127.0.0.1:34069/272 -z "2004 jan 1 12:12:12 UTC" > log/25/stdout272 2> log/25/stderr272 === End of file commands.log === Start of file ftp_server.log 09:40:41.210045 FTP server listens on port IPv4/34069 09:40:41.211196 logged pid 87701 in log/25/server/ftp_server.pid 09:40:41.211545 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:41.460266 Running IPv4 version 09:40:41.461607 Listening on port 34069 09:40:41.462170 Wrote pid 88689 to log/25/server/ftp_sockctrl.pid 09:40:41.462750 Wrote port 34069 to log/25/server/ftp_server.port 09:40:41.462930 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 272 === End of file server.cmd === Start of file valgrind272 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind272 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/37/server/ftp_server.pid" --logfile "log/37/ftp_server.log" --logdir "log/37" --portfile "log/37/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 40443 (log/37/server/ftp_server.port) RUN: FTP server is PID 87603 port 40443 * pid ftp => 87603 87603 test 0270...[FTP RETR PASV --ftp-skip-pasv-ip] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind270 ../src/curl -q --output log/37/curl270.out --include --trace-ascii log/37/trace270 --trace-config all --trace-time ftp://127.0.0.1:40443/270 --ftp-skip-pasv-ip --disable-epsv > log/37/stdout270 2> log/37/stderr270 270: protocol FAILED! There was no content at all in the file log/37/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/37/ dir after test 270 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind270 ../src/curl -q --output log/37/curl270.out --include --trace-ascii log/37/trace270 --trace-config all --trace-time ftp://127.0.0.1:40443/270 --ftp-skip-pasv-ip --disable-epsv > log/37/stdout270 2> log/37/stderr270 === End of file commands.log === Start of file ftp_server.log 09:40:41.256979 FTP server listens on port IPv4/40443 09:40:41.259456 logged pid 87603 in log/37/server/ftp_server.pid 09:40:41.259723 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:41.501772 Running IPv4 version 09:40:41.502381 Listening on port 40443 09:40:41.504672 Wrote pid 88732 to log/37/server/ftp_sockctrl.pid 09:40:41.505026 Wrote port 40443 to log/37/server/ftp_server.port 09:40:41.509609 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd PASVBADIP Testnum 270 === End of file server.cmd === Start of file valgrind270 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind270 test 0281...[HTTP PUT from file with 100 + 401 responses and -f without auth given] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind281 ../src/curl -q --output log/61/curl281.out --include --trace-ascii log/61/trace281 --trace-config all --trace-time http://127.0.0.1:44381/we/want/281 -f -T log/61/test281.txt > log/61/stdout281 2> log/61/stderr281 281: protocol FAILED! There was no content at all in the file log/61/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/61/ dir after test 281 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind281 ../src/curl -q --output log/61/curl281.out --include --trace-ascii log/61/trace281 --trace-config all --trace-time http://127.0.0.1:44381/we/want/281 -f -T log/61/test281.txt > log/61/stdout281 2> log/61/stderr281 === End of file commands.log === Start of file http_server.log 09:40:41.608964 ====> Client connect 09:40:41.609287 accept_connection 3 returned 4 09:40:41.609596 accept_connection 3 returned 0 09:40:41.609907 Read 93 bytes 09:40:41.610027 Process 93 bytes request 09:40:41.610115 Got request: GET /verifiedserver HTTP/1.1 09:40:41.610195 Are-we-friendly question received 09:40:41.610626 Wrote request (93 bytes) input to log/61/server.input 09:40:41.610844 Identifying ourselves as friends 09:40:41.612725 Response sent (56 bytes) and written to log/61/server.response 09:40:41.612846 special request received, no persistency 09:40:41.612928 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44381... * Connected to 127.0.0.1 (127.0.0.1) port 44381 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44381 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73751 === End of file http_verify.out === Start of file server.cmd Testnum 281 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73751 === End of file server.response === Start of file test281.txt Weird file to upload === End of file test281.txt === Start of file valgrind281 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind281 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --keepalive 30 --pidfile "log/15/server/http_ipv6_server.pid" --logfile "log/15/http_ipv6_server.log" --logdir "log/15" --portfile log/15/server/http_ipv6_server.port --config log/15/server.cmd --ipv6 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP-IPv6 server is on PID 87136 port 35915 * pid http-ipv6 => 87136 87136 test 0263...[HTTP-IPv6 GET with proxy specified using IPv6-numerical address] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind263 ../src/curl -q --output log/15/curl263.out --include --trace-ascii log/15/trace263 --trace-config all --trace-time -g -x "http://[::1]:35915" http://veryveryremotesite.com/263 > log/15/stdout263 2> log/15/stderr263 263: protocol FAILED! There was no content at all in the file log/15/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/15/ dir after test 263 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind263 ../src/curl -q --output log/15/curl263.out --include --trace-ascii log/15/trace263 --trace-config all --trace-time -g -x "http://[::1]:35915" http://veryveryremotesite.com/263 > log/15/stdout263 2> log/15/stderr263 === End of file commands.log === Start of file http_ipv6_server.log 09:40:40.634206 Running HTTP IPv6 version on port 35915 09:40:40.635213 Wrote pid 87136 to log/15/server/http_ipv6_server.pid 09:40:40.637737 Wrote port 35915 to log/15/server/http_ipv6_server.port === End of file http_ipv6_server.log === Start of file server.cmd Testnum 263 === End of file server.cmd === Start of file valgrind263 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind279 ../src/curl -q --output log/47/curl279.out --include --trace-ascii log/47/trace279 --trace-config all --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:41103 > log/47/stdout279 2> log/47/stderr279 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind287 ../src/curl -q --include --trace-ascii log/55/trace287 --trace-config all --trace-time http://test.remote.example.com.287:33071/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:33071 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/55/stdout287 2> log/55/stderr287 ind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind263 test 0279...[HTTP with proxy string including http:// and user only] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind279 ../src/curl -q --output log/47/curl279.out --include --trace-ascii log/47/trace279 --trace-config all --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:41103 > log/47/stdout279 2> log/47/stderr279 279: protocol FAILED! There was no content at all in the file log/47/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/47/ dir after test 279 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind279 ../src/curl -q --output log/47/curl279.out --include --trace-ascii log/47/trace279 --trace-config all --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:41103 > log/47/stdout279 2> log/47/stderr279 === End of file commands.log === Start of file http_server.log 09:40:41.471953 ====> Client connect 09:40:41.472257 accept_connection 3 returned 4 09:40:41.472425 accept_connection 3 returned 0 09:40:41.472756 Read 93 bytes 09:40:41.472874 Process 93 bytes request 09:40:41.472991 Got request: GET /verifiedserver HTTP/1.1 09:40:41.473083 Are-we-friendly question received 09:40:41.473372 Wrote request (93 bytes) input to log/47/server.input 09:40:41.473688 Identifying ourselves as friends 09:40:41.474751 Response sent (56 bytes) and written to log/47/server.response 09:40:41.474903 special request received, no persistency 09:40:41.474993 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41103... * Connected to 127.0.0.1 (127.0.0.1) port 41103 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41103 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73762 === End of file http_verify.out === Start of file server.cmd Testnum 279 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73762 === End of file server.response === Start of file valgrind279 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind279 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind288 ../src/curl -q --output log/1/curl288.out --trace-ascii log/1/trace288 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/1/test288.txt > log/1/stdout288 2> log/1/stderr288 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind290 ../src/curl -q --output log/58/curl290.out --include --trace-ascii log/58/trace290 --trace-config all --trace-time ftp://127.0.0.1:38901/290 --max-filesize 30 > log/58/stdout290 2> log/58/stderr290 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind282 ../src/curl -q --output log/45/curl282.out --include --trace-ascii log/45/trace282 --trace-config all --trace-time http://127.0.0.1:34239/282 > log/45/stdout282 2> log/45/stderr282 test 0287...[HTTP proxy CONNECT with custom User-Agent header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind287 ../src/curl -q --include --trace-ascii log/55/trace287 --trace-config all --trace-time http://test.remote.example.com.287:33071/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:33071 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/55/stdout287 2> log/55/stderr287 287: stdout FAILED: --- log/55/check-expected 2025-07-18 09:40:42.695987359 +0000 +++ log/55/check-generated 2025-07-18 09:40:42.694607180 +0000 @@ -1,2 +0,0 @@ -HTTP/1.1 405 Method Not Allowed swsclose[CR][LF] -[CR][LF] == Contents of files in the log/55/ dir after test 287 === Start of file check-expected HTTP/1.1 405 Method Not Allowed swsclose[CR][LF] [CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind287 ../src/curl -q --include --trace-ascii log/55/trace287 --trace-config all --trace-time http://test.remote.example.com.287:33071/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:33071 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/55/stdout287 2> log/55/stderr287 === End of file commands.log === Start of file http_server.log 09:40:41.933849 ====> Client connect 09:40:41.934136 accept_connection 3 returned 4 09:40:41.934344 accept_connection 3 returned 0 09:40:41.935117 Read 93 bytes 09:40:41.935262 Process 93 bytes request 09:40:41.935354 Got request: GET /verifiedserver HTTP/1.1 09:40:41.935425 Are-we-friendly question received 09:40:41.935742 Wrote request (93 bytes) input to log/55/server.input 09:40:41.935926 Identifying ourselves as friends 09:40:41.936538 Response sent (56 bytes) and written to log/55/server.response 09:40:41.936654 special request received, no persistency 09:40:41.936722 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33071... * Connected to 127.0.0.1 (127.0.0.1) port 33071 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33071 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73757 === End of file http_verify.out === Start of file server.cmd Testnum 287 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73757 === End of file server.response === Start of file valgrind287 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind287 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind291 ../src/curl -q --output log/18/curl291.out --include --trace-ascii log/18/trace291 --trace-config all --trace-time ftp://127.0.0.1:42089/291 --max-filesize 100 > log/18/stdout291 2> log/18/stderr291 * starts no server setenv all_proxy = http://fake:user@127.0.0.1:47/ test 0288...[file:// with (unsupported) proxy, authentication and range] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind288 ../src/curl -q --output log/1/curl288.out --trace-ascii log/1/trace288 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/1/test288.txt > log/1/stdout288 2> log/1/stderr288 288: data FAILED: --- log/1/check-expected 2025-07-18 09:40:42.873549149 +0000 +++ log/1/check-generated 2025-07-18 09:40:42.872610390 +0000 @@ -1,5 +0,0 @@ -foo[LF] - bar[LF] -bar[LF] - foo[LF] -moo[LF] == Contents of files in the log/1/ dir after test 288 === Start of file check-expected foo[LF] bar[LF] bar[LF] foo[LF] moo[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind288 ../src/curl -q --output log/1/curl288.out --trace-ascii log/1/trace288 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/1/test288.txt > log/1/stdout288 2> log/1/stderr288 === End of file commands.log === Start of file server.cmd Testnum 288 === End of file server.cmd === Start of file test288.txt foo bar bar foo moo === End of file test288.txt === Start of file valgrind288 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind288 test 0282...[HTTP GET with no response body or headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind282 ../src/curl -q --output log/45/curl282.out --include --trace-ascii log/45/trace282 --trace-config all --trace-time http://127.0.0.1:34239/282 > log/45/stdout282 2> log/45/stderr282 282: protocol FAILED! There was no content at all in the file log/45/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/45/ dir after test 282 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind282 ../src/curl -q --output log/45/curl282.out --include --trace-ascii log/45/trace282 --trace-config all --trace-time http://127.0.0.1:34239/282 > log/45/stdout282 2> log/45/stderr282 === End of file commands.log === Start of file http_server.log 09:40:40.765549 ====> Client connect 09:40:40.765868 accept_connection 3 returned 4 09:40:40.766024 accept_connection 3 returned 0 09:40:40.766151 Read 93 bytes 09:40:40.766240 Process 93 bytes request 09:40:40.766331 Got request: GET /verifiedserver HTTP/1.1 09:40:40.766408 Are-we-friendly question received 09:40:40.766761 Wrote request (93 bytes) input to log/45/server.input 09:40:40.766954 Identifying ourselves as friends 09:40:40.767769 Response sent (56 bytes) and written to log/45/server.response 09:40:40.768364 special request received, no persistency 09:40:40.768551 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34239... * Connected to 127.0.0.1 (127.0.0.1) port 34239 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34239 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 75108 === End of file http_verify.out === Start of file server.cmd Testnum 282 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 75108 === End of file server.response === Start of file valgrind282 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind282 test 0290...[FTP download maximum filesize exceeded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind290 ../src/curl -q --output log/58/curl290.out --include --trace-ascii log/58/trace290 --trace-config all --trace-time ftp://127.0.0.1:38901/290 --max-filesize 30 > log/58/stdout290 2> log/58/stderr290 290: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 290 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind290 ../src/curl -q --output log/58/curl290.out --include --trace-ascii log/58/trace290 --trace-config all --trace-time ftp://127.0.0.1:38901/290 --max-filesize 30 > log/58/stdout290 2> log/58/stderr290 === End of file commands.log === Start of file ftp_server.log 09:40:41.785914 ====> Client connect 09:40:41.789547 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:41.792299 < "USER anonymous" 09:40:41.794155 > "331 We are happy you popped in![CR][LF]" 09:40:41.794927 < "PASS ftp@example.com" 09:40:41.795282 > "230 Welcome you silly person[CR][LF]" 09:40:41.797994 < "PWD" 09:40:41.799485 > "257 "/" is current directory[CR][LF]" 09:40:41.800627 < "EPSV" 09:40:41.800983 ====> Passive DATA channel requested by client 09:40:41.801184 DATA sockfilt for passive data channel starting... 09:40:41.812187 DATA sockfilt for passive data channel started (pid 89637) 09:40:41.813387 DATA sockfilt for passive data channel listens on port 43279 09:40:41.814350 > "229 Entering Passive Mode (|||43279|)[LF]" 09:40:41.814614 Client has been notified that DATA conn will be accepted on port 43279 09:40:41.816591 Client connects to port 43279 09:40:41.817016 ====> Client established passive DATA connection on port 43279 09:40:41.817909 < "TYPE I" 09:40:41.818317 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:41.820458 < "SIZE verifiedserver" 09:40:41.821013 > "213 17[CR][LF]" 09:40:41.823165 < "RETR verifiedserver" 09:40:41.824638 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:41.825435 =====> Closing passive DATA connection... 09:40:41.825649 Server disconnects passive DATA connection 09:40:41.827174 Fancy that; client wants to DISC, too 09:40:41.828072 Server disconnected passive DATA connection 09:40:41.828313 DATA sockfilt for passive data channel quits (pid 89637) 09:40:41.830207 DATA sockfilt for passive data channel quit (pid 89637) 09:40:41.830486 =====> Closed passive DATA connection 09:40:41.830848 > "226 File transfer complete[CR][LF]" 09:40:41.867608 < "QUIT" 09:40:41.868475 > "221 bye bye baby[CR][LF]" 09:40:41.870330 MAIN sockfilt said DISC 09:40:41.871158 ====> Client disconnected 09:40:41.871656 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.037689 ====> Client connect 09:40:42.040911 Received DATA (on stdin) 09:40:42.041062 > 160 bytes data, server => client 09:40:42.042599 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:42.042763 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:42.042842 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:42.044416 < 16 bytes data, client => server 09:40:42.044791 'USER anonymous\r\n' 09:40:42.046501 Received DATA (on stdin) 09:40:42.046646 > 33 bytes data, server => client 09:40:42.046832 '331 We are happy you popped in!\r\n' 09:40:42.047509 < 22 bytes data, client => server 09:40:42.047649 'PASS ftp@example.com\r\n' 09:40:42.049377 Received DATA (on stdin) 09:40:42.049608 > 30 bytes data, server => client 09:40:42.049740 '230 Welcome you silly person\r\n' 09:40:42.050401 < 5 bytes data, client => server 09:40:42.050672 'PWD\r\n' 09:40:42.052182 Received DATA (on stdin) 09:40:42.052317 > 30 bytes data, server => client 09:40:42.052535 '257 "/" is current directory\r\n' 09:40:42.053621 < 6 bytes data, client => server 09:40:42.053748 'EPSV\r\n' 09:40:42.067664 Received DATA (on stdin) 09:40:42.067820 > 38 bytes data, server => client 09:40:42.068697 '229 Entering Passive Mode (|||43279|)\n' 09:40:42.070214 < 8 bytes data, client => server 09:40:42.070371 'TYPE I\r\n' 09:40:42.072032 Received DATA (on stdin) 09:40:42.072195 > 33 bytes data, server => client 09:40:42.072284 '200 I modify TYPE as you wanted\r\n' 09:40:42.073291 < 21 bytes data, client => server 09:40:42.073506 'SIZE verifiedserver\r\n' 09:40:42.075038 Received DATA (on stdin) 09:40:42.075177 > 8 bytes data, server => client 09:40:42.075264 '213 17\r\n' 09:40:42.075975 < 21 bytes data, client => server 09:40:42.076119 'RETR verifiedserver\r\n' 09:40:42.077339 Received DATA (on stdin) 09:40:42.077688 > 29 bytes data, server => client 09:40:42.077926 '150 Binary junk (17 bytes).\r\n' 09:40:42.085045 Received DATA (on stdin) 09:40:42.085263 > 28 bytes data, server => client 09:40:42.085351 '226 File transfer complete\r\n' 09:40:42.120413 < 6 bytes data, client => server 09:40:42.120658 'QUIT\r\n' 09:40:42.121821 Received DATA (on stdin) 09:40:42.121956 > 18 bytes data, server => client 09:40:42.122604 '221 bye bye baby\r\n' 09:40:42.123771 ====> Client disconnect 09:40:42.124321 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:41.064342 Running IPv4 version 09:40:41.064894 Listening on port 43279 09:40:41.065259 Wrote pid 89637 to log/58/server/ftp_sockdata.pid 09:40:41.065550 Received PING (on stdin) 09:40:41.066372 Received PORT (on stdin) 09:40:41.069983 ====> Client connect 09:40:41.078849 Received DATA (on stdin) 09:40:41.079009 > 17 bytes data, server => client 09:40:41.079092 'WE ROOLZ: 77973\r\n' 09:40:41.080188 ====> Client disconnect 09:40:41.080595 Received DISC (on stdin) 09:40:41.080702 Crikey! Client also wants to disconnect 09:40:41.081226 Received ACKD (on stdin) 09:40:41.082232 Received QUIT (on stdin) 09:40:41.082354 quits 09:40:41.082783 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 290 === End of file server.cmd === Start of file valgrind290 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind290 test 0291...[FTP download maximum filesize not exceeded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind291 ../src/curl -q --output log/18/curl291.out --include --trace-ascii log/18/trace291 --trace-config all --trace-time ftp://127.0.0.1:42089/291 --max-filesize 100 > log/18/stdout291 2> log/18/stderr291 291: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 291 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind291 ../src/curl -q --output log/18/curl291.out --include --trace-ascii log/18/trace291 --trace-config all --trace-time ftp://127.0.0.1:42089/291 --max-filesize 100 > log/18/stdout291 2> log/18/stderr291 === End of file commands.log === Start of file ftp_server.log 09:40:41.852645 ====> Client connect 09:40:41.854229 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:41.857291 < "USER anonymous" 09:40:41.857717 > "331 We are happy you popped in![CR][LF]" 09:40:41.859339 < "PASS ftp@example.com" 09:40:41.859853 > "230 Welcome you silly person[CR][LF]" 09:40:41.861452 < "PWD" 09:40:41.8CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind289 ../src/curl -q --output log/59/curl289.out --include --trace-ascii log/59/trace289 --trace-config all --trace-time ftp://127.0.0.1:43961/289 -T log/59/illegal-nonexistent-file -C - > log/59/stdout289 2> log/59/stderr289 61930 > "257 "/" is current directory[CR][LF]" 09:40:41.864185 < "EPSV" 09:40:41.864499 ====> Passive DATA channel requested by client 09:40:41.864709 DATA sockfilt for passive data channel starting... 09:40:41.881131 DATA sockfilt for passive data channel started (pid 89731) 09:40:41.884247 DATA sockfilt for passive data channel listens on port 39787 09:40:41.884723 > "229 Entering Passive Mode (|||39787|)[LF]" 09:40:41.885070 Client has been notified that DATA conn will be accepted on port 39787 09:40:41.886893 Client connects to port 39787 09:40:41.887586 ====> Client established passive DATA connection on port 39787 09:40:41.893198 < "TYPE I" 09:40:41.896250 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:41.899453 < "SIZE verifiedserver" 09:40:41.901872 > "213 17[CR][LF]" 09:40:41.903181 < "RETR verifiedserver" 09:40:41.904094 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:41.906122 =====> Closing passive DATA connection... 09:40:41.906384 Server disconnects passive DATA connection 09:40:41.906696 Fancy that; client wants to DISC, too 09:40:41.907374 Server disconnected passive DATA connection 09:40:41.907656 DATA sockfilt for passive data channel quits (pid 89731) 09:40:41.912995 DATA sockfilt for passive data channel quit (pid 89731) 09:40:41.913246 =====> Closed passive DATA connection 09:40:41.913561 > "226 File transfer complete[CR][LF]" 09:40:41.950440 < "QUIT" 09:40:41.950962 > "221 bye bye baby[CR][LF]" 09:40:41.956415 MAIN sockfilt said DISC 09:40:41.956727 ====> Client disconnected 09:40:41.957268 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.105767 ====> Client connect 09:40:42.107940 Received DATA (on stdin) 09:40:42.108133 > 160 bytes data, server => client 09:40:42.108238 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:42.108334 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:42.108413 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:42.109922 < 16 bytes data, client => server 09:40:42.110157 'USER anonymous\r\n' 09:40:42.111525 Received DATA (on stdin) 09:40:42.111687 > 33 bytes data, server => client 09:40:42.111771 '331 We are happy you popped in!\r\n' 09:40:42.112411 < 22 bytes data, client => server 09:40:42.112642 'PASS ftp@example.com\r\n' 09:40:42.113600 Received DATA (on stdin) 09:40:42.113761 > 30 bytes data, server => client 09:40:42.113863 '230 Welcome you silly person\r\n' 09:40:42.114617 < 5 bytes data, client => server 09:40:42.114765 'PWD\r\n' 09:40:42.115947 Received DATA (on stdin) 09:40:42.116094 > 30 bytes data, server => client 09:40:42.116191 '257 "/" is current directory\r\n' 09:40:42.117048 < 6 bytes data, client => server 09:40:42.117189 'EPSV\r\n' 09:40:42.138508 Received DATA (on stdin) 09:40:42.138691 > 38 bytes data, server => client 09:40:42.138794 '229 Entering Passive Mode (|||39787|)\n' 09:40:42.140400 < 8 bytes data, client => server 09:40:42.140671 'TYPE I\r\n' 09:40:42.149885 Received DATA (on stdin) 09:40:42.150244 > 33 bytes data, server => client 09:40:42.150337 '200 I modify TYPE as you wanted\r\n' 09:40:42.153529 < 21 bytes data, client => server 09:40:42.153672 'SIZE verifiedserver\r\n' 09:40:42.154077 Received DATA (on stdin) 09:40:42.154222 > 8 bytes data, server => client 09:40:42.154390 '213 17\r\n' 09:40:42.156009 < 21 bytes data, client => server 09:40:42.156145 'RETR verifiedserver\r\n' 09:40:42.157327 Received DATA (on stdin) 09:40:42.157568 > 29 bytes data, server => client 09:40:42.158552 '150 Binary junk (17 bytes).\r\n' 09:40:42.167628 Received DATA (on stdin) 09:40:42.167774 > 28 bytes data, server => client 09:40:42.167858 '226 File transfer complete\r\n' 09:40:42.201631 < 6 bytes data, client => server 09:40:42.201880 'QUIT\r\n' 09:40:42.204996 Received DATA (on stdin) 09:40:42.205156 > 18 bytes data, server => client 09:40:42.205277 '221 bye bye baby\r\n' 09:40:42.209663 ====> Client disconnect 09:40:42.211252 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:41.131695 Running IPv4 version 09:40:41.132570 Listening on port 39787 09:40:41.133132 Wrote pid 89731 to log/18/server/ftp_sockdata.pid 09:40:41.133394 Received PING (on stdin) 09:40:41.135233 Received PORT (on stdin) 09:40:41.139962 ====> Client connect 09:40:41.158549 Received DATA (on stdin) 09:40:41.158708 > 17 bytes data, server => client 09:40:41.158793 'WE ROOLZ: 79172\r\n' 09:40:41.159662 ====> Client disconnect 09:40:41.160367 Received DISC (on stdin) 09:40:41.160599 Crikey! Client also wants to disconnect 09:40:41.161044 Received ACKD (on stdin) 09:40:41.162538 Received QUIT (on stdin) 09:40:41.162681 quits 09:40:41.163128 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 291 === End of file server.cmd === Start of file valgrind291 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind291 test 0289...[FTP resume upload but denied access to local file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind289 ../src/curl -q --output log/59/curl289.out --include --trace-ascii log/59/trace289 --trace-config all --trace-time ftp://127.0.0.1:43961/289 -T log/59/illegal-nonexistent-file -C - > log/59/stdout289 2> log/59/stderr289 curl returned 1, when expecting 26 289: exit FAILED == Contents of files in the log/59/ dir after test 289 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind289 ../src/curl -q --output log/59/curl289.out --include --trace-ascii log/59/trace289 --trace-config all --trace-time ftp://127.0.0.1:43961/289 -T log/59/illegal-nonexistent-file -C - > log/59/stdout289 2> log/59/stderr289 === End of file commands.log === Start of file ftp_server.log 09:40:41.827887 ====> Client connect 09:40:41.829301 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:41.833531 < "USER anonymous" 09:40:41.835934 > "331 We are happy you popped in![CR][LF]" 09:40:41.839161 < "PASS ftp@example.com" 09:40:41.840672 > "230 Welcome you silly person[CR][LF]" 09:40:41.843395 < "PWD" 09:40:41.844735 > "257 "/" is current directory[CR][LF]" 09:40:41.849242 < "EPSV" 09:40:41.849539 ====> Passive DATA channel requested by client 09:40:41.849700 DATA sockfilt for passive data channel starting... 09:40:41.864232 DATA sockfilt for passive data channelCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind294 ../src/curl -q --output log/62/curl294.out --include --trace-ascii log/62/trace294 --trace-config all --trace-time ftp://127.0.0.1:38963/294/ --ftp-account "data for acct" > log/62/stdout294 2> log/62/stderr294 started (pid 89705) 09:40:41.865156 DATA sockfilt for passive data channel listens on port 35055 09:40:41.865564 > "229 Entering Passive Mode (|||35055|)[LF]" 09:40:41.865975 Client has been notified that DATA conn will be accepted on port 35055 09:40:41.869618 Client connects to port 35055 09:40:41.870095 ====> Client established passive DATA connection on port 35055 09:40:41.870958 < "TYPE I" 09:40:41.871360 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:41.874909 < "SIZE verifiedserver" 09:40:41.875359 > "213 17[CR][LF]" 09:40:41.878068 < "RETR verifiedserver" 09:40:41.879020 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:41.880187 =====> Closing passive DATA connection... 09:40:41.880401 Server disconnects passive DATA connection 09:40:41.883809 Server disconnected passive DATA connection 09:40:41.884115 DATA sockfilt for passive data channel quits (pid 89705) 09:40:41.886046 DATA sockfilt for passive data channel quit (pid 89705) 09:40:41.886281 =====> Closed passive DATA connection 09:40:41.888125 > "226 File transfer complete[CR][LF]" 09:40:41.923636 < "QUIT" 09:40:41.924453 > "221 bye bye baby[CR][LF]" 09:40:41.928865 MAIN sockfilt said DISC 09:40:41.929195 ====> Client disconnected 09:40:41.929681 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.080195 ====> Client connect 09:40:42.083078 Received DATA (on stdin) 09:40:42.083264 > 160 bytes data, server => client 09:40:42.083382 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:42.083579 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:42.083707 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:42.084560 < 16 bytes data, client => server 09:40:42.084704 'USER anonymous\r\n' 09:40:42.089649 Received DATA (on stdin) 09:40:42.089821 > 33 bytes data, server => client 09:40:42.089949 '331 We are happy you popped in!\r\n' 09:40:42.090994 < 22 bytes data, client => server 09:40:42.091293 'PASS ftp@example.com\r\n' 09:40:42.093274 Received DATA (on stdin) 09:40:42.093421 > 30 bytes data, server => client 09:40:42.093682 '230 Welcome you silly person\r\n' 09:40:42.095741 < 5 bytes data, client => server 09:40:42.096023 'PWD\r\n' 09:40:42.097800 Received DATA (on stdin) 09:40:42.098082 > 30 bytes data, server => client 09:40:42.099272 '257 "/" is current directory\r\n' 09:40:42.101105 < 6 bytes data, client => server 09:40:42.101418 'EPSV\r\n' 09:40:42.120008 Received DATA (on stdin) 09:40:42.120153 > 38 bytes data, server => client 09:40:42.120242 '229 Entering Passive Mode (|||35055|)\n' 09:40:42.122240 < 8 bytes data, client => server 09:40:42.122643 'TYPE I\r\n' 09:40:42.125364 Received DATA (on stdin) 09:40:42.125593 > 33 bytes data, server => client 09:40:42.125705 '200 I modify TYPE as you wanted\r\n' 09:40:42.126588 < 21 bytes data, client => server 09:40:42.126761 'SIZE verifiedserver\r\n' 09:40:42.129369 Received DATA (on stdin) 09:40:42.129580 > 8 bytes data, server => client 09:40:42.129684 '213 17\r\n' 09:40:42.130260 < 21 bytes data, client => server 09:40:42.130400 'RETR verifiedserver\r\n' 09:40:42.134371 Received DATA (on stdin) 09:40:42.134601 > 29 bytes data, server => client 09:40:42.134701 '150 Binary junk (17 bytes).\r\n' 09:40:42.140384 Received DATA (on stdin) 09:40:42.140706 > 28 bytes data, server => client 09:40:42.141221 '226 File transfer complete\r\n' 09:40:42.176402 < 6 bytes data, client => server 09:40:42.176667 'QUIT\r\n' 09:40:42.177786 Received DATA (on stdin) 09:40:42.177944 > 18 bytes data, server => client 09:40:42.178517 '221 bye bye baby\r\n' 09:40:42.179093 ====> Client disconnect 09:40:42.183738 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:41.116379 Running IPv4 version 09:40:41.116978 Listening on port 35055 09:40:41.117375 Wrote pid 89705 to log/59/server/ftp_sockdata.pid 09:40:41.117648 Received PING (on stdin) 09:40:41.118292 Received PORT (on stdin) 09:40:41.121289 ====> Client connect 09:40:41.135029 Received DATA (on stdin) 09:40:41.135174 > 17 bytes data, server => client 09:40:41.135252 'WE ROOLZ: 78816\r\n' 09:40:41.135683 Received DISC (on stdin) 09:40:41.135842 ====> Client forcibly disconnected 09:40:41.138144 Received QUIT (on stdin) 09:40:41.138287 quits 09:40:41.138768 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 289 === End of file server.cmd === Start of file valgrind289 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind289 test 0294...[FTP --ftp-account on ACCT request] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind294 ../src/curl -q --output log/62/curl294.out --include --trace-ascii log/62/trace294 --trace-config all --trace-time ftp://127.0.0.1:38963/294/ --ftp-account "data for acct" > log/62/stdout294 2> log/62/stderr294 294: protocol FAILED! There was no content at all in the file log/62/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/62/ dir after test 294 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind294 ../src/curl -q --output log/62/curl294.out --include --trace-ascii log/62/trace294 --trace-config all --trace-time ftp://127.0.0.1:38963/294/ --ftp-account "data for acct" > log/62/stdout294 2> log/62/stderr294 === End of file commands.log === Start of file ftp_server.log 09:40:42.043336 ====> Client connect 09:40:42.044727 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:42.052527 < "USER anonymous" 09:40:42.055312 > "331 We are happy you popped in![CR][LF]" 09:40:42.057542 < "PASS ftp@example.com" 09:40:42.059576 > "230 Welcome you silly person[CR][LF]" 09:40:42.061817 < "PWD" 09:40:42.062221 > "257 "/" is current directory[CR][LF]" 09:40:42.066447 < "EPSV" 09:40:42.066718 ====> Passive DATA channel requested by client 09:40:42.067039 DATA sockfilt for passive data channel starting... 09:40:42.084405 DATA sockfilt for passive data channel started (pid 89992) 09:40:42.086081 DATA sockfilt for passive data channel listens on port 36473 09:40:42.086561 > "229 Entering Passive Mode (|||36473|)[LF]" 09:40:42.086902 Client has been notified that DATA conn will be accepted on port 36473 09:40:42.088655 Client connects to port 36473 09:40:42.089080 ====> Client established passive DATA conneCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind299 ../src/curl -q --output log/23/curl299.out --include --trace-ascii log/23/trace299 --trace-config all --trace-time -x http://127.0.0.1:42467 -u michal:aybabtu ftp://host.com/we/want/299 > log/23/stdout299 2> log/23/stderr299 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind292 ../src/curl -q --output log/31/curl292.out --include --trace-ascii log/31/trace292 --trace-config all --trace-time http://127.0.0.1:45557/292 --max-filesize 1000 > log/31/stdout292 2> log/31/stderr292 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind275 ../src/curl -q --output log/21/curl275.out --include --trace-ascii log/21/trace275 --trace-config all --trace-time http://remotesite.com.275:34827/we/want/that/page/275 -p -x 127.0.0.1:43963 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:34827/we/want/that/page/275 > log/21/stdout275 2> log/21/stderr275 ction on port 36473 09:40:42.090152 < "TYPE I" 09:40:42.090491 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:42.095334 < "SIZE verifiedserver" 09:40:42.095847 > "213 17[CR][LF]" 09:40:42.100527 < "RETR verifiedserver" 09:40:42.101023 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:42.101825 =====> Closing passive DATA connection... 09:40:42.102058 Server disconnects passive DATA connection 09:40:42.106573 Server disconnected passive DATA connection 09:40:42.106960 DATA sockfilt for passive data channel quits (pid 89992) 09:40:42.109518 DATA sockfilt for passive data channel quit (pid 89992) 09:40:42.110017 =====> Closed passive DATA connection 09:40:42.111270 > "226 File transfer complete[CR][LF]" 09:40:42.151337 < "QUIT" 09:40:42.155955 > "221 bye bye baby[CR][LF]" 09:40:42.164226 MAIN sockfilt said DISC 09:40:42.164530 ====> Client disconnected 09:40:42.165262 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.296333 ====> Client connect 09:40:42.299573 Received DATA (on stdin) 09:40:42.299741 > 160 bytes data, server => client 09:40:42.299834 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:42.300002 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:42.300114 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:42.304765 < 16 bytes data, client => server 09:40:42.304928 'USER anonymous\r\n' 09:40:42.306699 Received DATA (on stdin) 09:40:42.306859 > 33 bytes data, server => client 09:40:42.309756 '331 We are happy you popped in!\r\n' 09:40:42.310431 < 22 bytes data, client => server 09:40:42.310660 'PASS ftp@example.com\r\n' 09:40:42.312686 Received DATA (on stdin) 09:40:42.312839 > 30 bytes data, server => client 09:40:42.313634 '230 Welcome you silly person\r\n' 09:40:42.314192 < 5 bytes data, client => server 09:40:42.314338 'PWD\r\n' 09:40:42.317726 Received DATA (on stdin) 09:40:42.317903 > 30 bytes data, server => client 09:40:42.318011 '257 "/" is current directory\r\n' 09:40:42.319193 < 6 bytes data, client => server 09:40:42.319343 'EPSV\r\n' 09:40:42.340406 Received DATA (on stdin) 09:40:42.340643 > 38 bytes data, server => client 09:40:42.340746 '229 Entering Passive Mode (|||36473|)\n' 09:40:42.342574 < 8 bytes data, client => server 09:40:42.344653 'TYPE I\r\n' 09:40:42.344791 Received DATA (on stdin) 09:40:42.344888 > 33 bytes data, server => client 09:40:42.344981 '200 I modify TYPE as you wanted\r\n' 09:40:42.346802 < 21 bytes data, client => server 09:40:42.346946 'SIZE verifiedserver\r\n' 09:40:42.349894 Received DATA (on stdin) 09:40:42.350045 > 8 bytes data, server => client 09:40:42.350140 '213 17\r\n' 09:40:42.353333 < 21 bytes data, client => server 09:40:42.353597 'RETR verifiedserver\r\n' 09:40:42.359562 Received DATA (on stdin) 09:40:42.359779 > 29 bytes data, server => client 09:40:42.359887 '150 Binary junk (17 bytes).\r\n' 09:40:42.364080 Received DATA (on stdin) 09:40:42.364237 > 28 bytes data, server => client 09:40:42.364632 '226 File transfer complete\r\n' 09:40:42.403157 < 6 bytes data, client => server 09:40:42.403338 'QUIT\r\n' 09:40:42.405721 Received DATA (on stdin) 09:40:42.405873 > 18 bytes data, server => client 09:40:42.413606 '221 bye bye baby\r\n' 09:40:42.417580 ====> Client disconnect 09:40:42.419314 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:42.336239 Running IPv4 version 09:40:42.336848 Listening on port 36473 09:40:42.337348 Wrote pid 89992 to log/62/server/ftp_sockdata.pid 09:40:42.337756 Received PING (on stdin) 09:40:42.338600 Received PORT (on stdin) 09:40:42.342065 ====> Client connect 09:40:42.355579 Received DATA (on stdin) 09:40:42.355758 > 17 bytes data, server => client 09:40:42.355843 'WE ROOLZ: 78462\r\n' 09:40:42.356144 Received DISC (on stdin) 09:40:42.356304 ====> Client forcibly disconnected 09:40:42.361311 Received QUIT (on stdin) 09:40:42.361566 quits 09:40:42.362090 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 332 Give me an ACCT now REPLY ACCT 230 Thank-you for the ACCT Testnum 294 === End of file server.cmd === Start of file valgrind294 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind294 test 0299...[FTP over HTTP proxy with user:pass not in url] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind299 ../src/curl -q --output log/23/curl299.out --include --trace-ascii log/23/trace299 --trace-config all --trace-time -x http://127.0.0.1:42467 -u michal:aybabtu ftp://host.com/we/want/299 > log/23/stdout299 2> log/23/stderr299 299: protocol FAILED! There was no content at all in the file log/23/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/23/ dir after test 299 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind299 ../src/curl -q --output log/23/curl299.out --include --trace-ascii log/23/trace299 --trace-config all --trace-time -x http://127.0.0.1:42467 -u michal:aybabtu ftp://host.com/we/want/299 > log/23/stdout299 2> log/23/stderr299 === End of file commands.log === Start of file http_server.log 09:40:42.326936 ====> Client connect 09:40:42.327263 accept_connection 3 returned 4 09:40:42.328098 accept_connection 3 returned 0 09:40:42.328296 Read 93 bytes 09:40:42.328401 Process 93 bytes request 09:40:42.328665 Got request: GET /verifiedserver HTTP/1.1 09:40:42.328776 Are-we-friendly question received 09:40:42.329042 Wrote request (93 bytes) input to log/23/server.input 09:40:42.329266 Identifying ourselves as friends 09:40:42.331364 Response sent (56 bytes) and written to log/23/server.response 09:40:42.331682 special request received, no persistency 09:40:42.331778 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42467... * Connected to 127.0.0.1 (127.0.0.1) port 42467 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42467 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73788 === End of file http_verify.out === Start of file server.cmd Testnum 299 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73788 === End of file server.response === Start of file valgrind299 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind299 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/21/server/http2_server.pid" --logfile "log/21/http2_server.log" --logdir "log/21" --portfile log/21/server/http2_server.port --config log/21/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 88297 port 43963 * pid http-proxy => 88297 88297 test 0275...[HTTP CONNECT with proxytunnel getting two URLs from the same host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind275 ../src/curl -q --output log/21/curl275.out --include --trace-ascii log/21/trace275 --trace-config all --trace-time http://remotesite.com.275:34827/we/want/that/page/275 -p -x 127.0.0.1:43963 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:34827/we/want/that/page/275 > log/21/stdout275 2> log/21/stderr275 275: protocol FAILED! There was no content at all in the file log/21/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/21/ dir after test 275 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind275 ../src/curl -q --output log/21/curl275.out --include --trace-ascii log/21/trace275 --trace-config all --trace-time http://remotesite.com.275:34827/we/want/that/page/275 -p -x 127.0.0.1:43963 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:34827/we/want/that/page/275 > log/21/stdout275 2> log/21/stderr275 === End of file commands.log === Start of file http2_server.log 09:40:41.436544 Run as proxy, CONNECT to host 127.0.0.1 09:40:41.437385 Running HTTP IPv4 version on port 43963 09:40:41.437956 Wrote pid 88297 to log/21/server/http2_server.pid 09:40:41.438307 Wrote port 43963 to log/21/server/http2_server.port === End of file http2_server.log === Start of file http_server.log 09:40:41.102976 ====> Client connect 09:40:41.103269 accept_connection 3 returned 4 09:40:41.103420 accept_connection 3 returned 0 09:40:41.103753 Read 93 bytes 09:40:41.103850 Process 93 bytes request 09:40:41.103947 Got request: GET /verifiedserver HTTP/1.1 09:40:41.104027 Are-we-friendly question received 09:40:41.104251 Wrote request (93 bytes) input to log/21/server.input 09:40:41.104425 Identifying ourselves as friends 09:40:41.108706 Response sent (56 bytes) and written to log/21/server.response 09:40:41.108815 special request received, no persistency 09:40:41.108884 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34827... * Connected to 127.0.0.1 (127.0.0.1) port 34827 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34827 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73789 === End of file http_verify.out === Start of file server.cmd Testnum 275 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73789 === End of file server.response === Start of file valgrind275 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind275 test 0292...[HTTP GET with maximum filesize not exceeded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind292 ../src/curl -q --output log/31/curl292.out --include --trace-ascii log/31/trace292 --trace-config all --trace-time http://127.0.0.1:45557/292 --max-filesize 1000 > log/31/stdout292 2> log/31/stderr292 292: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 292 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind292 ../src/curl -q --output log/31/curl292.out --include --trace-ascii log/31/trace292 --trace-config all --trace-time http://127.0.0.1:45557/292 --max-filesize 1000 > log/31/stdout292 2> log/31/stderr292 === End of file commands.log === Start of file http_server.log 09:40:42.190975 ====> Client connect 09:40:42.191295 accept_connection 3 returned 4 09:40:42.191589 accept_connection 3 returned 0 09:40:42.191924 Read 93 bytes 09:40:42.192045 Process 93 bytes request 09:40:42.192152 Got request: GET /verifiedserver HTTP/1.1 09:40:42.192257 Are-we-friendly question received 09:40:42.192592 Wrote request (93 bytes) input to log/31/server.input 09:40:42.192784 Identifying ourselves as friends 09:40:42.197907 Response sent (56 bytes) and written to log/31/server.response 09:40:42.198047 special request received, no persistency 09:40:42.198128 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind296 ../src/curl -q --output log/60/curl296.out --include --trace-ascii log/60/trace296 --trace-config all --trace-time --ftp-method multicwd ftp://127.0.0.1:41385/first/second/third/296 > log/60/stdout296 2> log/60/stderr296 .0.1:45557... * Connected to 127.0.0.1 (127.0.0.1) port 45557 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45557 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73776 === End of file http_verify.out === Start of file server.cmd Testnum 292 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73776 === End of file server.response === Start of file valgrind292 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind292 test 0296...[FTP CWD with --ftp-method multicwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind296 ../src/curl -q --output log/60/curl296.out --include --trace-ascii log/60/trace296 --trace-config all --trace-time --ftp-method multicwd ftp://127.0.0.1:41385/first/second/third/296 > log/60/stdout296 2> log/60/stderr296 296: protocol FAILED! There was no content at all in the file log/60/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/60/ dir after test 296 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind296 ../src/curl -q --output log/60/curl296.out --include --trace-ascii log/60/trace296 --trace-config all --trace-time --ftp-method multicwd ftp://127.0.0.1:41385/first/second/third/296 > log/60/stdout296 2> log/60/stderr296 === End of file commands.log === Start of file ftp_server.log 09:40:42.048913 ====> Client connect 09:40:42.050475 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:42.054052 < "USER anonymous" 09:40:42.054594 > "331 We are happy you popped in![CR][LF]" 09:40:42.059342 < "PASS ftp@example.com" 09:40:42.063977 > "230 Welcome you silly person[CR][LF]" 09:40:42.066309 < "PWD" 09:40:42.066862 > "257 "/" is current directory[CR][LF]" 09:40:42.069233 < "EPSV" 09:40:42.069554 ====> Passive DATA channel requested by client 09:40:42.069868 DATA sockfilt for passive data channel starting... 09:40:42.082902 DATA sockfilt for passive data channel started (pid 89994) 09:40:42.084199 DATA sockfilt for passive data channel listens on port 46395 09:40:42.085146 > "229 Entering Passive Mode (|||46395|)[LF]" 09:40:42.085892 Client has been notified that DATA conn will be accepted on port 46395 09:40:42.088408 Client connects to port 46395 09:40:42.088733 ====> Client established passive DATA connection on port 46395 09:40:42.089903 < "TYPE I" 09:40:42.091925 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:42.092638 < "SIZE verifiedserver" 09:40:42.093936 > "213 17[CR][LF]" 09:40:42.095501 < "RETR verifiedserver" 09:40:42.096293 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:42.098143 =====> Closing passive DATA connection... 09:40:42.098386 Server disconnects passive DATA connection 09:40:42.099931 Server disconnected passive DATA connection 09:40:42.100228 DATA sockfilt for passive data channel quits (pid 89994) 09:40:42.102329 DATA sockfilt for passive data channel quit (pid 89994) 09:40:42.102592 =====> Closed passive DATA connection 09:40:42.103004 > "226 File transfer complete[CR][LF]" 09:40:42.140840 < "QUIT" 09:40:42.142151 > "221 bye bye baby[CR][LF]" 09:40:42.146265 MAIN sockfilt said DISC 09:40:42.147189 ====> Client disconnected 09:40:42.147818 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.299879 ====> Client connect 09:40:42.304566 Received DATA (on stdin) 09:40:42.304716 > 160 bytes data, server => client 09:40:42.304814 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:42.304909 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:42.304994 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:42.306607 < 16 bytes data, client => server 09:40:42.306786 'USER anonymous\r\n' 09:40:42.310554 Received DATA (on stdin) 09:40:42.310718 > 33 bytes data, server => client 09:40:42.310817 '331 We are happy you popped in!\r\n' 09:40:42.311564 < 22 bytes data, client => server 09:40:42.311705 'PASS ftp@example.com\r\n' 09:40:42.314187 Received DATA (on stdin) 09:40:42.314338 > 30 bytes data, server => client 09:40:42.318184 '230 Welcome you silly person\r\n' 09:40:42.319031 < 5 bytes data, client => server 09:40:42.319203 'PWD\r\n' 09:40:42.321040 Received DATA (on stdin) 09:40:42.321184 > 30 bytes data, server => client 09:40:42.321274 '257 "/" is current directory\r\n' 09:40:42.322054 < 6 bytes data, client => server 09:40:42.322201 'EPSV\r\n' 09:40:42.338316 Received DATA (on stdin) 09:40:42.338568 > 38 bytes data, server => client 09:40:42.339941 '229 Entering Passive Mode (|||46395|)\n' 09:40:42.341376 < 8 bytes data, client => server 09:40:42.341616 'TYPE I\r\n' 09:40:42.344109 Received DATA (on stdin) 09:40:42.344261 > 33 bytes data, server => client 09:40:42.344502 '200 I modify TYPE as you wanted\r\n' 09:40:42.345106 < 21 bytes data, client => server 09:40:42.345243 'SIZE verifiedserver\r\n' 09:40:42.346896 Received DATA (on stdin) 09:40:42.347043 > 8 bytes data, server => client 09:40:42.347210 '213 17\r\n' 09:40:42.348357 < 21 bytes data, client => server 09:40:42.348568 'RETR verifiedserver\r\n' 09:40:42.349656 Received DATA (on stdin) 09:40:42.349799 > 29 bytes data, server => client 09:40:42.350535 '150 Binary junk (17 bytes).\r\n' 09:40:42.357033 Received DATA (on stdin) 09:40:42.357168 > 28 bytes data, server => client 09:40:42.357256 '226 File transfer complete\r\n' 09:40:42.393655 < 6 bytes data, client => server 09:40:42.393827 'QUIT\r\n' 09:40:42.395052 Received DATA (on stdin) 09:40:42.395192 > 18 bytes data, server => client 09:40:42.395382 '221 bye bye baby\r\n' 09:40:42.399652 ====> Client disconnect 09:40:42.400278 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:42.335018 Running IPv4 version 09:40:42.335629 Listening on port 46395 09:40:42.336006 Wrote pid 89994 to log/60/server/ftp_sockdata.pid 09:40:42.336182 Received PING (on stdin) 09:40:42.337108 Received PORT (on stdin) 09:40:42.341832 ====> Client connect 09:40:42.350888 Received DATA (on stdin) 09:40:42.351037 > 17 bytes data, server => client 09:40:42.351119 'WE ROOLZ: 78622\r\n' 09:40:42.3523CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind295 ../src/curl -q --output log/50/curl295.out --include --trace-ascii log/50/trace295 --trace-config all --trace-time ftp://127.0.0.1:36567/295/ > log/50/stdout295 2> log/50/stderr295 18 Received DISC (on stdin) 09:40:42.352553 ====> Client forcibly disconnected 09:40:42.354202 Received QUIT (on stdin) 09:40:42.354329 quits 09:40:42.354845 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 296 === End of file server.cmd === Start of file valgrind296 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind296 test 0295...[FTP ACCT request without --ftp-account] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind295 ../src/curl -q --output log/50/curl295.out --include --trace-ascii log/50/trace295 --trace-config all --trace-time ftp://127.0.0.1:36567/295/ > log/50/stdout295 2> log/50/stderr295 295: protocol FAILED! There was no content at all in the file log/50/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/50/ dir after test 295 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind295 ../src/curl -q --output log/50/curl295.out --include --trace-ascii log/50/trace295 --trace-config all --trace-time ftp://127.0.0.1:36567/295/ > log/50/stdout295 2> log/50/stderr295 === End of file commands.log === Start of file ftp_server.log 09:40:42.130629 ====> Client connect 09:40:42.132202 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:42.147884 < "USER anonymous" 09:40:42.149110 > "331 We are happy you popped in![CR][LF]" 09:40:42.150244 < "PASS ftp@example.com" 09:40:42.151419 > "230 Welcome you silly person[CR][LF]" 09:40:42.152675 < "PWD" 09:40:42.153544 > "257 "/" is current directory[CR][LF]" 09:40:42.155468 < "EPSV" 09:40:42.155862 ====> Passive DATA channel requested by client 09:40:42.156081 DATA sockfilt for passive data channel starting... 09:40:42.169962 DATA sockfilt for passive data channel started (pid 90092) 09:40:42.171032 DATA sockfilt for passive data channel listens on port 33069 09:40:42.171508 > "229 Entering Passive Mode (|||33069|)[LF]" 09:40:42.171852 Client has been notified that DATA conn will be accepted on port 33069 09:40:42.175014 Client connects to port 33069 09:40:42.175339 ====> Client established passive DATA connection on port 33069 09:40:42.176195 < "TYPE I" 09:40:42.177648 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:42.179147 < "SIZE verifiedserver" 09:40:42.181252 > "213 17[CR][LF]" 09:40:42.182071 < "RETR verifiedserver" 09:40:42.183504 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:42.184863 =====> Closing passive DATA connection... 09:40:42.185118 Server disconnects passive DATA connection 09:40:42.186439 Server disconnected passive DATA connection 09:40:42.186704 DATA sockfilt for passive data channel quits (pid 90092) 09:40:42.189908 DATA sockfilt for passive data channel quit (pid 90092) 09:40:42.190188 =====> Closed passive DATA connection 09:40:42.191197 > "226 File transfer complete[CR][LF]" 09:40:42.227147 < "QUIT" 09:40:42.228402 > "221 bye bye baby[CR][LF]" 09:40:42.232294 MAIN sockfilt said DISC 09:40:42.233372 ====> Client disconnected 09:40:42.233997 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.383714 ====> Client connect 09:40:42.386241 Received DATA (on stdin) 09:40:42.386406 > 160 bytes data, server => client 09:40:42.386771 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:42.386885 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:42.386984 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:42.400653 < 16 bytes data, client => server 09:40:42.400822 'USER anonymous\r\n' 09:40:42.402006 Received DATA (on stdin) 09:40:42.402158 > 33 bytes data, server => client 09:40:42.402333 '331 We are happy you popped in!\r\n' 09:40:42.403035 < 22 bytes data, client => server 09:40:42.403176 'PASS ftp@example.com\r\n' 09:40:42.404308 Received DATA (on stdin) 09:40:42.404519 > 30 bytes data, server => client 09:40:42.404711 '230 Welcome you silly person\r\n' 09:40:42.405618 < 5 bytes data, client => server 09:40:42.405759 'PWD\r\n' 09:40:42.406917 Received DATA (on stdin) 09:40:42.407059 > 30 bytes data, server => client 09:40:42.407545 '257 "/" is current directory\r\n' 09:40:42.408332 < 6 bytes data, client => server 09:40:42.408566 'EPSV\r\n' 09:40:42.426031 Received DATA (on stdin) 09:40:42.426209 > 38 bytes data, server => client 09:40:42.426305 '229 Entering Passive Mode (|||33069|)\n' 09:40:42.428253 < 8 bytes data, client => server 09:40:42.428390 'TYPE I\r\n' 09:40:42.430254 Received DATA (on stdin) 09:40:42.430405 > 33 bytes data, server => client 09:40:42.430690 '200 I modify TYPE as you wanted\r\n' 09:40:42.431918 < 21 bytes data, client => server 09:40:42.432080 'SIZE verifiedserver\r\n' 09:40:42.433288 Received DATA (on stdin) 09:40:42.433517 > 8 bytes data, server => client 09:40:42.433741 '213 17\r\n' 09:40:42.434357 < 21 bytes data, client => server 09:40:42.434700 'RETR verifiedserver\r\n' 09:40:42.436162 Received DATA (on stdin) 09:40:42.436317 > 29 bytes data, server => client 09:40:42.436576 '150 Binary junk (17 bytes).\r\n' 09:40:42.444194 Received DATA (on stdin) 09:40:42.444335 > 28 bytes data, server => client 09:40:42.444592 '226 File transfer complete\r\n' 09:40:42.479917 < 6 bytes data, client => server 09:40:42.480104 'QUIT\r\n' 09:40:42.481235 Received DATA (on stdin) 09:40:42.481391 > 18 bytes data, server => client 09:40:42.481674 '221 bye bye baby\r\n' 09:40:42.485583 ====> Client disconnect 09:40:42.486393 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:42.421927 Running IPv4 version 09:40:42.422689 Listening on port 33069 09:40:42.423111 Wrote pid 90092 to log/50/server/ftp_sockdata.pid 09:40:42.423295 Received PING (on stdin) 09:40:42.424125 Received PORT (on stdin) 09:40:42.427968 ====> Client connect 09:40:42.437775 Received DATA (on stdin) 09:40:42.437923 > 17 bytes data, server => client 09:40:42.439052 'WE ROOLZ: 77995\r\n' 09:40:42.439560 Received DISC (on stdin) 09:40:42.439758 ====> Client forcibly disconnected 09:40:42.441665 Received QUIT (on stdin) 09:40:42.441819 quits 09:40:42.442306 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 332 Give me an ACCT now REPLY PWD 530 No ACCT, go away Testnum 295 === End of file server.cmd === Start of file valgrind295 valgrind: Fatal errCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind333 ../src/curl -q --output log/48/curl333.out --include --trace-ascii log/48/trace333 --trace-config all --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/48/stdout333 2> log/48/stderr333 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind283 ../src/curl -q --output log/63/curl283.out --include --trace-ascii log/63/trace283 --trace-config all --trace-time tftp://127.0.0.1:43379//invalid-file --tftp-blksize 1024 > log/63/stdout283 2> log/63/stderr283 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind318 ../src/curl -q --output log/49/curl318.out --include --trace-ascii log/49/trace318 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:42667 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/49/stdout318 2> log/49/stderr318 or at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind295 * starts no server test 0333...[Try a non-boolean command line option with --no-] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind333 ../src/curl -q --output log/48/curl333.out --include --trace-ascii log/48/trace333 --trace-config all --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/48/stdout333 2> log/48/stderr333 curl returned 1, when expecting 2 333: exit FAILED == Contents of files in the log/48/ dir after test 333 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind333 ../src/curl -q --output log/48/curl333.out --include --trace-ascii log/48/trace333 --trace-config all --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/48/stdout333 2> log/48/stderr333 === End of file commands.log === Start of file server.cmd Testnum 333 === End of file server.cmd === Start of file valgrind333 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind333 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/63/server/tftp_server.pid" --portfile "log/63/server/tftp_server.port" --logfile "log/63/tftp_server.log" --logdir "log/63" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: TFTP server on PID 88938 port 43379 * pid tftp => 88938 88938 test 0283...[TFTP retrieve on invalid file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind283 ../src/curl -q --output log/63/curl283.out --include --trace-ascii log/63/trace283 --trace-config all --trace-time tftp://127.0.0.1:43379//invalid-file --tftp-blksize 1024 > log/63/stdout283 2> log/63/stderr283 283: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 283 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind283 ../src/curl -q --output log/63/curl283.out --include --trace-ascii log/63/trace283 --trace-config all --trace-time tftp://127.0.0.1:43379//invalid-file --tftp-blksize 1024 > log/63/stdout283 2> log/63/stderr283 === End of file commands.log === Start of file server.cmd Testnum 283 === End of file server.cmd === Start of file tftp_server.log 09:40:41.846178 Wrote pid 88938 to log/63/server/tftp_server.pid 09:40:41.847038 Wrote port 43379 to log/63/server/tftp_server.port 09:40:41.847165 Running IPv4 version on port UDP/43379 === End of file tftp_server.log === Start of file valgrind283 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind283 test 0318...[HTTP with custom Authorization: and redirect to new host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind318 ../src/curl -q --output log/49/curl318.out --include --trace-ascii log/49/trace318 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:42667 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/49/stdout318 2> log/49/stderr318 318: protocol FAILED! There was no content at all in the file log/49/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/49/ dir after test 318 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind318 ../src/curl -q --output log/49/curl318.out --include --trace-ascii log/49/trace318 --traCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind293 ../src/curl -q --output log/46/curl293.out --include --trace-ascii log/46/trace293 --trace-config all --trace-time http://127.0.0.1:46523/293 --max-filesize 2 > log/46/stdout293 2> log/46/stderr293 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind326 ../src/curl -q --output log/36/curl326.out --trace-ascii log/36/trace326 --trace-config all --trace-time http://127.0.0.1:44255/326 --raw > log/36/stdout326 2> log/36/stderr326 ce-config all --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:42667 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/49/stdout318 2> log/49/stderr318 === End of file commands.log === Start of file http_server.log 09:40:42.603851 ====> Client connect 09:40:42.604186 accept_connection 3 returned 4 09:40:42.604365 accept_connection 3 returned 0 09:40:42.604648 Read 93 bytes 09:40:42.604778 Process 93 bytes request 09:40:42.604874 Got request: GET /verifiedserver HTTP/1.1 09:40:42.605037 Are-we-friendly question received 09:40:42.605309 Wrote request (93 bytes) input to log/49/server.input 09:40:42.605616 Identifying ourselves as friends 09:40:42.606509 Response sent (56 bytes) and written to log/49/server.response 09:40:42.606653 special request received, no persistency 09:40:42.606734 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42667... * Connected to 127.0.0.1 (127.0.0.1) port 42667 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42667 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73760 === End of file http_verify.out === Start of file server.cmd Testnum 318 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73760 === End of file server.response === Start of file valgrind318 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind318 test 0293...[HTTP GET with maximum filesize exceeded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind293 ../src/curl -q --output log/46/curl293.out --include --trace-ascii log/46/trace293 --trace-config all --trace-time http://127.0.0.1:46523/293 --max-filesize 2 > log/46/stdout293 2> log/46/stderr293 293: protocol FAILED! There was no content at all in the file log/46/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/46/ dir after test 293 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind293 ../src/curl -q --output log/46/curl293.out --include --trace-ascii log/46/trace293 --trace-config all --trace-time http://127.0.0.1:46523/293 --max-filesize 2 > log/46/stdout293 2> log/46/stderr293 === End of file commands.log === Start of file http_server.log 09:40:42.343843 ====> Client connect 09:40:42.344126 accept_connection 3 returned 4 09:40:42.344280 accept_connection 3 returned 0 09:40:42.344422 Read 93 bytes 09:40:42.344610 Process 93 bytes request 09:40:42.344704 Got request: GET /verifiedserver HTTP/1.1 09:40:42.344779 Are-we-friendly question received 09:40:42.345009 Wrote request (93 bytes) input to log/46/server.input 09:40:42.345189 Identifying ourselves as friends 09:40:42.348981 Response sent (56 bytes) and written to log/46/server.response 09:40:42.349093 special request received, no persistency 09:40:42.349171 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46523... * Connected to 127.0.0.1 (127.0.0.1) port 46523 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46523 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 75714 === End of file http_verify.out === Start of file server.cmd Testnum 293 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 75714 === End of file server.response === Start of file valgrind293 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind293 test 0326...[HTTP GET chunked data in raw mode] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind326 ../src/curl -q --output log/36/curl326.out --trace-ascii log/36/trace326 --trace-config all --trace-time http://127.0.0.1:44255/326 --raw > log/36/stdout326 2> log/36/stderr326 326: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 326 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind326 ../src/curl -q --output log/36/curl326.out --trace-ascii log/36/trace326 --trace-config all --trace-time http://127.0.0.1:44255/326 --raw > log/36/stdout326 2> log/36/stderr326 === End of file commands.log === Start of file http_server.log 09:40:42.738857 ====> Client connect 09:40:42.739204 accept_connection 3 returned 4 09:40:42.739391 accept_connection 3 returned 0 09:40:42.740132 Read 93 bytes 09:40:42.740294 Process 93 bytes reCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind315 ../src/curl -q --output log/43/curl315.out --include --trace-ascii log/43/trace315 --trace-config all --trace-time http://127.0.0.1:41267/315 --compressed > log/43/stdout315 2> log/43/stderr315 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind314 ../src/curl -q --output log/39/curl314.out --include --trace-ascii log/39/trace314 --trace-config all --trace-time http://127.0.0.1:42899/314 --compressed > log/39/stdout314 2> log/39/stderr314 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind317 ../src/curl -q --output log/57/curl317.out --include --trace-ascii log/57/trace317 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:35945 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/57/stdout317 2> log/57/stderr317 quest 09:40:42.740386 Got request: GET /verifiedserver HTTP/1.1 09:40:42.740574 Are-we-friendly question received 09:40:42.740880 Wrote request (93 bytes) input to log/36/server.input 09:40:42.741097 Identifying ourselves as friends 09:40:42.741847 Response sent (56 bytes) and written to log/36/server.response 09:40:42.741963 special request received, no persistency 09:40:42.742036 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44255... * Connected to 127.0.0.1 (127.0.0.1) port 44255 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44255 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 77175 === End of file http_verify.out === Start of file server.cmd Testnum 326 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 77175 === End of file server.response === Start of file valgrind326 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind326 test 0315...[HTTP GET brotli compressed content with broken header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind315 ../src/curl -q --output log/43/curl315.out --include --trace-ascii log/43/trace315 --trace-config all --trace-time http://127.0.0.1:41267/315 --compressed > log/43/stdout315 2> log/43/stderr315 315: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 315 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind315 ../src/curl -q --output log/43/curl315.out --include --trace-ascii log/43/trace315 --trace-config all --trace-time http://127.0.0.1:41267/315 --compressed > log/43/stdout315 2> log/43/stderr315 === End of file commands.log === Start of file http_server.log 09:40:42.578695 ====> Client connect 09:40:42.579117 accept_connection 3 returned 4 09:40:42.579308 accept_connection 3 returned 0 09:40:42.579538 Read 93 bytes 09:40:42.579706 Process 93 bytes request 09:40:42.579835 Got request: GET /verifiedserver HTTP/1.1 09:40:42.579928 Are-we-friendly question received 09:40:42.580207 Wrote request (93 bytes) input to log/43/server.input 09:40:42.580888 Identifying ourselves as friends 09:40:42.582292 Response sent (56 bytes) and written to log/43/server.response 09:40:42.582431 special request received, no persistency 09:40:42.582625 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd Testnum 315 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file valgrind315 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind315 test 0314...[HTTP GET brotli compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind314 ../src/curl -q --output log/39/curl314.out --include --trace-ascii log/39/trace314 --trace-config all --trace-time http://127.0.0.1:42899/314 --compressed > log/39/stdout314 2> log/39/stderr314 314: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 314 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind314 ../src/curl -q --output log/39/curl314.out --include --trace-ascii log/39/trace314 --trace-config all --trace-time http://127.0.0.1:42899/314 --compressed > log/39/stdout314 2> log/39/stderr314 === End of file commands.log === Start of file http_server.log 09:40:42.565854 ====> Client connect 09:40:42.566182 accept_connection 3 returned 4 09:40:42.566384 accept_connection 3 returned 0 09:40:42.566753 Read 93 bytes 09:40:42.566868 Process 93 bytes request 09:40:42.566970 Got request: GET /verifiedserver HTTP/1.1 09:40:42.567093 Are-we-friendly question received 09:40:42.567353 Wrote request (93 bytes) input to log/39/server.input 09:40:42.567685 Identifying ourselves as friends 09:40:42.568544 Response sent (56 bytes) and written to log/39/server.response 09:40:42.568669 special request received, no persistency 09:40:42.568741 ====> Client disconnect 0 === End of file http_server.log === StCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind327 ../src/curl -q --output log/54/curl327.out --include --trace-ascii log/54/trace327 --trace-config all --trace-time http://127.0.0.1:44921/we/want/327 -b none -c log/54/cookies327 http://127.0.0.1:44921/we/want/3270002 > log/54/stdout327 2> log/54/stderr327 art of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 314 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind314 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind314 test 0317...[HTTP with custom Authorization: and redirect to new host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind317 ../src/curl -q --output log/57/curl317.out --include --trace-ascii log/57/trace317 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:35945 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/57/stdout317 2> log/57/stderr317 317: protocol FAILED! There was no content at all in the file log/57/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/57/ dir after test 317 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind317 ../src/curl -q --output log/57/curl317.out --include --trace-ascii log/57/trace317 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:35945 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/57/stdout317 2> log/57/stderr317 === End of file commands.log === Start of file http_server.log 09:40:42.633046 ====> Client connect 09:40:42.633392 accept_connection 3 returned 4 09:40:42.633727 accept_connection 3 returned 0 09:40:42.633874 Read 93 bytes 09:40:42.633971 Process 93 bytes request 09:40:42.634057 Got request: GET /verifiedserver HTTP/1.1 09:40:42.634134 Are-we-friendly question received 09:40:42.634358 Wrote request (93 bytes) input to log/57/server.input 09:40:42.638018 Identifying ourselves as friends 09:40:42.639277 Response sent (56 bytes) and written to log/57/server.response 09:40:42.641702 special request received, no persistency 09:40:42.641840 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35945... * Connected to 127.0.0.1 (127.0.0.1) port 35945 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35945 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73753 === End of file http_verify.out === Start of file server.cmd Testnum 317 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73753 === End of file server.response === Start of file valgrind317 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind317 test 0327...[HTTP with cookiejar without cookies left] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind327 ../src/curl -q --output log/54/curl327.out --include --trace-ascii log/54/trace327 --trace-config all --trace-time http://127.0.0.1:44921/we/want/327 -b none -c log/54/cookies327 http://127.0.0.1:44921/we/want/3270002 > log/54/stdout327 2> log/54/stderr327 327: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 327 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind327 ../src/curl -q --output log/54/curl327.out --include --trace-ascii log/54/trace327 --trace-config all --trace-time http://127.0.0.1:44921/we/want/327 -b none -c log/54/cookies327 http://127.0.0.1:44921/we/want/3270002 > log/54/stdout327 2> log/54/stderr327 === End of file commands.log === Start of file http_server.log 09:40:42.748919 ====> Client connect 09:40:42.749236 accept_connection 3 returned 4 09:40:42.749402 accept_connection 3 returned 0 09:40:42.749647 Read 93 bytes 09:40:42.749754 Process 93 bytes request 09:40:42.749851 Got request: GET /verifiedserver HTTP/1.1 09:40:42.749940 Are-we-friendly question received 09:40:42.750191 Wrote request (93 bytes) input to log/54/server.input 09:40:42.750390 Identifying ourselves as friends 09:40:42.751257 Response sent (56 bytes) and written to log/54/server.response 09:40:42.751374 special request received, no persistency 09:40:42.751533 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * uCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind328 ../src/curl -q --output log/14/curl328.out --include --trace-ascii log/14/trace328 --trace-config all --trace-time http://127.0.0.1:43309/hello/328 --compressed > log/14/stdout328 2> log/14/stderr328 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind350 ../src/curl -q --output log/12/curl350.out --include --trace-ascii log/12/trace350 --trace-config all --trace-time ftp://127.0.0.1:32959// --ftp-method multicwd > log/12/stdout350 2> log/12/stderr350 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind334 ../src/curl -q --output log/56/curl334.out --include --trace-ascii log/56/trace334 --trace-config all --trace-time http://127.0.0.1:43265/want/334 > log/56/stdout334 2> log/56/stderr334 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind316 ../src/curl -q --output log/52/curl316.out --include --trace-ascii log/52/trace316 --trace-config all --trace-time http://127.0.0.1:40089/316 --compressed > log/52/stdout316 2> log/52/stderr316 sing HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 327 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind327 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind327 test 0328...[HTTP with "Content-Encoding: none] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind328 ../src/curl -q --output log/14/curl328.out --include --trace-ascii log/14/trace328 --trace-config all --trace-time http://127.0.0.1:43309/hello/328 --compressed > log/14/stdout328 2> log/14/stderr328 328: protocol FAILED! There was no content at all in the file log/14/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/14/ dir after test 328 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind328 ../src/curl -q --output log/14/curl328.out --include --trace-ascii log/14/trace328 --trace-config all --trace-time http://127.0.0.1:43309/hello/328 --compressed > log/14/stdout328 2> log/14/stderr328 === End of file commands.log === Start of file http_server.log 09:40:42.846977 ====> Client connect 09:40:42.847307 accept_connection 3 returned 4 09:40:42.847618 accept_connection 3 returned 0 09:40:42.851578 Read 93 bytes 09:40:42.851742 Process 93 bytes request 09:40:42.851829 Got request: GET /verifiedserver HTTP/1.1 09:40:42.851901 Are-we-friendly question received 09:40:42.852135 Wrote request (93 bytes) input to log/14/server.input 09:40:42.852327 Identifying ourselves as friends 09:40:42.853173 Response sent (56 bytes) and written to log/14/server.response 09:40:42.853295 special request received, no persistency 09:40:42.853373 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43309... * Connected to 127.0.0.1 (127.0.0.1) port 43309 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43309 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73795 === End of file http_verify.out === Start of file server.cmd Testnum 328 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73795 === End of file server.response === Start of file valgrind328 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind328 test 0350...[FTP root dir list multicwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind350 ../src/curl -q --output log/12/curl350.out --include --trace-ascii log/12/trace350 --trace-config all --trace-time ftp://127.0.0.1:32959// --ftp-method multicwd > log/12/stdout350 2> log/12/stderr350 350: protocol FAILED! There was no content at all in the file log/12/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/12/ dir after test 350 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind350 ../src/curl -q --output log/12/curl350.out --include --trace-ascii log/12/trace350 --trace-config all --trace-time ftp://127.0.0.1:32959// --ftp-method multicwd > log/12/stdout350 2> log/12/stderr350 === End of file commands.log === Start of file ftp_server.log 09:40:42.844311 ====> Client connect 09:40:42.848010 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:42.850282 < "USER anonymous" 09:40:42.851882 > "331 We are happy you popped in![CR][LF]" 09:40:42.853363 < "PASS ftp@example.com" 09:40:42.854174 > "230 Welcome you silly person[CR][LF]" 09:40:42.856005 < "PWD" 09:40:42.857163 > "257 "/" is current directory[CR][LF]" 09:40:42.858845 < "EPSV" 09:40:42.859179 ====> Passive DATA channel requested by client 09:40:42.859390 DATA sockfilt for passive data channel starting... 09:40:42.876508 DATA sockfilt for passive data channel started (pid 91181) 09:40:42.878194 DATA sockfilt for passive data channel listens on port 38895 09:40:42.879132 > "229 Entering Passive Mode (|||38895|)[LF]" 09:40:42.879400 Client has been notified that DATA conn will be accepted on port 38895 09:40:42.880991 Client connects to port 38895 09:40:42.881456 ====> Client established passive DATA connection on port 38895 09:40:42.882352 < "TYPE I" 09:40:42.882731 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:42.884713 < "SIZE verifiedserver" 09:40:42.886000 > "213 17[CR][LF]" 09:40:42.890290 < "RETR verifiedserver" 09:40:42.891403 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:42.892354 =====> Closing passive DATA connection... 09:40:42.892596 Server disconnects passive DATA connection 09:40:42.893636 Server disconnected passive DATA connection 09:40:42.893994 DATA sockfilt for passive data channel quits (pid 91181) 09:40:42.896260 DATA sockfilt for passive data channel quit (pid 91181) 09:40:42.896510 =====> Closed passive DATA connection 09:40:42.896916 > "226 File transfer complete[CR][LF]" 09:40:42.934685 < "QUIT" 09:40:42.936084 > "221 bye bye baby[CR][LF]" 09:40:42.937029 MAIN sockfilt said DISC 09:40:42.937324 ====> Client disconnected 09:40:42.937928 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:43.090789 ====> Client connect 09:40:43.099555 Received DATA (on stdin) 09:40:43.099725 > 160 bytes data, server => client 09:40:43.101667 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:43.101808 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:43.101890 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:43.102754 < 16 bytes data, client => server 09:40:43.102924 'USER anonymous\r\n' 09:40:43.104390 Received DATA (on stdin) 09:40:43.104684 > 33 bytes data, server => client 09:40:43.104892 '331 We are happy you popped in!\r\n' 09:40:43.106086 < 22 bytes data, client => server 09:40:43.106222 'PASS ftp@example.com\r\n' 09:40:43.107526 Received DATA (on stdin) 09:40:43.107673 > 30 bytes data, server => client 09:40:43.108199 '230 Welcome you silly person\r\n' 09:40:43.108881 < 5 bytes data, client => server 09:40:43.109017 'PWD\r\n' 09:40:43.110097 Received DATA (on stdin) 09:40:43.110235 > 30 bytes data, server => client 09:40:43.110405 '257 "/" is current directory\r\n' 09:40:43.111880 < 6 bytes data, client => server 09:40:43.112030 'EPSV\r\n' 09:40:43.132820 Received DATA (on stdin) 09:40:43.132982 > 38 bytes data, server => client 09:40:43.133094 '229 Entering Passive Mode (|||38895|)\n' 09:40:43.134790 < 8 bytes data, client => server 09:40:43.135009 'TYPE I\r\n' 09:40:43.136511 Received DATA (on stdin) 09:40:43.136664 > 33 bytes data, server => client 09:40:43.136752 '200 I modify TYPE as you wanted\r\n' 09:40:43.137640 < 21 bytes data, client => server 09:40:43.137778 'SIZE verifiedserver\r\n' 09:40:43.138931 Received DATA (on stdin) 09:40:43.139077 > 8 bytes data, server => client 09:40:43.139247 '213 17\r\n' 09:40:43.140674 < 21 bytes data, client => server 09:40:43.141054 'RETR verifiedserver\r\n' 09:40:43.144542 Received DATA (on stdin) 09:40:43.144695 > 29 bytes data, server => client 09:40:43.144775 '150 Binary junk (17 bytes).\r\n' 09:40:43.150575 Received DATA (on stdin) 09:40:43.150733 > 28 bytes data, server => client 09:40:43.150814 '226 File transfer complete\r\n' 09:40:43.187538 < 6 bytes data, client => server 09:40:43.187719 'QUIT\r\n' 09:40:43.188925 Received DATA (on stdin) 09:40:43.189104 > 18 bytes data, server => client 09:40:43.189274 '221 bye bye baby\r\n' 09:40:43.190348 ====> Client disconnect 09:40:43.191936 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:42.128182 Running IPv4 version 09:40:42.128981 Listening on port 38895 09:40:42.129511 Wrote pid 91181 to log/12/server/ftp_sockdata.pid 09:40:42.129737 Received PING (on stdin) 09:40:42.130949 Received PORT (on stdin) 09:40:42.134347 ====> Client connect 09:40:42.145692 Received DATA (on stdin) 09:40:42.145852 > 17 bytes data, server => client 09:40:42.145939 'WE ROOLZ: 77501\r\n' 09:40:42.146689 Received DISC (on stdin) 09:40:42.146860 ====> Client forcibly disconnected 09:40:42.148174 Received QUIT (on stdin) 09:40:42.148327 quits 09:40:42.148854 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 350 === End of file server.cmd === Start of file valgrind350 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind350 test 0334...[HTTP 204 No content with chunked header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind334 ../src/curl -q --output log/56/curl334.out --include --trace-ascii log/56/trace334 --trace-config all --trace-time http://127.0.0.1:43265/want/334 > log/56/stdout334 2> log/56/stderr334 334: protocol FAILED! There was no content at all in the file log/56/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/56/ dir after test 334 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind334 ../src/curl -q --output log/56/curl334.out --include --trace-ascii log/56/trace334 --trace-config all --trace-time http://127.0.0.1:43265/want/334 > log/56/stdout334 2> log/56/stderr334 === End of file commands.log === Start of file http_server.log 09:40:42.867088 ====> Client connect 09:40:42.867382 accept_connection 3 returned 4 09:40:42.867748 accept_connection 3 returned 0 09:40:42.867901 Read 93 bytes 09:40:42.867987 Process 93 bytes request 09:40:42.868064 Got request: GET /verifiedserver HTTP/1.1 09:40:42.868142 Are-we-friendly question received 09:40:42.868356 Wrote request (93 bytes) input to log/56/server.input 09:40:42.868749 Identifying ourselves as friends 09:40:42.869819 Response sent (56 bytes) and written to log/56/server.response 09:40:42.869927 special request received, no persistency 09:40:42.869998 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43265... * Connected to 127.0.0.1 (127.0.0.1) port 43265 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43265 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73754 === End of file http_verify.out === Start of file server.cmd Testnum 334 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73754 === End of file server.response === Start of file valgrind334 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected funCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind284 ../src/curl -q --output log/64/curl284.out --include --trace-ascii log/64/trace284 --trace-config all --trace-time tftp://127.0.0.1:35711//284 > log/64/stdout284 2> log/64/stderr284 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind360 ../src/curl -q --output log/6/curl360.out --include --trace-ascii log/6/trace360 --trace-config all --trace-time http://127.0.0.1:37181/360 --fail-with-body --fail > log/6/stdout360 2> log/6/stderr360 ction valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind334 test 0316...[HTTP GET brotli compressed content of size more than CURL_MAX_WRITE_SIZE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind316 ../src/curl -q --output log/52/curl316.out --include --trace-ascii log/52/trace316 --trace-config all --trace-time http://127.0.0.1:40089/316 --compressed > log/52/stdout316 2> log/52/stderr316 316: protocol FAILED! There was no content at all in the file log/52/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/52/ dir after test 316 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind316 ../src/curl -q --output log/52/curl316.out --include --trace-ascii log/52/trace316 --trace-config all --trace-time http://127.0.0.1:40089/316 --compressed > log/52/stdout316 2> log/52/stderr316 === End of file commands.log === Start of file http_server.log 09:40:42.632971 ====> Client connect 09:40:42.633261 accept_connection 3 returned 4 09:40:42.633415 accept_connection 3 returned 0 09:40:42.634110 Read 93 bytes 09:40:42.634252 Process 93 bytes request 09:40:42.634346 Got request: GET /verifiedserver HTTP/1.1 09:40:42.634419 Are-we-friendly question received 09:40:42.634741 Wrote request (93 bytes) input to log/52/server.input 09:40:42.634914 Identifying ourselves as friends 09:40:42.635405 Response sent (56 bytes) and written to log/52/server.response 09:40:42.635590 special request received, no persistency 09:40:42.635663 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40089... * Connected to 127.0.0.1 (127.0.0.1) port 40089 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40089 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73758 === End of file http_verify.out === Start of file server.cmd Testnum 316 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73758 === End of file server.response === Start of file valgrind316 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind316 test 0360...[Error on both --fail-with-body and --fail] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind360 ../src/curl -q --output log/6/curl360.out --include --trace-ascii log/6/trace360 --trace-config all --trace-time http://127.0.0.1:37181/360 --fail-with-body --fail > log/6/stdout360 2> log/6/stderr360 curl returned 1, when expecting 2 360: exit FAILED == Contents of files in the log/6/ dir after test 360 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind360 ../src/curl -q --output log/6/curl360.out --include --trace-ascii log/6/trace360 --trace-config all --trace-time http://127.0.0.1:37181/360 --fail-with-body --fail > log/6/stdout360 2> log/6/stderr360 === End of file commands.log === Start of file http_server.log 09:40:43.252920 ====> Client connect 09:40:43.253235 accept_connection 3 returned 4 09:40:43.253416 accept_connection 3 returned 0 09:40:43.253701 Read 93 bytes 09:40:43.253794 Process 93 bytes request 09:40:43.253882 Got request: GET /verifiedserver HTTP/1.1 09:40:43.253963 Are-we-friendly question received 09:40:43.254219 Wrote request (93 bytes) input to log/6/server.input 09:40:43.254526 Identifying ourselves as friends 09:40:43.259011 Response sent (56 bytes) and written to log/6/server.response 09:40:43.259157 special request received, no persistency 09:40:43.259241 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37181... * Connected to 127.0.0.1 (127.0.0.1) port 37181 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37181 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73803 === End of file http_verify.out === Start of file server.cmd Testnum 360 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73803 === End of file server.response === Start of file valgrind360 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind338 ../src/curl -q --output log/25/curl338.out --include --trace-ascii log/25/trace338 --trace-config all --trace-time http://127.0.0.1:41727/338 --next http://127.0.0.1:41727/338 --anyauth -u foo:moo > log/25/stdout338 2> log/25/stderr338 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind349 ../src/curl -q --output log/32/curl349.out --include --trace-ascii log/32/trace349 --trace-config all --trace-time http://127.0.0.1:45607/349 --fail-with-body > log/32/stdout349 2> log/32/stderr349 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind298 ../src/curl -q --output log/40/curl298.out --include --trace-ascii log/40/trace298 --trace-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:45501/first/second/th%69rd/298 > log/40/stdout298 2> log/40/stderr298 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind336 ../src/curl -q --output log/44/curl336.out --include --trace-ascii log/44/trace336 --trace-config all --trace-time ftp://127.0.0.1:41125/336 --range 3-6 > log/44/stdout336 2> log/44/stderr336 stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind360 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/64/server/tftp_server.pid" --portfile "log/64/server/tftp_server.port" --logfile "log/64/tftp_server.log" --logdir "log/64" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: TFTP server on PID 89046 port 35711 * pid tftp => 89046 89046 test 0284...[TFTP retrieve of boundary case 512 byte file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind284 ../src/curl -q --output log/64/curl284.out --include --trace-ascii log/64/trace284 --trace-config all --trace-time tftp://127.0.0.1:35711//284 > log/64/stdout284 2> log/64/stderr284 284: protocol FAILED! There was no content at all in the file log/64/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/64/ dir after test 284 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind284 ../src/curl -q --output log/64/curl284.out --include --trace-ascii log/64/trace284 --trace-config all --trace-time tftp://127.0.0.1:35711//284 > log/64/stdout284 2> log/64/stderr284 === End of file commands.log === Start of file server.cmd Testnum 284 === End of file server.cmd === Start of file tftp_server.log 09:40:41.943762 Wrote pid 89046 to log/64/server/tftp_server.pid 09:40:41.944387 Wrote port 35711 to log/64/server/tftp_server.port 09:40:41.944602 Running IPv4 version on port UDP/35711 === End of file tftp_server.log === Start of file valgrind284 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind284 test 0338...[ANYAUTH connection reuse of non-authed connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind338 ../src/curl -q --output log/25/curl338.out --include --trace-ascii log/25/trace338 --trace-config all --trace-time http://127.0.0.1:41727/338 --next http://127.0.0.1:41727/338 --anyauth -u foo:moo > log/25/stdout338 2> log/25/stderr338 338: protocol FAILED! There was no content at all in the file log/25/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/25/ dir after test 338 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind338 ../src/curl -q --output log/25/curl338.out --include --trace-ascii log/25/trace338 --trace-config all --trace-time http://127.0.0.1:41727/338 --next http://127.0.0.1:41727/338 --anyauth -u foo:moo > log/25/stdout338 2> log/25/stderr338 === End of file commands.log === Start of file http_server.log 09:40:42.932634 ====> Client connect 09:40:42.932962 accept_connection 3 returned 4 09:40:42.933128 accept_connection 3 returned 0 09:40:42.933267 Read 93 bytes 09:40:42.933364 Process 93 bytes request 09:40:42.933524 Got request: GET /verifiedserver HTTP/1.1 09:40:42.933633 Are-we-friendly question received 09:40:42.933865 Wrote request (93 bytes) input to log/25/server.input 09:40:42.934033 Identifying ourselves as friends 09:40:42.938010 Response sent (56 bytes) and written to log/25/server.response 09:40:42.938167 special request received, no persistency 09:40:42.938272 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41727... * Connected to 127.0.0.1 (127.0.0.1) port 41727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73784 === End of file http_verify.out === Start of file server.cmd connection-monitor Testnum 338 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73784 === End of file server.response === Start of file valgrind338 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind338 test 0349...[HTTP GET --fail-with-body on HTTP error return] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind349 ../src/curl -q --output log/32/curl349.out --include --trace-ascii log/32/trace349 --trace-config aCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind319 ../src/curl -q --output log/53/curl319.out --trace-ascii log/53/trace319 --trace-config all --trace-time http://127.0.0.1:34639/319 --raw > log/53/stdout319 2> log/53/stderr319 ll --trace-time http://127.0.0.1:45607/349 --fail-with-body > log/32/stdout349 2> log/32/stderr349 349: protocol FAILED! There was no content at all in the file log/32/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/32/ dir after test 349 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind349 ../src/curl -q --output log/32/curl349.out --include --trace-ascii log/32/trace349 --trace-config all --trace-time http://127.0.0.1:45607/349 --fail-with-body > log/32/stdout349 2> log/32/stderr349 === End of file commands.log === Start of file http_server.log 09:40:43.151763 ====> Client connect 09:40:43.152097 accept_connection 3 returned 4 09:40:43.152268 accept_connection 3 returned 0 09:40:43.153281 Read 93 bytes 09:40:43.153683 Process 93 bytes request 09:40:43.153872 Got request: GET /verifiedserver HTTP/1.1 09:40:43.153966 Are-we-friendly question received 09:40:43.154231 Wrote request (93 bytes) input to log/32/server.input 09:40:43.154417 Identifying ourselves as friends 09:40:43.155257 Response sent (56 bytes) and written to log/32/server.response 09:40:43.155368 special request received, no persistency 09:40:43.155515 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45607... * Connected to 127.0.0.1 (127.0.0.1) port 45607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45607 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73778 === End of file http_verify.out === Start of file server.cmd Testnum 349 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73778 === End of file server.response === Start of file valgrind349 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind349 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/40/server/ftp_server.pid" --logfile "log/40/ftp_server.log" --logdir "log/40" --portfile "log/40/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 45501 (log/40/server/ftp_server.port) RUN: FTP server is PID 89681 port 45501 * pid ftp => 89681 89681 test 0298...[FTP CWD with --ftp-method nocwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind298 ../src/curl -q --output log/40/curl298.out --include --trace-ascii log/40/trace298 --trace-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:45501/first/second/th%69rd/298 > log/40/stdout298 2> log/40/stderr298 298: protocol FAILED! There was no content at all in the file log/40/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/40/ dir after test 298 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind298 ../src/curl -q --output log/40/curl298.out --include --trace-ascii log/40/trace298 --trace-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:45501/first/second/th%69rd/298 > log/40/stdout298 2> log/40/stderr298 === End of file commands.log === Start of file ftp_server.log 09:40:42.532167 FTP server listens on port IPv4/45501 09:40:42.533161 logged pid 89681 in log/40/server/ftp_server.pid 09:40:42.533414 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.783090 Running IPv4 version 09:40:42.783769 Listening on port 45501 09:40:42.784194 Wrote pid 90576 to log/40/server/ftp_sockctrl.pid 09:40:42.784616 Wrote port 45501 to log/40/server/ftp_server.port 09:40:42.784948 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 298 === End of file server.cmd === Start of file valgrind298 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind298 test 0336...[FTP range download when SIZE doesn't work] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind336 ../src/curl -q --output log/44/curl336.out --include --trace-ascii log/44/trace336 --trace-config all --trace-time ftp://127.0.0.1:41125/336 --range 3-6 > log/44/stdout336 2> log/44/stderr336 336: protocol FAILED! There was no content at all in the file log/44/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/44/ dir after test 336 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind336 ../src/curl -q --output log/44/curl336.out --include --trace-ascii log/44/trace336 --trace-config all --trace-time ftp://127.0.0.1:41125/336 --range 3-6 > log/44/stdout336 2> log/44/stderr336 === End of file commands.log =CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind341 ../src/curl -q --output log/37/curl341.out --include --trace-ascii log/37/trace341 --trace-config all --trace-time http://127.0.0.1:37551/341 --etag-compare log/37/etag341 > log/37/stdout341 2> log/37/stderr341 == Start of file ftp_server.log 09:40:42.636914 ====> Client connect 09:40:42.638539 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:42.643470 < "USER anonymous" 09:40:42.643933 > "331 We are happy you popped in![CR][LF]" 09:40:42.648457 < "PASS ftp@example.com" 09:40:42.651994 > "230 Welcome you silly person[CR][LF]" 09:40:42.654170 < "PWD" 09:40:42.655022 > "257 "/" is current directory[CR][LF]" 09:40:42.659596 < "EPSV" 09:40:42.660130 ====> Passive DATA channel requested by client 09:40:42.660419 DATA sockfilt for passive data channel starting... 09:40:42.674327 DATA sockfilt for passive data channel started (pid 90833) 09:40:42.675283 DATA sockfilt for passive data channel listens on port 41419 09:40:42.675737 > "229 Entering Passive Mode (|||41419|)[LF]" 09:40:42.676082 Client has been notified that DATA conn will be accepted on port 41419 09:40:42.678998 Client connects to port 41419 09:40:42.679288 ====> Client established passive DATA connection on port 41419 09:40:42.680041 < "TYPE I" 09:40:42.680388 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:42.682976 < "SIZE verifiedserver" 09:40:42.683336 > "213 17[CR][LF]" 09:40:42.688842 < "RETR verifiedserver" 09:40:42.689274 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:42.689979 =====> Closing passive DATA connection... 09:40:42.690194 Server disconnects passive DATA connection 09:40:42.693136 Server disconnected passive DATA connection 09:40:42.693400 DATA sockfilt for passive data channel quits (pid 90833) 09:40:42.695484 DATA sockfilt for passive data channel quit (pid 90833) 09:40:42.695707 =====> Closed passive DATA connection 09:40:42.696130 > "226 File transfer complete[CR][LF]" 09:40:42.734630 < "QUIT" 09:40:42.735407 > "221 bye bye baby[CR][LF]" 09:40:42.736882 MAIN sockfilt said DISC 09:40:42.737187 ====> Client disconnected 09:40:42.737651 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.888597 ====> Client connect 09:40:42.894574 Received DATA (on stdin) 09:40:42.894735 > 160 bytes data, server => client 09:40:42.894819 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:42.894903 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:42.894984 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:42.895848 < 16 bytes data, client => server 09:40:42.896000 'USER anonymous\r\n' 09:40:42.899617 Received DATA (on stdin) 09:40:42.899778 > 33 bytes data, server => client 09:40:42.899858 '331 We are happy you popped in!\r\n' 09:40:42.900823 < 22 bytes data, client => server 09:40:42.900998 'PASS ftp@example.com\r\n' 09:40:42.902606 Received DATA (on stdin) 09:40:42.902756 > 30 bytes data, server => client 09:40:42.906210 '230 Welcome you silly person\r\n' 09:40:42.907072 < 5 bytes data, client => server 09:40:42.907218 'PWD\r\n' 09:40:42.908244 Received DATA (on stdin) 09:40:42.908384 > 30 bytes data, server => client 09:40:42.909733 '257 "/" is current directory\r\n' 09:40:42.910606 < 6 bytes data, client => server 09:40:42.910773 'EPSV\r\n' 09:40:42.930095 Received DATA (on stdin) 09:40:42.930243 > 38 bytes data, server => client 09:40:42.930328 '229 Entering Passive Mode (|||41419|)\n' 09:40:42.932020 < 8 bytes data, client => server 09:40:42.932177 'TYPE I\r\n' 09:40:42.934393 Received DATA (on stdin) 09:40:42.934593 > 33 bytes data, server => client 09:40:42.934672 '200 I modify TYPE as you wanted\r\n' 09:40:42.935892 < 21 bytes data, client => server 09:40:42.936030 'SIZE verifiedserver\r\n' 09:40:42.938609 Received DATA (on stdin) 09:40:42.938757 > 8 bytes data, server => client 09:40:42.938833 '213 17\r\n' 09:40:42.939416 < 21 bytes data, client => server 09:40:42.939656 'RETR verifiedserver\r\n' 09:40:42.944107 Received DATA (on stdin) 09:40:42.944230 > 29 bytes data, server => client 09:40:42.944307 '150 Binary junk (17 bytes).\r\n' 09:40:42.950145 Received DATA (on stdin) 09:40:42.950267 > 28 bytes data, server => client 09:40:42.950351 '226 File transfer complete\r\n' 09:40:42.987546 < 6 bytes data, client => server 09:40:42.987718 'QUIT\r\n' 09:40:42.988784 Received DATA (on stdin) 09:40:42.988915 > 18 bytes data, server => client 09:40:42.989392 '221 bye bye baby\r\n' 09:40:42.990005 ====> Client disconnect 09:40:42.994566 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:42.926543 Running IPv4 version 09:40:42.927080 Listening on port 41419 09:40:42.927567 Wrote pid 90833 to log/44/server/ftp_sockdata.pid 09:40:42.927751 Received PING (on stdin) 09:40:42.928397 Received PORT (on stdin) 09:40:42.932354 ====> Client connect 09:40:42.944662 Received DATA (on stdin) 09:40:42.944801 > 17 bytes data, server => client 09:40:42.944881 'WE ROOLZ: 77468\r\n' 09:40:42.945144 Received DISC (on stdin) 09:40:42.945298 ====> Client forcibly disconnected 09:40:42.947402 Received QUIT (on stdin) 09:40:42.947731 quits 09:40:42.948177 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command REPLY SIZE 500 no such command Testnum 336 === End of file server.cmd === Start of file valgrind336 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind336 test 0319...[HTTP GET gobbledigook transfer-encoded data in raw mode] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind319 ../src/curl -q --output log/53/curl319.out --trace-ascii log/53/trace319 --trace-config all --trace-time http://127.0.0.1:34639/319 --raw > log/53/stdout319 2> log/53/stderr319 319: protocol FAILED! There was no content at all in the file log/53/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/53/ dir after test 319 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind319 ../src/curl -q --output log/53/curl319.out --trace-ascii log/53/trace319 --trace-config all --trace-time http://127.0.0.1:34639/319 --raw > log/53/stdout319 2> log/53/stderr319 === End of file commands.log === Start of file http_server.log 09:40:42.775984 ====> Client connect 09:40:42.776598 accept_connection 3 returned 4 09:40:42.776985 accept_connection 3 returned 0 09:40:42.777171 Read 93 bytes 09:40:42.777283 Process 93 bytes request 09:40:42.777548 Got request: GET /verifiedserver HTTP/1.1 09:40:42.777708 Are-we-friendly questioCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind330 ../src/curl -q --output log/42/curl330.out --include --trace-ascii log/42/trace330 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:42819 -H "Cookie: test=yes" --location > log/42/stdout330 2> log/42/stderr330 n received 09:40:42.778081 Wrote request (93 bytes) input to log/53/server.input 09:40:42.778264 Identifying ourselves as friends 09:40:42.779428 Response sent (56 bytes) and written to log/53/server.response 09:40:42.782694 special request received, no persistency 09:40:42.782774 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34639... * Connected to 127.0.0.1 (127.0.0.1) port 34639 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34639 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73761 === End of file http_verify.out === Start of file server.cmd Testnum 319 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73761 === End of file server.response === Start of file valgrind319 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind319 test 0341...[A non existing file with --etag-compare is just a blank] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind341 ../src/curl -q --output log/37/curl341.out --include --trace-ascii log/37/trace341 --trace-config all --trace-time http://127.0.0.1:37551/341 --etag-compare log/37/etag341 > log/37/stdout341 2> log/37/stderr341 341: protocol FAILED! There was no content at all in the file log/37/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/37/ dir after test 341 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind341 ../src/curl -q --output log/37/curl341.out --include --trace-ascii log/37/trace341 --trace-config all --trace-time http://127.0.0.1:37551/341 --etag-compare log/37/etag341 > log/37/stdout341 2> log/37/stderr341 === End of file commands.log === Start of file http_server.log 09:40:43.098729 ====> Client connect 09:40:43.099051 accept_connection 3 returned 4 09:40:43.099221 accept_connection 3 returned 0 09:40:43.099351 Read 93 bytes 09:40:43.099519 Process 93 bytes request 09:40:43.099642 Got request: GET /verifiedserver HTTP/1.1 09:40:43.099723 Are-we-friendly question received 09:40:43.099932 Wrote request (93 bytes) input to log/37/server.input 09:40:43.100095 Identifying ourselves as friends 09:40:43.102808 Response sent (56 bytes) and written to log/37/server.response 09:40:43.102920 special request received, no persistency 09:40:43.102990 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37551... * Connected to 127.0.0.1 (127.0.0.1) port 37551 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37551 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73772 === End of file http_verify.out === Start of file server.cmd Testnum 341 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73772 === End of file server.response === Start of file valgrind341 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind341 test 0330...[HTTP with custom Cookie: and redirect to new host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind330 ../src/curl -q --output log/42/curl330.out --include --trace-ascii log/42/trace330 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:42819 -H "Cookie: test=yes" --location > log/42/stdout330 2> log/42/stderr330 330: protocol FAILED! There was no content at all in the file log/42/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/42/ dir after test 330 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind330 ../src/curl -q --output log/42/curl330.out --include --trace-ascii log/42/trace330 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:42819 -H "Cookie: test=yes" --location > log/42/stdout330 2> log/42/stderr330 === End of file commands.log === Start of file http_server.log 09:40:42.804794 ====> Client connect 09:40:42.805097 accept_connection 3 returned 4 09:40:42.805261 accept_connection 3 returned 0 09:40:42.805402 Read 93 bytes 09:40:42.805597 Process 93 bytes request 09:40:42.805692 Got request: GET /verifiedserver HTTP/1.1 09:40:42.805771 Are-we-friendly question received 09:40:42.805990 Wrote request (93 bytes) input to log/42/server.input 09:40:42.806171 Identifying ourselves as friends 09:40:42.806940 Response sent (56 bytes) and written to log/42/server.response 09:40:42.807055 special request received, no CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind344 ../src/curl -q --output log/47/curl344.out --include --trace-ascii log/47/trace344 --trace-config all --trace-time http://127.0.0.1:41103/344 --etag-compare log/47/etag344 --etag-save log/47/etag344 > log/47/stdout344 2> log/47/stderr344 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind347 ../src/curl -q --output log/35/curl347.out --include --trace-ascii log/35/trace347 --trace-config all --trace-time http://127.0.0.1:43179/347 --etag-save log/35/etag347 > log/35/stdout347 2> log/35/stderr347 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind343 ../src/curl -q --output log/33/curl343.out --include --trace-ascii log/33/trace343 --trace-config all --trace-time http://127.0.0.1:36559/343 --etag-compare log/33/etag343 --etag-save log/33/out343 > log/33/stdout343 2> log/33/stderr343 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind348 ../src/curl -q --output log/22/curl348.out --include --trace-ascii log/22/trace348 --trace-config all --trace-time ftp://127.0.0.1:41867/348 -T log/22/test348.txt > log/22/stdout348 2> log/22/stderr348 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind286 ../src/curl -q --output log/34/curl286.out --include --trace-ascii log/34/trace286 --trace-config all --trace-time -T log/34/test286.txt tftp://127.0.0.1:35651// > log/34/stdout286 2> log/34/stderr286 persistency 09:40:42.807128 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42819... * Connected to 127.0.0.1 (127.0.0.1) port 42819 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42819 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73768 === End of file http_verify.out === Start of file server.cmd Testnum 330 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73768 === End of file server.response === Start of file valgrind330 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind330 test 0347...[--etag-save with blank incoming header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind347 ../src/curl -q --output log/35/curl347.out --include --trace-ascii log/35/trace347 --trace-config all --trace-time http://127.0.0.1:43179/347 --etag-save log/35/etag347 > log/35/stdout347 2> log/35/stderr347 347: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 347 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind347 ../src/curl -q --output log/35/curl347.out --include --trace-ascii log/35/trace347 --trace-config all --trace-time http://127.0.0.1:43179/347 --etag-save log/35/etag347 > log/35/stdout347 2> log/35/stderr347 === End of file commands.log === Start of file http_server.log 09:40:43.117967 ====> Client connect 09:40:43.118586 accept_connection 3 returned 4 09:40:43.118803 accept_connection 3 returned 0 09:40:43.119926 Read 93 bytes 09:40:43.120242 Process 93 bytes request 09:40:43.120383 Got request: GET /verifiedserver HTTP/1.1 09:40:43.120607 Are-we-friendly question received 09:40:43.120918 Wrote request (93 bytes) input to log/35/server.input 09:40:43.121205 Identifying ourselves as friends 09:40:43.125798 Response sent (56 bytes) and written to log/35/server.response 09:40:43.125928 special request received, no persistency 09:40:43.126003 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43179... * Connected to 127.0.0.1 (127.0.0.1) port 43179 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43179 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73771 === End of file http_verify.out === Start of file server.cmd Testnum 347 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73771 === End of file server.response === Start of file valgrind347 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind347 test 0344...[Both --etag-compare and -save store new Etag using non-existing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind344 ../src/curl -q --output log/47/curl344.out --include --trace-ascii log/47/trace344 --trace-config all --trace-time http://127.0.0.1:41103/344 --etag-compare log/47/etag344 --etag-save log/47/etag344 > log/47/stdout344 2> log/47/stderr344 344: protocol FAILED! There was no content at all in the file log/47/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/47/ dir after test 344 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind344 ../src/curl -q --output log/47/curl344.out --include --trace-ascii log/47/trace344 --trace-config all --trace-time http://127.0.0.1:41103/344 --etag-compare log/47/etag344 --etag-save log/47/etag344 > log/47/stdout344 2> log/47/stderr344 === End of file commands.log === Start of file http_server.log 09:40:43.122623 ====> Client connect 09:40:43.123020 accept_connection 3 returned 4 09:40:43.123214 accept_connection 3 returned 0 09:40:43.123363 Read 93 bytes 09:40:43.123560 Process 93 bytes request 09:40:43.123699 Got request: GET /verifiedserver HTTP/1.1 09:40:43.123811 Are-we-friendly question received 09:40:43.124144 Wrote request (93 bytes) input to log/47/server.input 09:40:43.124404 Identifying ourselves as friends 09:40:43.130308 Response sent (56 bytes) and written to log/47/server.response 09:40:43.130552 special request received, no persistency 09:40:43.130690 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41103... * Connected to 127.0.0.1 (127.0.0.1) port 41103 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41103 > User-Agent: CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind370 ../src/curl -q --output log/31/curl370.out --include --trace-ascii log/31/trace370 --trace-config all --trace-time http://127.0.0.1:47/370 --etag-save log/31/nowhere/etag370 > log/31/stdout370 2> log/31/stderr370 curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73762 === End of file http_verify.out === Start of file server.cmd Testnum 344 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73762 === End of file server.response === Start of file valgrind344 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind344 test 0348...[FTP upload file with 552 disk full response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind348 ../src/curl -q --output log/22/curl348.out --include --trace-ascii log/22/trace348 --trace-config all --trace-time ftp://127.0.0.1:41867/348 -T log/22/test348.txt > log/22/stdout348 2> log/22/stderr348 348: protocol FAILED! There was no content at all in the file log/22/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/22/ dir after test 348 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind348 ../src/curl -q --output log/22/curl348.out --include --trace-ascii log/22/trace348 --trace-config all --trace-time ftp://127.0.0.1:41867/348 -T log/22/test348.txt > log/22/stdout348 2> log/22/stderr348 === End of file commands.log === Start of file ftp_server.log 09:40:42.961890 ====> Client connect 09:40:42.963240 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:42.972478 < "USER anonymous" 09:40:42.972948 > "331 We are happy you popped in![CR][LF]" 09:40:42.977121 < "PASS ftp@example.com" 09:40:42.979004 > "230 Welcome you silly person[CR][LF]" 09:40:42.984300 < "PWD" 09:40:42.986131 > "257 "/" is current directory[CR][LF]" 09:40:42.986832 < "EPSV" 09:40:42.987095 ====> Passive DATA channel requested by client 09:40:42.987258 DATA sockfilt for passive data channel starting... 09:40:43.011884 DATA sockfilt for passive data channel started (pid 91319) 09:40:43.016060 DATA sockfilt for passive data channel listens on port 42031 09:40:43.016476 > "229 Entering Passive Mode (|||42031|)[LF]" 09:40:43.016718 Client has been notified that DATA conn will be accepted on port 42031 09:40:43.021933 Client connects to port 42031 09:40:43.022373 ====> Client established passive DATA connection on port 42031 09:40:43.027282 < "TYPE I" 09:40:43.027669 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:43.033516 < "SIZE verifiedserver" 09:40:43.036936 > "213 17[CR][LF]" 09:40:43.039870 < "RETR verifiedserver" 09:40:43.043003 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:43.044092 =====> Closing passive DATA connection... 09:40:43.044339 Server disconnects passive DATA connection 09:40:43.046877 Server disconnected passive DATA connection 09:40:43.047155 DATA sockfilt for passive data channel quits (pid 91319) 09:40:43.051685 DATA sockfilt for passive data channel quit (pid 91319) 09:40:43.052054 =====> Closed passive DATA connection 09:40:43.052411 > "226 File transfer complete[CR][LF]" 09:40:43.084855 < "QUIT" 09:40:43.088223 > "221 bye bye baby[CR][LF]" 09:40:43.092220 MAIN sockfilt said DISC 09:40:43.096008 ====> Client disconnected 09:40:43.096667 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:43.212804 ====> Client connect 09:40:43.217294 Received DATA (on stdin) 09:40:43.217562 > 160 bytes data, server => client 09:40:43.217673 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:43.217772 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:43.217855 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:43.222058 < 16 bytes data, client => server 09:40:43.222229 'USER anonymous\r\n' 09:40:43.228670 Received DATA (on stdin) 09:40:43.228855 > 33 bytes data, server => client 09:40:43.228934 '331 We are happy you popped in!\r\n' 09:40:43.229830 < 22 bytes data, client => server 09:40:43.230015 'PASS ftp@example.com\r\n' 09:40:43.231175 Received DATA (on stdin) 09:40:43.231305 > 30 bytes data, server => client 09:40:43.233078 '230 Welcome you silly person\r\n' 09:40:43.236655 < 5 bytes data, client => server 09:40:43.236892 'PWD\r\n' 09:40:43.238381 Received DATA (on stdin) 09:40:43.238583 > 30 bytes data, server => client 09:40:43.238756 '257 "/" is current directory\r\n' 09:40:43.239431 < 6 bytes data, client => server 09:40:43.239614 'EPSV\r\n' 09:40:43.272632 Received DATA (on stdin) 09:40:43.272827 > 38 bytes data, server => client 09:40:43.272907 '229 Entering Passive Mode (|||42031|)\n' 09:40:43.276935 < 8 bytes data, client => server 09:40:43.277081 'TYPE I\r\n' 09:40:43.285550 Received DATA (on stdin) 09:40:43.285701 > 33 bytes data, server => client 09:40:43.285788 '200 I modify TYPE as you wanted\r\n' 09:40:43.286396 < 21 bytes data, client => server 09:40:43.286610 'SIZE verifiedserver\r\n' 09:40:43.287823 Received DATA (on stdin) 09:40:43.287979 > 8 bytes data, server => client 09:40:43.290983 '213 17\r\n' 09:40:43.291717 < 21 bytes data, client => server 09:40:43.291862 'RETR verifiedserver\r\n' 09:40:43.294108 Received DATA (on stdin) 09:40:43.294258 > 29 bytes data, server => client 09:40:43.294499 '150 Binary junk (17 bytes).\r\n' 09:40:43.306611 Received DATA (on stdin) 09:40:43.306792 > 28 bytes data, server => client 09:40:43.306893 '226 File transfer complete\r\n' 09:40:43.337227 < 6 bytes data, client => server 09:40:43.337395 'QUIT\r\n' 09:40:43.342622 Received DATA (on stdin) 09:40:43.342772 > 18 bytes data, server => client 09:40:43.342860 '221 bye bye baby\r\n' 09:40:43.345633 ====> Client disconnect 09:40:43.346533 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:43.261236 Running IPv4 version 09:40:43.261861 Listening on port 42031 09:40:43.262262 Wrote pid 91319 to log/22/server/ftp_sockdata.pid 09:40:43.265170 Received PING (on stdin) 09:40:43.266060 Received PORT (on stdin) 09:40:43.275002 ====> Client connect 09:40:43.298392 Received DATA (on stdin) 09:40:43.298634 > 17 bytes data, server => client 09:40:43.298735 'WE ROOLZ: 77494\r\n' 09:40:43.299062 Received DISC (on stdin) 09:40:43.299221 ====> Client forcibly disconnected 09:40:43.303561 Received QUIT (on stdin) 09:40:43.303738 quits 09:40:43.304295 ============> sockfiCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind329 ../src/curl -q --output log/27/curl329.out --include --trace-ascii log/27/trace329 --trace-config all --trace-time http://127.0.0.1:42323/we/want/329 -b log/27/jar329.txt -b log/27/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:42323/we/want/3290002 > log/27/stdout329 2> log/27/stderr329 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind353 ../src/curl -q --output log/30/curl353.out --include --trace-ascii log/30/trace353 --trace-config all --trace-time ftp://127.0.0.1:42901/ --ftp-method singlecwd > log/30/stdout353 2> log/30/stderr353 lt quits === End of file ftp_sockdata.log === Start of file server.cmd STOR 552 disk full Testnum 348 === End of file server.cmd === Start of file test348.txt data to see that FTP works so does it? === End of file test348.txt === Start of file valgrind348 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind348 test 0343...[Both --etag-compare and --etag-save to save new Etag] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind343 ../src/curl -q --output log/33/curl343.out --include --trace-ascii log/33/trace343 --trace-config all --trace-time http://127.0.0.1:36559/343 --etag-compare log/33/etag343 --etag-save log/33/out343 > log/33/stdout343 2> log/33/stderr343 343: protocol FAILED! There was no content at all in the file log/33/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/33/ dir after test 343 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind343 ../src/curl -q --output log/33/curl343.out --include --trace-ascii log/33/trace343 --trace-config all --trace-time http://127.0.0.1:36559/343 --etag-compare log/33/etag343 --etag-save log/33/out343 > log/33/stdout343 2> log/33/stderr343 === End of file commands.log === Start of file etag343 "21025-dc7-39462498" === End of file etag343 === Start of file http_server.log 09:40:43.139815 ====> Client connect 09:40:43.140188 accept_connection 3 returned 4 09:40:43.140700 accept_connection 3 returned 0 09:40:43.141100 Read 93 bytes 09:40:43.141401 Process 93 bytes request 09:40:43.141874 Got request: GET /verifiedserver HTTP/1.1 09:40:43.142156 Are-we-friendly question received 09:40:43.142773 Wrote request (93 bytes) input to log/33/server.input 09:40:43.143320 Identifying ourselves as friends 09:40:43.144557 Response sent (56 bytes) and written to log/33/server.response 09:40:43.144682 special request received, no persistency 09:40:43.144757 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36559... * Connected to 127.0.0.1 (127.0.0.1) port 36559 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36559 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73773 === End of file http_verify.out === Start of file server.cmd Testnum 343 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73773 === End of file server.response === Start of file valgrind343 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind343 setenv TZ = GMT test 0329...[HTTP cookie with Max-Age=0] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind329 ../src/curl -q --output log/27/curl329.out --include --trace-ascii log/27/trace329 --trace-config all --trace-time http://127.0.0.1:42323/we/want/329 -b log/27/jar329.txt -b log/27/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:42323/we/want/3290002 > log/27/stdout329 2> log/27/stderr329 329: protocol FAILED! There was no content at all in the file log/27/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/27/ dir after test 329 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind329 ../src/curl -q --output log/27/curl329.out --include --trace-ascii log/27/trace329 --trace-config all --trace-time http://127.0.0.1:42323/we/want/329 -b log/27/jar329.txt -b log/27/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:42323/we/want/3290002 > log/27/stdout329 2> log/27/stderr329 === End of file commands.log === Start of file http_server.log 09:40:42.857907 ====> Client connect 09:40:42.858264 accept_connection 3 returned 4 09:40:42.858537 accept_connection 3 returned 0 09:40:42.862248 Read 93 bytes 09:40:42.862509 Process 93 bytes request 09:40:42.862684 Got request: GET /verifiedserver HTTP/1.1 09:40:42.862801 Are-we-friendly question received 09:40:42.863045 Wrote request (93 bytes) input to log/27/server.input 09:40:42.863334 Identifying ourselves as friends 09:40:42.869820 Response sent (56 bytes) and written to log/27/server.response 09:40:42.869928 special request received, no persistency 09:40:42.869994 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42323... * Connected to 127.0.0.1 (127.0.0.1) port 42323 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42323 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73783 === End of file http_verify.out CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind352 ../src/curl -q --output log/13/curl352.out --include --trace-ascii log/13/trace352 --trace-config all --trace-time ftp://127.0.0.1:34087// --ftp-method singlecwd > log/13/stdout352 2> log/13/stderr352 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind354 ../src/curl -q --output log/28/curl354.out --include --trace-ascii log/28/trace354 --trace-config all --trace-time ftp://127.0.0.1:34373/354 > log/28/stdout354 2> log/28/stderr354 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind342 ../src/curl -q --output log/3/curl342.out --include --trace-ascii log/3/trace342 --trace-config all --trace-time http://127.0.0.1:42107/342 --etag-compare log/3/etag342 > log/3/stdout342 2> log/3/stderr342 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind355 ../src/curl -q --output log/26/curl355.out --include --trace-ascii log/26/trace355 --trace-config all --trace-time http://127.0.0.1:46481/355 --alt-svc "" > log/26/stdout355 2> log/26/stderr355 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind331 ../src/curl -q --output log/20/curl331.out --include --trace-ascii log/20/trace331 --trace-config all --trace-time -x http://127.0.0.1:45475 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/20/stdout331 2> log/20/stderr331 === Start of file jar329.txt .host.foo.com TRUE /we/want/ FALSE 22147483647 test no .host.foo.com TRUE /we/want/ FALSE 22147483647 tester yes === End of file jar329.txt === Start of file server.cmd Testnum 329 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73783 === End of file server.response === Start of file valgrind329 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind329 * starts no server test 0370...[--etag-save with bad path - no transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind370 ../src/curl -q --output log/31/curl370.out --include --trace-ascii log/31/trace370 --trace-config all --trace-time http://127.0.0.1:47/370 --etag-save log/31/nowhere/etag370 > log/31/stdout370 2> log/31/stderr370 curl returned 1, when expecting 26 370: exit FAILED == Contents of files in the log/31/ dir after test 370 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind370 ../src/curl -q --output log/31/curl370.out --include --trace-ascii log/31/trace370 --trace-config all --trace-time http://127.0.0.1:47/370 --etag-save log/31/nowhere/etag370 > log/31/stdout370 2> log/31/stderr370 === End of file commands.log === Start of file server.cmd Testnum 370 === End of file server.cmd === Start of file valgrind370 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind370 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/34/server/tftp_server.pid" --portfile "log/34/server/tftp_server.port" --logfile "log/34/tftp_server.log" --logdir "log/34" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: TFTP server on PID 89134 port 35651 * pid tftp => 89134 89134 test 0286...[TFTP send of boundary case 512 byte file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind286 ../src/curl -q --output log/34/curl286.out --include --trace-ascii log/34/trace286 --trace-config all --trace-time -T log/34/test286.txt tftp://127.0.0.1:35651// > log/34/stdout286 2> log/34/stderr286 286: protocol FAILED! There was no content at all in the file log/34/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/34/ dir after test 286 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind286 ../src/curl -q --output log/34/curl286.out --include --trace-ascii log/34/trace286 --trace-config all --trace-time -T log/34/test286.txt tftp://127.0.0.1:35651// > log/34/stdout286 2> log/34/stderr286 === End of file commands.log === Start of file server.cmd Testnum 286 === End of file server.cmd === Start of file test286.txt A chunk of data which exactly fits into a 512 byte TFTP block, testing a boundary condition in the TFTP transmit code. 89ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF 123456789ABCDEF === End of file test286.txt === Start of file tftp_server.log 09:40:41.982112 Wrote pid 89134 to log/34/server/tftp_server.pid 09:40:41.982865 Wrote port 35651 to log/34/server/tftp_server.port 09:40:41.983093 Running IPv4 version on port UDP/35651 === End of file tftp_server.log === Start of file valgrind286 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind286 test 0342...[Check ifCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind346 ../src/curl -q --output log/8/curl346.out --include --trace-ascii log/8/trace346 --trace-config all --trace-time -x http://127.0.0.1:46129/346 -U puser: -u suser: http://remote.example/346 > log/8/stdout346 2> log/8/stderr346 --etag-compare set correct etag in header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind342 ../src/curl -q --output log/3/curl342.out --include --trace-ascii log/3/trace342 --trace-config all --trace-time http://127.0.0.1:42107/342 --etag-compare log/3/etag342 > log/3/stdout342 2> log/3/stderr342 342: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 342 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind342 ../src/curl -q --output log/3/curl342.out --include --trace-ascii log/3/trace342 --trace-config all --trace-time http://127.0.0.1:42107/342 --etag-compare log/3/etag342 > log/3/stdout342 2> log/3/stderr342 === End of file commands.log === Start of file etag342 "21025-dc7-39462498" === End of file etag342 === Start of file http_server.log 09:40:43.126047 ====> Client connect 09:40:43.126420 accept_connection 3 returned 4 09:40:43.126910 accept_connection 3 returned 0 09:40:43.127060 Read 93 bytes 09:40:43.127180 Process 93 bytes request 09:40:43.127284 Got request: GET /verifiedserver HTTP/1.1 09:40:43.127376 Are-we-friendly question received 09:40:43.127732 Wrote request (93 bytes) input to log/3/server.input 09:40:43.127940 Identifying ourselves as friends 09:40:43.128915 Response sent (56 bytes) and written to log/3/server.response 09:40:43.129065 special request received, no persistency 09:40:43.129131 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42107... * Connected to 127.0.0.1 (127.0.0.1) port 42107 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42107 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73802 === End of file http_verify.out === Start of file server.cmd Testnum 342 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73802 === End of file server.response === Start of file valgrind342 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind342 test 0352...[FTP root dir list singlecwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind352 ../src/curl -q --output log/13/curl352.out --include --trace-ascii log/13/trace352 --trace-config all --trace-time ftp://127.0.0.1:34087// --ftp-method singlecwd > log/13/stdout352 2> log/13/stderr352 352: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 352 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind352 ../src/curl -q --output log/13/curl352.out --include --trace-ascii log/13/trace352 --trace-config all --trace-time ftp://127.0.0.1:34087// --ftp-method singlecwd > log/13/stdout352 2> log/13/stderr352 === End of file commands.log === Start of file ftp_server.log 09:40:43.025069 ====> Client connect 09:40:43.026332 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:43.029030 < "USER anonymous" 09:40:43.029400 > "331 We are happy you popped in![CR][LF]" 09:40:43.034575 < "PASS ftp@example.com" 09:40:43.036481 > "230 Welcome you silly person[CR][LF]" 09:40:43.037299 < "PWD" 09:40:43.037686 > "257 "/" is current directory[CR][LF]" 09:40:43.043687 < "EPSV" 09:40:43.047230 ====> Passive DATA channel requested by client 09:40:43.047450 DATA sockfilt for passive data channel starting... 09:40:43.074166 DATA sockfilt for passive data channel started (pid 91382) 09:40:43.077218 DATA sockfilt for passive data channel listens on port 46485 09:40:43.077892 > "229 Entering Passive Mode (|||46485|)[LF]" 09:40:43.078204 Client has been notified that DATA conn will be accepted on port 46485 09:40:43.083930 Client connects to port 46485 09:40:43.084387 ====> Client established passive DATA connection on port 46485 09:40:43.085462 < "TYPE I" 09:40:43.085964 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:43.093368 < "SIZE verifiedserver" 09:40:43.097651 > "213 17[CR][LF]" 09:40:43.105576 < "RETR verifiedserver" 09:40:43.108476 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:43.109424 =====> Closing passive DATA connection... 09:40:43.109679 Server disconnects passive DATA connection 09:40:43.115249 Server disconnected passive DATA connection 09:40:43.115518 DATA sockfilt for passive data channel quits (pid 91382) 09:40:43.131581 DATA sockfilt for passive data channel quit (pid 91382) 09:40:43.131943 =====> Closed passive DATA connection 09:40:43.133097 > "226 File transfer complete[CR][LF]" 09:40:43.151390 < "QUIT" 09:40:43.152261 > "221 bye bye baby[CR][LF]" 09:40:43.158890 MAIN sockfilt said DISC 09:40:43.159238 ====> Client disconnected 09:40:43.159852 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.275692 ====> Client connect 09:40:42.280317 Received DATA (on stdin) 09:40:42.280575 > 160 bytes data, server => client 09:40:42.280699 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:42.280783 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:42.280848 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:42.281671 < 16 bytes data, client => server 09:40:42.281799 'USER anonymous\r\n' 09:40:42.286554 Received DATA (on stdin) 09:40:42.286703 > 33 bytes data, server => client 09:40:42.286783 '331 We are happy you popped in!\r\n' 09:40:42.287338 < 22 bytes data, client => server 09:40:42.287574 'PASS ftp@example.com\r\n' 09:40:42.288852 Received DATA (on stdin) 09:40:42.288983 > 30 bytes data, server => client 09:40:42.289154 '230 Welcome you silly person\r\n' 09:40:42.289831 < 5 bytes data, client => server 09:40:42.289974 'PWD\r\n' 09:40:42.294184 Received DATA (on stdin) 09:40:42.294342 > 30 bytes data, server => client 09:40:42.294499 '257 "/" is current directoCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind335 ../src/curl -q --output log/38/curl335.out --include --trace-ascii log/38/trace335 --trace-config all --trace-time http://digest:alot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:33511 --proxy-digest --digest > log/38/stdout335 2> log/38/stderr335 ry\r\n' 09:40:42.295289 < 6 bytes data, client => server 09:40:42.295585 'EPSV\r\n' 09:40:42.332261 Received DATA (on stdin) 09:40:42.332397 > 38 bytes data, server => client 09:40:42.332585 '229 Entering Passive Mode (|||46485|)\n' 09:40:42.334906 < 8 bytes data, client => server 09:40:42.335025 'TYPE I\r\n' 09:40:42.344575 Received DATA (on stdin) 09:40:42.344780 > 33 bytes data, server => client 09:40:42.344914 '200 I modify TYPE as you wanted\r\n' 09:40:42.345692 < 21 bytes data, client => server 09:40:42.345851 'SIZE verifiedserver\r\n' 09:40:42.347611 Received DATA (on stdin) 09:40:42.347766 > 8 bytes data, server => client 09:40:42.357548 '213 17\r\n' 09:40:42.358292 < 21 bytes data, client => server 09:40:42.358524 'RETR verifiedserver\r\n' 09:40:42.359818 Received DATA (on stdin) 09:40:42.359979 > 29 bytes data, server => client 09:40:42.361624 '150 Binary junk (17 bytes).\r\n' 09:40:42.386016 Received DATA (on stdin) 09:40:42.386175 > 28 bytes data, server => client 09:40:42.386364 '226 File transfer complete\r\n' 09:40:42.404099 < 6 bytes data, client => server 09:40:42.404284 'QUIT\r\n' 09:40:42.405534 Received DATA (on stdin) 09:40:42.405704 > 18 bytes data, server => client 09:40:42.406398 '221 bye bye baby\r\n' 09:40:42.409403 ====> Client disconnect 09:40:42.413894 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:43.324939 Running IPv4 version 09:40:43.325701 Listening on port 46485 09:40:43.326224 Wrote pid 91382 to log/13/server/ftp_sockdata.pid 09:40:43.326522 Received PING (on stdin) 09:40:43.328416 Received PORT (on stdin) 09:40:43.334592 ====> Client connect 09:40:43.367718 Received DATA (on stdin) 09:40:43.367887 > 17 bytes data, server => client 09:40:43.367991 'WE ROOLZ: 79551\r\n' 09:40:43.368355 Received DISC (on stdin) 09:40:43.368585 ====> Client forcibly disconnected 09:40:43.371022 Received QUIT (on stdin) 09:40:43.371161 quits 09:40:43.371622 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 352 === End of file server.cmd === Start of file valgrind352 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind352 test 0355...[load Alt-Svc from file and use] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind355 ../src/curl -q --output log/26/curl355.out --include --trace-ascii log/26/trace355 --trace-config all --trace-time http://127.0.0.1:46481/355 --alt-svc "" > log/26/stdout355 2> log/26/stderr355 355: protocol FAILED! There was no content at all in the file log/26/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/26/ dir after test 355 === Start of file altsvc-355 h1 example.com 80 h1 127.0.0.1 46481 "20290222 22:19:28" 0 0 === End of file altsvc-355 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind355 ../src/curl -q --output log/26/curl355.out --include --trace-ascii log/26/trace355 --trace-config all --trace-time http://127.0.0.1:46481/355 --alt-svc "" > log/26/stdout355 2> log/26/stderr355 === End of file commands.log === Start of file http_server.log 09:40:43.276227 ====> Client connect 09:40:43.276713 accept_connection 3 returned 4 09:40:43.276890 accept_connection 3 returned 0 09:40:43.281316 Read 93 bytes 09:40:43.281549 Process 93 bytes request 09:40:43.281666 Got request: GET /verifiedserver HTTP/1.1 09:40:43.281760 Are-we-friendly question received 09:40:43.282006 Wrote request (93 bytes) input to log/26/server.input 09:40:43.282241 Identifying ourselves as friends 09:40:43.286954 Response sent (56 bytes) and written to log/26/server.response 09:40:43.287084 special request received, no persistency 09:40:43.287160 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46481... * Connected to 127.0.0.1 (127.0.0.1) port 46481 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46481 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73780 === End of file http_verify.out === Start of file server.cmd Testnum 355 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73780 === End of file server.response === Start of file valgrind355 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind355 test 0354...[FTP without password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind354 ../src/curl -q --output log/28/curl354.out --include --trace-ascii log/28/trace354 --trace-config all --trace-time ftp://127.0.0.1:34373/354 > log/28/stdout354 2> log/28/stderr354 354: protocol FAILED! There was no content at all in the file log/28/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/28/ dir after test 354 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind354 ../src/curl -q --output log/28/curl354.out --include --trace-ascii log/28/trace354 --trace-config all --trace-time ftp://127.0.0.1:34373/354 > log/28/stdout354 2> log/28/stderr354 === End of file commands.log === Start of file ftp_server.log 09:40:42.985476 ====> Client connect 09:40:42.987440 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:42.992528 < "USER anonymous" 09:40:42.993357 > "331 We are happy you popped in![CR][LF]" 09:40:42.997106 < "PASS ftp@example.com" 09:40:42.998324 > "230 Welcome you silly person[CR][LF]" 09:40:42.999445 < "PWD" 09:40:43.000517 > "257 "/" is current directory[CR][LF]" 09:40:43.001545 < "EPSV" 09:40:43.001868 ====> Passive DATA channel requested by client 09:40:43.002086 DATA sockfilt for passive data channel starting... 09:40:43.013569 DATA sockfilt for passive data channel started (pid 91332) 09:40:43.015135 DATA sockfilt for passive data channel listens on port 42897 09:40:43.015585 > "229 Entering Passive Mode (|||42897|)[LF]" 09:40:43.015907 Client has been notified that DATA conn will be accepted on port 42897 09:40:43.018594 Client connects to port 42897 09:40:43.019217 ====> Client established passive DATA connection on port 42897 09:40:43.023918 < "TYPE I" 09:40:43.025415 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:43.026628 < "SIZE verifiedserver" 09:40:43.027462 > "213 17[CR][LF]" 09:40:43.029417 < "RETR verifiedserver" 09:40:43.029940 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:43.030706 =====> Closing passive DATA connection... 09:40:43.031052 Server disconnects passive DATA connection 09:40:43.033159 Server disconnected passive DATA connection 09:40:43.033467 DATA sockfilt for passive data channel quits (pid 91332) 09:40:43.039110 DATA sockfilt for passive data channel quit (pid 91332) 09:40:43.039446 =====> Closed passive DATA connection 09:40:43.039933 > "226 File transfer complete[CR][LF]" 09:40:43.075374 < "QUIT" 09:40:43.075880 > "221 bye bye baby[CR][LF]" 09:40:43.078344 MAIN sockfilt said DISC 09:40:43.078643 ====> Client disconnected 09:40:43.079270 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.236807 ====> Client connect 09:40:42.240705 Received DATA (on stdin) 09:40:42.240877 > 160 bytes data, server => client 09:40:42.241607 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:42.241764 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:42.241845 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:42.244996 < 16 bytes data, client => server 09:40:42.245169 'USER anonymous\r\n' 09:40:42.246675 Received DATA (on stdin) 09:40:42.246829 > 33 bytes data, server => client 09:40:42.247387 '331 We are happy you popped in!\r\n' 09:40:42.249957 < 22 bytes data, client => server 09:40:42.250121 'PASS ftp@example.com\r\n' 09:40:42.251158 Received DATA (on stdin) 09:40:42.251310 > 30 bytes data, server => client 09:40:42.251571 '230 Welcome you silly person\r\n' 09:40:42.252251 < 5 bytes data, client => server 09:40:42.252391 'PWD\r\n' 09:40:42.253527 Received DATA (on stdin) 09:40:42.253666 > 30 bytes data, server => client 09:40:42.253827 '257 "/" is current directory\r\n' 09:40:42.254560 < 6 bytes data, client => server 09:40:42.254675 'EPSV\r\n' 09:40:42.269316 Received DATA (on stdin) 09:40:42.269545 > 38 bytes data, server => client 09:40:42.269651 '229 Entering Passive Mode (|||42897|)\n' 09:40:42.276632 < 8 bytes data, client => server 09:40:42.276810 'TYPE I\r\n' 09:40:42.278011 Received DATA (on stdin) 09:40:42.278165 > 33 bytes data, server => client 09:40:42.278361 '200 I modify TYPE as you wanted\r\n' 09:40:42.279630 < 21 bytes data, client => server 09:40:42.279768 'SIZE verifiedserver\r\n' 09:40:42.280825 Received DATA (on stdin) 09:40:42.280972 > 8 bytes data, server => client 09:40:42.281544 '213 17\r\n' 09:40:42.282409 < 21 bytes data, client => server 09:40:42.282638 'RETR verifiedserver\r\n' 09:40:42.285096 Received DATA (on stdin) 09:40:42.285247 > 29 bytes data, server => client 09:40:42.285362 '150 Binary junk (17 bytes).\r\n' 09:40:42.293630 Received DATA (on stdin) 09:40:42.293846 > 28 bytes data, server => client 09:40:42.293985 '226 File transfer complete\r\n' 09:40:42.328402 < 6 bytes data, client => server 09:40:42.328642 'QUIT\r\n' 09:40:42.329937 Received DATA (on stdin) 09:40:42.330096 > 18 bytes data, server => client 09:40:42.330205 '221 bye bye baby\r\n' 09:40:42.330937 ====> Client disconnect 09:40:42.335719 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:43.265644 Running IPv4 version 09:40:43.266237 Listening on port 42897 09:40:43.266720 Wrote pid 91332 to log/28/server/ftp_sockdata.pid 09:40:43.266875 Received PING (on stdin) 09:40:43.268077 Received PORT (on stdin) 09:40:43.271757 ====> Client connect 09:40:43.284057 Received DATA (on stdin) 09:40:43.284231 > 17 bytes data, server => client 09:40:43.284320 'WE ROOLZ: 77437\r\n' 09:40:43.285069 Received DISC (on stdin) 09:40:43.285242 ====> Client forcibly disconnected 09:40:43.287538 Received QUIT (on stdin) 09:40:43.287684 quits 09:40:43.288087 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY USER 200 fine, proceed without password Testnum 354 === End of file server.cmd === Start of file valgrind354 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind354 test 0353...[FTP home dir list singlecwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind353 ../src/curl -q --output log/30/curl353.out --include --trace-ascii log/30/trace353 --trace-config all --trace-time ftp://127.0.0.1:42901/ --ftp-method singlecwd > log/30/stdout353 2> log/30/stderr353 353: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 353 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind353 ../src/curl -q --output log/30/curl353.out --include --trace-ascii log/30/trace353 --trace-config all --trace-time ftp://127.0.0.1:42901/ --ftp-method singlecwd > log/30/stdCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind285 ../src/curl -q --output log/51/curl285.out --include --trace-ascii log/51/trace285 --trace-config all --trace-time -T log/51/test285.txt tftp://127.0.0.1:56570// --connect-timeout 549 > log/51/stdout285 2> log/51/stderr285 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind297 ../src/curl -q --output log/19/curl297.out --include --trace-ascii log/19/trace297 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:32777/first/second/third/297 > log/19/stdout297 2> log/19/stderr297 out353 2> log/30/stderr353 === End of file commands.log === Start of file ftp_server.log 09:40:43.019955 ====> Client connect 09:40:43.022403 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:43.027416 < "USER anonymous" 09:40:43.027994 > "331 We are happy you popped in![CR][LF]" 09:40:43.029732 < "PASS ftp@example.com" 09:40:43.030274 > "230 Welcome you silly person[CR][LF]" 09:40:43.033598 < "PWD" 09:40:43.034099 > "257 "/" is current directory[CR][LF]" 09:40:43.036700 < "EPSV" 09:40:43.037174 ====> Passive DATA channel requested by client 09:40:43.037419 DATA sockfilt for passive data channel starting... 09:40:43.061625 DATA sockfilt for passive data channel started (pid 91374) 09:40:43.063190 DATA sockfilt for passive data channel listens on port 35715 09:40:43.063975 > "229 Entering Passive Mode (|||35715|)[LF]" 09:40:43.064267 Client has been notified that DATA conn will be accepted on port 35715 09:40:43.067928 Client connects to port 35715 09:40:43.068344 ====> Client established passive DATA connection on port 35715 09:40:43.070354 < "TYPE I" 09:40:43.071361 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:43.074064 < "SIZE verifiedserver" 09:40:43.074485 > "213 17[CR][LF]" 09:40:43.076500 < "RETR verifiedserver" 09:40:43.077378 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:43.080552 =====> Closing passive DATA connection... 09:40:43.080920 Server disconnects passive DATA connection 09:40:43.082959 Server disconnected passive DATA connection 09:40:43.083249 DATA sockfilt for passive data channel quits (pid 91374) 09:40:43.085506 DATA sockfilt for passive data channel quit (pid 91374) 09:40:43.085834 =====> Closed passive DATA connection 09:40:43.086227 > "226 File transfer complete[CR][LF]" 09:40:43.124443 < "QUIT" 09:40:43.129621 > "221 bye bye baby[CR][LF]" 09:40:43.135896 MAIN sockfilt said DISC 09:40:43.136402 ====> Client disconnected 09:40:43.137006 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.272204 ====> Client connect 09:40:42.276521 Received DATA (on stdin) 09:40:42.276657 > 160 bytes data, server => client 09:40:42.276748 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:42.276836 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:42.276912 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:42.277810 < 16 bytes data, client => server 09:40:42.278003 'USER anonymous\r\n' 09:40:42.281695 Received DATA (on stdin) 09:40:42.281861 > 33 bytes data, server => client 09:40:42.281951 '331 We are happy you popped in!\r\n' 09:40:42.282641 < 22 bytes data, client => server 09:40:42.282783 'PASS ftp@example.com\r\n' 09:40:42.285559 Received DATA (on stdin) 09:40:42.285717 > 30 bytes data, server => client 09:40:42.285806 '230 Welcome you silly person\r\n' 09:40:42.286537 < 5 bytes data, client => server 09:40:42.286687 'PWD\r\n' 09:40:42.288696 Received DATA (on stdin) 09:40:42.288851 > 30 bytes data, server => client 09:40:42.288942 '257 "/" is current directory\r\n' 09:40:42.289640 < 6 bytes data, client => server 09:40:42.289798 'EPSV\r\n' 09:40:42.319342 Received DATA (on stdin) 09:40:42.319577 > 38 bytes data, server => client 09:40:42.319701 '229 Entering Passive Mode (|||35715|)\n' 09:40:42.323073 < 8 bytes data, client => server 09:40:42.323230 'TYPE I\r\n' 09:40:42.324548 Received DATA (on stdin) 09:40:42.324770 > 33 bytes data, server => client 09:40:42.325378 '200 I modify TYPE as you wanted\r\n' 09:40:42.326214 < 21 bytes data, client => server 09:40:42.326380 'SIZE verifiedserver\r\n' 09:40:42.328583 Received DATA (on stdin) 09:40:42.328719 > 8 bytes data, server => client 09:40:42.328792 '213 17\r\n' 09:40:42.329318 < 21 bytes data, client => server 09:40:42.329536 'RETR verifiedserver\r\n' 09:40:42.330694 Received DATA (on stdin) 09:40:42.330862 > 29 bytes data, server => client 09:40:42.331549 '150 Binary junk (17 bytes).\r\n' 09:40:42.342639 Received DATA (on stdin) 09:40:42.342808 > 28 bytes data, server => client 09:40:42.342890 '226 File transfer complete\r\n' 09:40:42.377075 < 6 bytes data, client => server 09:40:42.377244 'QUIT\r\n' 09:40:42.378722 Received DATA (on stdin) 09:40:42.378904 > 18 bytes data, server => client 09:40:42.379592 '221 bye bye baby\r\n' 09:40:42.383894 ====> Client disconnect 09:40:42.392560 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:43.311044 Running IPv4 version 09:40:43.311695 Listening on port 35715 09:40:43.312067 Wrote pid 91374 to log/30/server/ftp_sockdata.pid 09:40:43.312220 Received PING (on stdin) 09:40:43.316106 Received PORT (on stdin) 09:40:43.321118 ====> Client connect 09:40:43.331930 Received DATA (on stdin) 09:40:43.332085 > 17 bytes data, server => client 09:40:43.334932 'WE ROOLZ: 77429\r\n' 09:40:43.335307 Received DISC (on stdin) 09:40:43.335648 ====> Client forcibly disconnected 09:40:43.337283 Received QUIT (on stdin) 09:40:43.337427 quits 09:40:43.337908 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 353 === End of file server.cmd === Start of file valgrind353 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind353 test 0346...[HTTP GET over proxy with credentials using blank passwords] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind346 ../src/curl -q --output log/8/curl346.out --include --trace-ascii log/8/trace346 --trace-config all --trace-time -x http://127.0.0.1:46129/346 -U puser: -u suser: http://remote.example/346 > log/8/stdout346 2> log/8/stderr346 346: protocol FAILED! There was no content at all in the file log/8/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/8/ dir after test 346 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind346 ../src/curl -q --output log/8/curl346.out --include --trace-ascii log/8/trace346 --trace-config all --trace-time -x http://127.0.0.1:46129/346 -U puser: -u suser: http://remote.example/346 > log/8/stdout346 2> log/8/stderr346 === End of file commands.log === Start of file http_server.log 09:40:43.324995 ====> Client connect 09:40:43.325664 accept_connection 3 returned 4 09:40:43.326047 accept_connection 3 returned 0 09:40:43.326188 Read 93 bytes 09:40:43.326323 Process 93 bytes request 09:40:43.326735 Got request: GET /verifiedserver HTTP/1.1 09:40:43.326952 Are-we-friendly question received 09:40:43.327188 Wrote request (93 bytes) input to log/8/server.input 09:40:43.327667 Identifying ourselves as friends 09:40:43.329771 Response sent (56 bytes) and written to log/8/server.response 09:40:43.329899 special request received, no persistency 09:40:43.329983 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46129... * Connected to 127.0.0.1 (127.0.0.1) port 46129 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46129 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73800 === End of file http_verify.out === Start of file server.cmd Testnum 346 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73800 === End of file server.response === Start of file valgrind346 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind346 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/19/server/ftp_server.pid" --logfile "log/19/ftp_server.log" --logdir "log/19" --portfile "log/19/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 32777 (log/19/server/ftp_server.port) RUN: FTP server is PID 89661 port 32777 * pid ftp => 89661 89661 test 0297...[FTP CWD with --ftp-method singlecwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind297 ../src/curl -q --output log/19/curl297.out --include --trace-ascii log/19/trace297 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:32777/first/second/third/297 > log/19/stdout297 2> log/19/stderr297 297: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 297 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind297 ../src/curl -q --output log/19/curl297.out --include --trace-ascii log/19/trace297 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:32777/first/second/third/297 > log/19/stdout297 2> log/19/stderr297 === End of file commands.log === Start of file ftp_server.log 09:40:42.377869 FTP server listens on port IPv4/32777 09:40:42.379120 logged pid 89661 in log/19/server/ftp_server.pid 09:40:42.379403 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.629256 Running IPv4 version 09:40:42.629838 Listening on port 32777 09:40:42.630276 Wrote pid 90364 to log/19/server/ftp_sockctrl.pid 09:40:42.630686 Wrote port 32777 to log/19/server/ftp_server.port 09:40:42.630837 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 297 === End of file server.cmd === Start of file valgrind297 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind297 test 0331...[HTTP with cookie using host name 'moo'] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind331 ../src/curl -q --output log/20/curl331.out --include --trace-ascii log/20/trace331 --trace-config all --trace-time -x http://127.0.0.1:45475 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/20/stdout331 2> log/20/stderr331 331: protocol FAILED! There was no content at all in the file log/20/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/20/ dir after test 331 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind331 ../src/curl -q --output log/20/curl331.out --include --trace-ascii log/20/trace331 --trace-config all --trace-time -x http://127.0.0.1:45475 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/20/stdout331 2> log/20/stderr331 === End of file commands.log === Start of file http_server.log 09:40:42.867698 ====> Client connect 09:40:42.868012 accept_connection 3 returned 4 09:40:42.868176 accept_connection 3 returned 0 09:40:42.869697 Read 93 bytes 09:40:42.869854 Process 93 bytes request 09:40:42.869943 Got request: GET /verifiedserver HTTP/1.1 09:40:42.870063 Are-we-friendly question received 09:40:42.870606 Wrote request (93 bytes) input to log/20/server.input 09:40:42.870825 Identifying ourselves as friends 09:40:42.873168 Response sent (56 bytes) and written to log/20/server.response 09:40:42.873585 special request received, no persistency 09:40:42.873687 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45475... * Connected to 127.0.0.1 (127.0.0.1) port 45475 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind339 ../src/curl -q --output log/61/curl339.out --include --trace-ascii log/61/trace339 --trace-config all --trace-time http://127.0.0.1:44381/339 --etag-save log/61/etag339 > log/61/stdout339 2> log/61/stderr339 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind357 ../src/curl -q --output log/11/curl357.out --include --trace-ascii log/11/trace357 --trace-config all --trace-time http://127.0.0.1:41387/we/want/357 -T log/11/test357.txt --expect100-timeout 99 > log/11/stdout357 2> log/11/stderr357 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind368 ../src/curl -q --output log/45/curl368.out --include --trace-ascii log/45/trace368 --trace-config all --trace-time http://127.0.0.1:34239/368 -r 4 > log/45/stdout368 2> log/45/stderr368 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind337 ../src/curl -q --output log/41/curl337.out --include --trace-ascii log/41/trace337 --trace-config all --trace-time ftp://127.0.0.1:41781/337 --range 3-6 > log/41/stdout337 2> log/41/stderr337 0.0.1:45475 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73786 === End of file http_verify.out === Start of file server.cmd Testnum 331 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73786 === End of file server.response === Start of file valgrind331 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind331 test 0335...[HTTP with proxy Digest and site Digest with creds in URLs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind335 ../src/curl -q --output log/38/curl335.out --include --trace-ascii log/38/trace335 --trace-config all --trace-time http://digest:alot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:33511 --proxy-digest --digest > log/38/stdout335 2> log/38/stderr335 335: protocol FAILED! There was no content at all in the file log/38/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/38/ dir after test 335 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind335 ../src/curl -q --output log/38/curl335.out --include --trace-ascii log/38/trace335 --trace-config all --trace-time http://digest:alot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:33511 --proxy-digest --digest > log/38/stdout335 2> log/38/stderr335 === End of file commands.log === Start of file http_server.log 09:40:42.870810 ====> Client connect 09:40:42.871254 accept_connection 3 returned 4 09:40:42.871420 accept_connection 3 returned 0 09:40:42.872850 Read 93 bytes 09:40:42.873096 Process 93 bytes request 09:40:42.873256 Got request: GET /verifiedserver HTTP/1.1 09:40:42.873396 Are-we-friendly question received 09:40:42.873882 Wrote request (93 bytes) input to log/38/server.input 09:40:42.874345 Identifying ourselves as friends 09:40:42.878990 Response sent (56 bytes) and written to log/38/server.response 09:40:42.879187 special request received, no persistency 09:40:42.879310 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33511... * Connected to 127.0.0.1 (127.0.0.1) port 33511 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33511 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73775 === End of file http_verify.out === Start of file server.cmd Testnum 335 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73775 === End of file server.response === Start of file valgrind335 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind335 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/51/server/tftp_server.pid" --portfile "log/51/server/tftp_server.port" --logfile "log/51/tftp_server.log" --logdir "log/51" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: TFTP server on PID 89110 port 56570 * pid tftp => 89110 89110 test 0285...[TFTP send] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind285 ../src/curl -q --output log/51/curl285.out --include --trace-ascii log/51/trace285 --trace-config all --trace-time -T log/51/test285.txt tftp://127.0.0.1:56570// --connect-timeout 549 > log/51/stdout285 2> log/51/stderr285 285: protocol FAILED! There was no content at all in the file log/51/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/51/ dir after test 285 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind285 ../src/curl -q --output log/51/curl285.out --include --trace-ascii log/51/trace285 --trace-config all --trace-time -T log/51/test285.txt tftp://127.0.0.1:56570// --connect-timeout 549 > log/51/stdout285 2> log/51/stderr285 === End of file commands.log === Start of file server.cmd Testnum 285 === End of file server.cmd === Start of file test285.txt a chunk of data sent to server === End of file test285.txt === Start of file tftp_server.log 09:40:41.950814 Wrote pid 89110 to log/51/server/tftp_server.pid 09:40:41.951631 Wrote port 56570 to log/51/server/tftp_server.port 09:40:41.951793 Running IPv4 version on port UDP/56570 === End of file tftp_server.log === Start of file valgrind285 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose nCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind345 ../src/curl -q --output log/10/curl345.out --include --trace-ascii log/10/trace345 --trace-config all --trace-time http://127.0.0.1:36913/345 --etag-compare log/10/etag345 --etag-save log/10/etag345 > log/10/stdout345 2> log/10/stderr345 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind369 ../src/curl -q --output log/23/curl369.out --include --trace-ascii log/23/trace369 --trace-config all --trace-time http://127.0.0.1:42467/369 --etag-save log/23/nowhere/etag369 --next http://127.0.0.1:42467/369 --include --output log/23/curl369.out > log/23/stdout369 2> log/23/stderr369 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind361 ../src/curl -q --output log/55/curl361.out --include --trace-ascii log/55/trace361 --trace-config all --trace-time http://127.0.0.1:33071/361 http://127.0.0.1:33071/361 --fail-with-body > log/55/stdout361 2> log/55/stderr361 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind374 ../src/curl -q --output log/24/curl374.out --include --trace-ascii log/24/trace374 --trace-config all --trace-time http://127.0.0.1:39259/gif/374 > log/24/stdout374 2> log/24/stderr374 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind372 ../src/curl -q --output log/1/curl372.out --include --trace-ascii log/1/trace372 --trace-config all --trace-time --raw http://127.0.0.1:40633/binary-zero-in-data-section/372 > log/1/stdout372 2> log/1/stderr372 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind378 ../src/curl -q --output log/7/curl378.out --include --trace-ascii log/7/trace378 --trace-config all --trace-time -T log/7/378 -d input http://never-accessed > log/7/stdout378 2> log/7/stderr378 ame matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind285 test 0345...[Both --etag-compare and -save store new Etag using one pre-existing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind345 ../src/curl -q --output log/10/curl345.out --include --trace-ascii log/10/trace345 --trace-config all --trace-time http://127.0.0.1:36913/345 --etag-compare log/10/etag345 --etag-save log/10/etag345 > log/10/stdout345 2> log/10/stderr345 345: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 345 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind345 ../src/curl -q --output log/10/curl345.out --include --trace-ascii log/10/trace345 --trace-config all --trace-time http://127.0.0.1:36913/345 --etag-compare log/10/etag345 --etag-save log/10/etag345 > log/10/stdout345 2> log/10/stderr345 === End of file commands.log === Start of file etag345 "21025-dc7-39462498" === End of file etag345 === Start of file http_server.log 09:40:43.131066 ====> Client connect 09:40:43.131665 accept_connection 3 returned 4 09:40:43.131998 accept_connection 3 returned 0 09:40:43.133156 Read 93 bytes 09:40:43.133511 Process 93 bytes request 09:40:43.133655 Got request: GET /verifiedserver HTTP/1.1 09:40:43.133745 Are-we-friendly question received 09:40:43.134096 Wrote request (93 bytes) input to log/10/server.input 09:40:43.135240 Identifying ourselves as friends 09:40:43.137533 Response sent (56 bytes) and written to log/10/server.response 09:40:43.137673 special request received, no persistency 09:40:43.137760 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36913... * Connected to 127.0.0.1 (127.0.0.1) port 36913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36913 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73804 === End of file http_verify.out === Start of file server.cmd Testnum 345 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73804 === End of file server.response === Start of file valgrind345 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind345 test 0357...[HTTP PUT with Expect: 100-continue and 417 response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind357 ../src/curl -q --output log/11/curl357.out --include --trace-ascii log/11/trace357 --trace-config all --trace-time http://127.0.0.1:41387/we/want/357 -T log/11/test357.txt --expect100-timeout 99 > log/11/stdout357 2> log/11/stderr357 357: protocol FAILED! There was no content at all in the file log/11/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/11/ dir after test 357 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind357 ../src/curl -q --output log/11/curl357.out --include --trace-ascii log/11/trace357 --trace-config all --trace-time http://127.0.0.1:41387/we/want/357 -T log/11/test357.txt --expect100-timeout 99 > log/11/stdout357 2> log/11/stderr357 === End of file commands.log === Start of file http_server.log 09:40:43.257021 ====> Client connect 09:40:43.257311 accept_connection 3 returned 4 09:40:43.257617 accept_connection 3 returned 0 09:40:43.257777 Read 93 bytes 09:40:43.257859 Process 93 bytes request 09:40:43.257930 Got request: GET /verifiedserver HTTP/1.1 09:40:43.258005 Are-we-friendly question received 09:40:43.258242 Wrote request (93 bytes) input to log/11/server.input 09:40:43.258431 Identifying ourselves as friends 09:40:43.260560 Response sent (56 bytes) and written to log/11/server.response 09:40:43.260701 special request received, no persistency 09:40:43.260774 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41387... * Connected to 127.0.0.1 (127.0.0.1) port 41387 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41387 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73809 === End of file http_verify.out === Start of file server.cmd no-expect Testnum 357 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73809 === End of file server.response === Start of file test357.txt xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind365 ../src/curl -q --output log/59/curl365.out --include --trace-ascii log/59/trace365 --trace-config all --trace-time http://127.0.0.1:43695/365 > log/59/stdout365 2> log/59/stderr365 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind385 ../src/curl -q --output log/48/curl385.out --include --trace-ascii log/48/trace385 --trace-config all --trace-time --json '{ "drink": "coffe",' --json ' "crunch": "cookie" }' http://127.0.0.1:46339/385 -H "Content-Type: drinks/hot" > log/48/stdout385 2> log/48/stderr385 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind371 ../src/curl -q --output log/21/curl371.out --include --trace-ascii log/21/trace371 --trace-config all --trace-time http://127.0.0.1:34827/371 -o log/21/dump -o log/21/dump2 --no-progress-meter > log/21/stdout371 2> log/21/stderr371 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind366 ../src/curl -q --output log/18/curl366.out --include --trace-ascii log/18/trace366 --trace-config all --trace-time http://127.0.0.1:41285/366 --retry 2 --retry-max-time 10 > log/18/stdout366 2> log/18/stderr366 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind340 ../src/curl -q --output log/15/curl340.out --include --trace-ascii log/15/trace340 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:38699/%00first/second/third/340 > log/15/stdout340 2> log/15/stderr340 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind373 ../src/curl -q --output log/60/curl373.out --include --trace-ascii log/60/trace373 --trace-config all --trace-time http://127.0.0.1:38843/chunked-transfer-encoding/373 > log/60/stdout373 2> log/60/stderr373 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind332 ../src/curl -q --output log/17/curl332.out --include --trace-ascii log/17/trace332 --trace-config all --trace-time tftp://127.0.0.1:57688//332 --tftp-blksize 400 > log/17/stdout332 2> log/17/stderr332 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind362 ../src/curl -q --output log/58/curl362.out --include --trace-ascii log/58/trace362 --trace-config all --trace-time ftp://127.0.0.1:38901/362 -T log/58/test362.txt --continue-at - > log/58/stdout362 2> log/58/stderr362 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind380 ../src/curl -q --output log/5/curl380.out --include --trace-ascii log/5/trace380 --trace-config all --trace-time --netrc --netrc-file log/5/netrc380 ftp://mary@127.0.0.1:42831/ > log/5/stdout380 2> log/5/stderr380 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx === End of file test357.txt === Start of file valgrind357 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind357 test 0337...[FTP range download with SIZE returning extra crap] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind337 ../src/curl -q --output log/41/curl337.out --include --trace-ascii log/41/trace337 --trace-config all --trace-time ftp://127.0.0.1:41781/337 --range 3-6 > log/41/stdout337 2> log/41/stderr337 337: protocol FAILED! There was no content at all in the file log/41/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/41/ dir after test 337 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind337 ../src/curl -q --output log/41/curl337.out --include --trace-ascii log/41/trace337 --trace-config all --trace-time ftp://127.0.0.1:41781/337 --range 3-6 > log/41/stdout337 2> log/41/stderr337 === End of file commands.log === Start of file ftp_server.log 09:40:42.847125 ====> Client connect 09:40:42.852666 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:42.855922 < "USER anonymous" 09:40:42.856331 > "331 We are happy you popped in![CR][LF]" 09:40:42.861057 < "PASS ftp@example.com" 09:40:42.861648 > "230 Welcome you silly person[CR][LF]" 09:40:42.866721 < "PWD" 09:40:42.871265 > "257 "/" is current directory[CR][LF]" 09:40:42.874140 < "EPSV" 09:40:42.874726 ====> Passive DATA channel requested by client 09:40:42.876188 DATA sockfilt for passive data channel starting... 09:40:42.895460 DATA sockfilt for passive data channel started (pid 91208) 09:40:42.896618 DATA sockfilt for passive data channel listens on port 36087 09:40:42.897192 > "229 Entering Passive Mode CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind376 ../src/curl -q --include --trace-ascii log/29/trace376 --trace-config all --trace-time http://127.0.0.1:36877/376 -o log/29/save-376 --remove-on-error > log/29/stdout376 2> log/29/stderr376 (|||36087|)[LF]" 09:40:42.897478 Client has been notified that DATA conn will be accepted on port 36087 09:40:42.899610 Client connects to port 36087 09:40:42.900009 ====> Client established passive DATA connection on port 36087 09:40:42.900917 < "TYPE I" 09:40:42.901365 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:42.905180 < "SIZE verifiedserver" 09:40:42.907159 > "213 17[CR][LF]" 09:40:42.908080 < "RETR verifiedserver" 09:40:42.908516 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:42.910629 =====> Closing passive DATA connection... 09:40:42.911059 Server disconnects passive DATA connection 09:40:42.913798 Server disconnected passive DATA connection 09:40:42.914102 DATA sockfilt for passive data channel quits (pid 91208) 09:40:42.916375 DATA sockfilt for passive data channel quit (pid 91208) 09:40:42.916632 =====> Closed passive DATA connection 09:40:42.918075 > "226 File transfer complete[CR][LF]" 09:40:42.952970 < "QUIT" 09:40:42.954215 > "221 bye bye baby[CR][LF]" 09:40:42.957302 MAIN sockfilt said DISC 09:40:42.958255 ====> Client disconnected 09:40:42.958848 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:42.100177 ====> Client connect 09:40:42.106915 Received DATA (on stdin) 09:40:42.107077 > 160 bytes data, server => client 09:40:42.107186 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:42.107300 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:42.107514 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:42.108324 < 16 bytes data, client => server 09:40:42.108552 'USER anonymous\r\n' 09:40:42.110606 Received DATA (on stdin) 09:40:42.110805 > 33 bytes data, server => client 09:40:42.110910 '331 We are happy you popped in!\r\n' 09:40:42.113635 < 22 bytes data, client => server 09:40:42.113844 'PASS ftp@example.com\r\n' 09:40:42.117576 Received DATA (on stdin) 09:40:42.117796 > 30 bytes data, server => client 09:40:42.117912 '230 Welcome you silly person\r\n' 09:40:42.119228 < 5 bytes data, client => server 09:40:42.119427 'PWD\r\n' 09:40:42.121481 Received DATA (on stdin) 09:40:42.121669 > 30 bytes data, server => client 09:40:42.125975 '257 "/" is current directory\r\n' 09:40:42.127023 < 6 bytes data, client => server 09:40:42.127159 'EPSV\r\n' 09:40:42.151553 Received DATA (on stdin) 09:40:42.151712 > 38 bytes data, server => client 09:40:42.151801 '229 Entering Passive Mode (|||36087|)\n' 09:40:42.153272 < 8 bytes data, client => server 09:40:42.153430 'TYPE I\r\n' 09:40:42.155373 Received DATA (on stdin) 09:40:42.155656 > 33 bytes data, server => client 09:40:42.155760 '200 I modify TYPE as you wanted\r\n' 09:40:42.158035 < 21 bytes data, client => server 09:40:42.158197 'SIZE verifiedserver\r\n' 09:40:42.159408 Received DATA (on stdin) 09:40:42.159624 > 8 bytes data, server => client 09:40:42.159798 '213 17\r\n' 09:40:42.160393 < 21 bytes data, client => server 09:40:42.160606 'RETR verifiedserver\r\n' 09:40:42.162896 Received DATA (on stdin) 09:40:42.163047 > 29 bytes data, server => client 09:40:42.163127 '150 Binary junk (17 bytes).\r\n' 09:40:42.170864 Received DATA (on stdin) 09:40:42.171077 > 28 bytes data, server => client 09:40:42.171316 '226 File transfer complete\r\n' 09:40:42.205755 < 6 bytes data, client => server 09:40:42.205921 'QUIT\r\n' 09:40:42.207062 Received DATA (on stdin) 09:40:42.207222 > 18 bytes data, server => client 09:40:42.207414 '221 bye bye baby\r\n' 09:40:42.210639 ====> Client disconnect 09:40:42.211341 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:42.147352 Running IPv4 version 09:40:42.148174 Listening on port 36087 09:40:42.148693 Wrote pid 91208 to log/41/server/ftp_sockdata.pid 09:40:42.148870 Received PING (on stdin) 09:40:42.149691 Received PORT (on stdin) 09:40:42.153034 ====> Client connect 09:40:42.164018 Received DATA (on stdin) 09:40:42.164174 > 17 bytes data, server => client 09:40:42.164258 'WE ROOLZ: 77417\r\n' 09:40:42.167083 Received DISC (on stdin) 09:40:42.167334 ====> Client forcibly disconnected 09:40:42.168273 Received QUIT (on stdin) 09:40:42.168426 quits 09:40:42.168958 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 500 no such command REPLY SIZE 213 file: 213, Size =51 Testnum 337 === End of file server.cmd === Start of file valgrind337 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind337 test 0368...[Append dash if -r range specified without one] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind368 ../src/curl -q --output log/45/curl368.out --include --trace-ascii log/45/trace368 --trace-config all --trace-time http://127.0.0.1:34239/368 -r 4 > log/45/stdout368 2> log/45/stderr368 368: protocol FAILED! There was no content at all in the file log/45/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/45/ dir after test 368 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind368 ../src/curl -q --output log/45/curl368.out --include --trace-ascii log/45/trace368 --trace-config all --trace-time http://127.0.0.1:34239/368 -r 4 > log/45/stdout368 2> log/45/stderr368 === End of file commands.log === Start of file http_server.log 09:40:42.736870 ====> Client connect 09:40:42.737164 accept_connection 3 returned 4 09:40:42.737324 accept_connection 3 returned 0 09:40:42.737531 Read 93 bytes 09:40:42.737650 Process 93 bytes request 09:40:42.737740 Got request: GET /verifiedserver HTTP/1.1 09:40:42.737815 Are-we-friendly question received 09:40:42.738087 Wrote request (93 bytes) input to log/45/server.input 09:40:42.738430 Identifying ourselves as friends 09:40:42.743708 Response sent (56 bytes) and written to log/45/server.response 09:40:42.743832 special request received, no persistency 09:40:42.743904 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34239... * Connected to 127.0.0.1 (127.0.0.1) port 34239 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34239 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 75108 === End of file http_verify.out === Start of file server.cmd Testnum 368 === End of file server.cmd ===CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind379 ../src/curl -q --include --trace-ascii log/2/trace379 --trace-config all --trace-time http://127.0.0.1:39659/379 -o log/2/save --remove-on-error --no-clobber > log/2/stdout379 2> log/2/stderr379 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind351 ../src/curl -q --output log/16/curl351.out --include --trace-ascii log/16/trace351 --trace-config all --trace-time ftp://127.0.0.1:44119// --ftp-method nocwd > log/16/stdout351 2> log/16/stderr351 Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 75108 === End of file server.response === Start of file valgrind368 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind368 test 0339...[Check if --etag-save saved correct etag to a file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind339 ../src/curl -q --output log/61/curl339.out --include --trace-ascii log/61/trace339 --trace-config all --trace-time http://127.0.0.1:44381/339 --etag-save log/61/etag339 > log/61/stdout339 2> log/61/stderr339 339: protocol FAILED! There was no content at all in the file log/61/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/61/ dir after test 339 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind339 ../src/curl -q --output log/61/curl339.out --include --trace-ascii log/61/trace339 --trace-config all --trace-time http://127.0.0.1:44381/339 --etag-save log/61/etag339 > log/61/stdout339 2> log/61/stderr339 === End of file commands.log === Start of file http_server.log 09:40:43.027919 ====> Client connect 09:40:43.028301 accept_connection 3 returned 4 09:40:43.028588 accept_connection 3 returned 0 09:40:43.028773 Read 93 bytes 09:40:43.028890 Process 93 bytes request 09:40:43.028990 Got request: GET /verifiedserver HTTP/1.1 09:40:43.029109 Are-we-friendly question received 09:40:43.029358 Wrote request (93 bytes) input to log/61/server.input 09:40:43.029647 Identifying ourselves as friends 09:40:43.033965 Response sent (56 bytes) and written to log/61/server.response 09:40:43.034114 special request received, no persistency 09:40:43.034213 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44381... * Connected to 127.0.0.1 (127.0.0.1) port 44381 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44381 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73751 === End of file http_verify.out === Start of file server.cmd Testnum 339 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73751 === End of file server.response === Start of file valgrind339 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind339 test 0372...[Binary zero in data element.] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind372 ../src/curl -q --output log/1/curl372.out --include --trace-ascii log/1/trace372 --trace-config all --trace-time --raw http://127.0.0.1:40633/binary-zero-in-data-section/372 > log/1/stdout372 2> log/1/stderr372 372: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 372 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind372 ../src/curl -q --output log/1/curl372.out --include --trace-ascii log/1/trace372 --trace-config all --trace-time --raw http://127.0.0.1:40633/binary-zero-in-data-section/372 > log/1/stdout372 2> log/1/stderr372 === End of file commands.log === Start of file http_server.log 09:40:43.822356 ====> Client connect 09:40:43.822807 accept_connection 3 returned 4 09:40:43.822970 accept_connection 3 returned 0 09:40:43.823112 Read 93 bytes 09:40:43.823216 Process 93 bytes request 09:40:43.823307 Got request: GET /verifiedserver HTTP/1.1 09:40:43.823390 Are-we-friendly question received 09:40:43.823725 Wrote request (93 bytes) input to log/1/server.input 09:40:43.823912 Identifying ourselves as friends 09:40:43.824884 Response sent (56 bytes) and written to log/1/server.response 09:40:43.825002 special request received, no persistency 09:40:43.825081 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40633... * Connected to 127.0.0.1 (127.0.0.1) port 40633 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40633 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73806 === End of file http_verify.out === Start of file server.cmd Testnum 372 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73806 === End of file server.response === Start of file valgrind372 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind372 test 0380...[pick netrc password based on user name in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind380 ../src/curl -q --output log/5/curl380.out --include --trace-ascii log/5/trace380 --trace-config all --trace-time --netrc --netrc-file log/5/netrc380 ftp://mary@127.0.0.1:42831/ > log/5/stdout380 2> log/5/stderr380 380: protocol FAILED! There was no content at all in the file log/5/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/5/ dir after test 380 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind380 ../src/curl -q --output log/5/curl380.out --include --trace-ascii log/5/trace380 --trace-config all --trace-time --netrc --netrc-file log/5/netrc380 ftp://mary@127.0.0.1:42831/ > log/5/stdout380 2> log/5/stderr380 === End of file commands.log === Start of file ftp_server.log 09:40:43.790568 ====> Client connect 09:40:43.792535 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:43.795286 < "USER anonymous" 09:40:43.797118 > "331 We are happy you popped in![CR][LF]" 09:40:43.798336 < "PASS ftp@example.com" 09:40:43.800095 > "230 Welcome you silly person[CR][LF]" 09:40:43.801049 < "PWD" 09:40:43.801514 > "257 "/" is current directory[CR][LF]" 09:40:43.803696 < "EPSV" 09:40:43.804224 ====> Passive DATA channel requested by client 09:40:43.804431 DATA sockfilt for passive data channel starting... 09:40:43.825261 DATA sockfilt for passive data channel started (pid 93059) 09:40:43.831444 DATA sockfilt for passive data channel listens on port 42373 09:40:43.832275 > "229 Entering Passive Mode (|||42373|)[LF]" 09:40:43.832530 Client has been notified that DATA conn will be accepted on port 42373 09:40:43.835848 Client connects to port 42373 09:40:43.836185 ====> Client established passive DATA connection on port 42373 09:40:43.837503 < "TYPE I" 09:40:43.837991 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:43.840239 < "SIZE verifiedserver" 09:40:43.841855 > "213 17[CR][LF]" 09:40:43.843594 < "RETR verifiedserver" 09:40:43.844483 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:43.847530 =====> Closing passive DATA connection... 09:40:43.848638 Server disconnects passive DATA connection 09:40:43.849501 Fancy that; client wants to DISC, too 09:40:43.850309 Server disconnected passive DATA connection 09:40:43.850567 DATA sockfilt for passive data channel quits (pid 93059) 09:40:43.852906 DATA sockfilt for passive data channel quit (pid 93059) 09:40:43.853297 =====> Closed passive DATA connection 09:40:43.853738 > "226 File transfer complete[CR][LF]" 09:40:43.888117 < "QUIT" 09:40:43.889532 > "221 bye bye baby[CR][LF]" 09:40:43.893325 MAIN sockfilt said DISC 09:40:43.894258 ====> Client disconnected 09:40:43.895324 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:44.043613 ====> Client connect 09:40:44.045818 Received DATA (on stdin) 09:40:44.045983 > 160 bytes data, server => client 09:40:44.046567 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:44.046715 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:44.046796 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:44.047813 < 16 bytes data, client => server 09:40:44.047966 'USER anonymous\r\n' 09:40:44.049363 Received DATA (on stdin) 09:40:44.049863 > 33 bytes data, server => client 09:40:44.050067 '331 We are happy you popped in!\r\n' 09:40:44.051224 < 22 bytes data, client => server 09:40:44.051360 'PASS ftp@example.com\r\n' 09:40:44.052395 Received DATA (on stdin) 09:40:44.052613 > 30 bytes data, server => client 09:40:44.052798 '230 Welcome you silly person\r\n' 09:40:44.053366 < 5 bytes data, client => server 09:40:44.053577 'PWD\r\n' 09:40:44.055659 Received DATA (on stdin) 09:40:44.055830 > 30 bytes data, server => client 09:40:44.055946 '257 "/" is current directory\r\n' 09:40:44.056690 < 6 bytes data, client => server 09:40:44.056832 'EPSV\r\n' 09:40:44.086552 Received DATA (on stdin) 09:40:44.086682 > 38 bytes data, server => client 09:40:44.086775 '229 Entering Passive Mode (|||42373|)\n' 09:40:44.088590 < 8 bytes data, client => server 09:40:44.088978 'TYPE I\r\n' 09:40:44.092008 Received DATA (on stdin) 09:40:44.092146 > 33 bytes data, server => client 09:40:44.092238 '200 I modify TYPE as you wanted\r\n' 09:40:44.093104 < 21 bytes data, client => server 09:40:44.093257 'SIZE verifiedserver\r\n' 09:40:44.094566 Received DATA (on stdin) 09:40:44.094718 > 8 bytes data, server => client 09:40:44.095021 '213 17\r\n' 09:40:44.096412 < 21 bytes data, client => server 09:40:44.096654 'RETR verifiedserver\r\n' 09:40:44.097819 Received DATA (on stdin) 09:40:44.097977 > 29 bytes data, server => client 09:40:44.099041 '150 Binary junk (17 bytes).\r\n' 09:40:44.107931 Received DATA (on stdin) 09:40:44.108102 > 28 bytes data, server => client 09:40:44.108213 '226 File transfer complete\r\n' 09:40:44.140785 < 6 bytes data, client => server 09:40:44.140949 'QUIT\r\n' 09:40:44.142221 Received DATA (on stdin) 09:40:44.142370 > 18 bytes data, server => client 09:40:44.142623 '221 bye bye baby\r\n' 09:40:44.146619 ====> Client disconnect 09:40:44.147396 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:43.073164 Running IPv4 version 09:40:43.073928 Listening on port 42373 09:40:43.074429 Wrote pid 93059 to log/5/server/ftp_sockdata.pid 09:40:43.077789 Received PING (on stdin) 09:40:43.080564 Received PORT (on stdin) 09:40:43.089208 ====> Client connect 09:40:43.099420 Received DATA (on stdin) 09:40:43.099638 > 17 bytes data, server => client 09:40:43.100279 'WE ROOLZ: 77456\r\n' 09:40:43.102028 ====> Client disconnect 09:40:43.102898 Received DISC (on stdin) 09:40:43.103034 Crikey! Client also wants to disconnect 09:40:43.103530 Received ACKD (on stdin) 09:40:43.104637 Received QUIT (on stdin) 09:40:43.104776 quits 09:40:43.105209 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc380 # the following two lines were created while testing curl machine 127.0.0.1 login frankenstein password wrongone machine 127.0.0.1 login mary password yram === End of file netrc380 === Start of file server.cmd Testnum 380 === End of file server.cmd === Start of file valgrind380 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind380 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind386 ../src/curl -q --output log/63/curl386.out --include --trace-ascii log/63/trace386 --trace-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:38797/386 --next http://127.0.0.1:38797/3860002 > log/63/stdout386 2> log/63/stderr386 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind367 ../src/curl -q --output log/62/curl367.out --include --trace-ascii log/62/trace367 --trace-config all --trace-time http://:example@127.0.0.1:38899/367 > log/62/stdout367 2> log/62/stderr367 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind383 ../src/curl -q --output log/4/curl383.out --include --trace-ascii log/4/trace383 --trace-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:43013/383 > log/4/stdout383 2> log/4/stderr383 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind387 ../src/curl -q --output log/49/curl387.out --include --trace-ascii log/49/trace387 --trace-config all --trace-time http://127.0.0.1:42667/387 -sS --tr-encoding > log/49/stdout387 2> log/49/stderr387 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind381 ../src/curl -q --output log/50/curl381.out --include --trace-ascii log/50/trace381 --trace-config all --trace-time --netrc-optional --netrc-file log/50/netrc381 ftp://mary:drfrank@127.0.0.1:36567/ > log/50/stdout381 2> log/50/stderr381 * starts no server test 0378...[Reject using -T and -d at once] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind378 ../src/curl -q --output log/7/curl378.out --include --trace-ascii log/7/trace378 --trace-config all --trace-time -T log/7/378 -d input http://never-accessed > log/7/stdout378 2> log/7/stderr378 378: stderr FAILED: --- log/7/check-expected 2025-07-18 09:40:45.204700869 +0000 +++ log/7/check-generated 2025-07-18 09:40:45.203605910 +0000 @@ -1,2 +0,0 @@ -Warning: You can only select one HTTP request method! You asked for both PUT [CR][LF] -Warning: (-T, --upload-file) and POST (-d, --data).[CR][LF] == Contents of files in the log/7/ dir after test 378 === Start of file check-expected Warning: You can only select one HTTP request method! You asked for both PUT [CR][LF] Warning: (-T, --upload-file) and POST (-d, --data).[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind378 ../src/curl -q --output log/7/curl378.out --include --trace-ascii log/7/trace378 --trace-config all --trace-time -T log/7/378 -d input http://never-accessed > log/7/stdout378 2> log/7/stderr378 === End of file commands.log === Start of file server.cmd Testnum 378 === End of file server.cmd === Start of file valgrind378 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind378 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/15/server/ftp_server.pid" --logfile "log/15/ftp_server.log" --logdir "log/15" --portfile "log/15/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 38699 (log/15/server/ftp_server.port) RUN: FTP server is PID 90579 port 38699 * pid ftp => 90579 90579 test 0340...[FTP using %00 in path with singlecwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind340 ../src/curl -q --output log/15/curl340.out --include --trace-ascii log/15/trace340 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:38699/%00first/second/third/340 > log/15/stdout340 2> log/15/stderr340 340: protocol FAILED! There was no content at all in the file log/15/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/15/ dir after test 340 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind340 ../src/curl -q --output log/15/curl340.out --include --trace-ascii log/15/trace340 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:38699/%00first/second/third/340 > log/15/stdout340 2> log/15/stderr340 === End of file commands.log === Start of file ftp_server.log 09:40:43.120613 FTP server listens on port IPv4/38699 09:40:43.121498 logged pid 90579 in log/15/server/ftp_server.pid 09:40:43.121723 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:43.372104 Running IPv4 version 09:40:43.372766 Listening on port 38699 09:40:43.373227 Wrote pid 91462 to log/15/server/ftp_sockctrl.pid 09:40:43.373635 Wrote port 38699 to log/15/server/ftp_server.port 09:40:43.373806 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 340 === End of file server.cmd === Start of file valgrind340 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind340 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/17/server/tftp_server.pid" --portfile "log/17/server/tftp_server.port" --logfile "log/17/tftp_server.log" --logdir "log/17" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: TFTP server on PID 90308 port 57688 * pid tftp => 90308 90308 test 0332...[TFTP retrieve with blksize 400] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind332 ../src/curl -q --output log/17/curl332.out --include --trace-ascii log/17/trace332 --trace-config all --trace-time tftp://127.0.0.1:57688//332 --tftp-blksize 400 > log/17/stdout332 2> log/17/stderr332 332: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 332 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind332 ../src/curl -q --output log/17/curl332.out --include --trace-ascii log/17/trace332 --trace-config all --trace-time tftp://127.0.0.1:57688//332 --tftp-blksize 400 > log/17/stdout332 2> log/17/stderr332 === End of file commands.log === Start of file server.cmd Testnum 332 === End of file server.cmd === Start of file tftp_server.log 09:40:42.848589 Wrote pid 90308 to log/17/server/tftp_server.pid 09:40:42.849232 Wrote port 57688 to log/17/server/tftp_server.port 09:40:42.849336 Running IPv4 version on port UDP/57688 === End of file tftp_server.log === Start of file valgrind332 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind332 test 0366...[HTTP --retry-max-time with too long Retry-After] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind366 ../src/curl -q --output log/18/curl366.out --include --trace-ascii log/18/trace366 --trace-config all --trace-time http://127.0.0.1:41285/366 --retry 2 --retry-max-time 10 > log/18/stdout366 2> log/18/stderr366 366: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 366 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind366 ../src/curl -q --output log/18/curl366.out --include --trace-ascii log/18/trace366 --trace-config all --trace-time http://127.0.0.1:41285/366 --retry 2 --retry-max-time 10 > log/18/stdout366 2> log/18/stderr366 === End of file commands.log === Start of file http_server.log 09:40:43.853282 ====> Client connect 09:40:43.853769 accept_connection 3 returned 4 09:40:43.853963 accept_connection 3 returned 0 09:40:43.861581 Read 93 bytes 09:40:43.861743 Process 93 bytes request 09:40:43.861836 Got request: GET /verifiedserver HTTP/1.1 09:40:43.861920 Are-we-friendly question received 09:40:43.862193 Wrote request (93 bytes) input to log/18/server.input 09:40:43.862580 Identifying ourselves as friends 09:40:43.863388 Response sent (56 bytes) and written to log/18/server.response 09:40:43.863595 special request received, no persistency 09:40:43.863682 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41285... * Connected to 127.0.0.1 (127.0.0.1) port 41285 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41285 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73790 === End of file http_verify.out === Start of file server.cmd Testnum 366 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73790 === End of file server.response === Start of file valgrind366 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind366 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind392 ../src/curl -q --output log/57/curl392.out --include --trace-ascii log/57/trace392 --trace-config all --trace-time -4 http://localhost:35945/392 -b none http://localhost:35945/392 > log/57/stdout392 2> log/57/stderr392 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind388 ../src/curl -q --include --trace-ascii log/46/trace388 --trace-config all --trace-time http://127.0.0.1:46523/3880001 -u testuser:testpass --digest http://127.0.0.1:46523/3880002 > log/46/stdout388 2> log/46/stderr388 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind384 ../src/curl -q --output log/9/curl384.out --include --trace-ascii log/9/trace384 --trace-config all --trace-time --json @- http://127.0.0.1:46607/384 -H "Accept: foobar/*" log/9/stdout384 2> log/9/stderr384 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind393 ../src/curl -q --output log/54/curl393.out --include --trace-ascii log/54/trace393 --trace-config all --trace-time http://127.0.0.1:44921/393 --max-filesize 2000000 > log/54/stdout393 2> log/54/stderr393 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind389 ../src/curl -q --output log/36/curl389.out --include --trace-ascii log/36/trace389 --trace-config all --trace-time -4 http://curlmachine.localhost:44255/389 > log/36/stdout389 2> log/36/stderr389 test 0371...[using more -o than URLs in the command line] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind371 ../src/curl -q --output log/21/curl371.out --include --trace-ascii log/21/trace371 --trace-config all --trace-time http://127.0.0.1:34827/371 -o log/21/dump -o log/21/dump2 --no-progress-meter > log/21/stdout371 2> log/21/stderr371 371: stderr FAILED: --- log/21/check-expected 2025-07-18 09:40:45.310363116 +0000 +++ log/21/check-generated 2025-07-18 09:40:45.309605856 +0000 @@ -1 +0,0 @@ -Warning: Got more output options than URLs[CR][LF] == Contents of files in the log/21/ dir after test 371 === Start of file check-expected Warning: Got more output options than URLs[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind371 ../src/curl -q --output log/21/curl371.out --include --trace-ascii log/21/trace371 --trace-config all --trace-time http://127.0.0.1:34827/371 -o log/21/dump -o log/21/dump2 --no-progress-meter > log/21/stdout371 2> log/21/stderr371 === End of file commands.log === Start of file http_server.log 09:40:43.914929 ====> Client connect 09:40:43.915521 accept_connection 3 returned 4 09:40:43.915784 accept_connection 3 returned 0 09:40:43.925239 Read 93 bytes 09:40:43.925408 Process 93 bytes request 09:40:43.925615 Got request: GET /verifiedserver HTTP/1.1 09:40:43.925731 Are-we-friendly question received 09:40:43.926008 Wrote request (93 bytes) input to log/21/server.input 09:40:43.926361 Identifying ourselves as friends 09:40:43.927361 Response sent (56 bytes) and written to log/21/server.response 09:40:43.927624 special request received, no persistency 09:40:43.927734 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34827... * Connected to 127.0.0.1 (127.0.0.1) port 34827 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34827 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73789 === End of file http_verify.out === Start of file server.cmd Testnum 371 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73789 === End of file server.response === Start of file valgrind371 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind371 test 0369...[--etag-save with bad path then working transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind369 ../src/curl -q --output log/23/curl369.out --include --trace-ascii log/23/trace369 --trace-config all --trace-time http://127.0.0.1:42467/369 --etag-save log/23/nowhere/etag369 --next http://127.0.0.1:42467/369 --include --output log/23/curl369.out > log/23/stdout369 2> log/23/stderr369 369: protocol FAILED! There was no content at all in the file log/23/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/23/ dir after test 369 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind369 ../src/curl -q --output log/23/curl369.out --include --trace-ascii log/23/trace369 --trace-config all --trace-time http://127.0.0.1:42467/369 --etag-save log/23/nowhere/etag369 --next http://127.0.0.1:42467/369 --include --output log/23/curl369.out > log/23/stdout369 2> log/23/stderr369 === End of file commands.log === Start of file http_server.log 09:40:44.015865 ====> Client connect 09:40:44.016156 accept_connection 3 returned 4 09:40:44.016311 accept_connection 3 returned 0 09:40:44.016985 Read 93 bytes 09:40:44.017145 Process 93 bytes request 09:40:44.017240 Got request: GET /verifiedserver HTTP/1.1 09:40:44.017325 Are-we-friendly question received 09:40:44.017719 Wrote request (93 bytes) input to log/23/server.input 09:40:44.017919 Identifying ourselves as friends 09:40:44.021571 Response sent (56 bytes) and written to log/23/server.response 09:40:44.021724 special request received, no persistency 09:40:44.021793 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42467... * Connected to 127.0.0.1 (127.0.0.1) port 42467 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42467 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73788 === End of file http_verify.out === Start of file server.cmd Testnum 369 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73788 === End of file server.response === Start of file valgrind369 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind369 test 0374...[Valid gif with two frames. No new line in data section.] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind374 ../src/curl -q --output log/24/curl374.out --include --trace-ascii log/24/trace374 --trace-config all --trace-time http://127.0.0.1:39259/gif/374 > log/24/stdout374 2> log/24/stderr374 374: protocol FAILED! There was no content at all in the file log/24/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/24/ dir after test 374 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind374 ../src/curl -q --output log/24/curl374.out --include --trace-ascii log/24/trace374 --trace-config all --trace-time http://127.0.0.1:39259/gif/374 > log/24/stdout374 2> log/24/stderr374 === End of file commands.log === Start of file http_server.log 09:40:43.828321 ====> Client connect 09:40:43.828732 accept_connection 3 returned 4 09:40:43.828881 accept_connection 3 returned 0 09:40:43.829001 Read 93 bytes 09:40:43.829090 Process 93 bytes request 09:40:43.829170 Got request: GET /verifiedserver HTTP/1.1 09:40:43.829243 Are-we-friendly question received 09:40:43.829528 Wrote request (93 bytes) input to log/24/server.input 09:40:43.829705 Identifying ourselves as friends 09:40:43.833694 Response sent (56 bytes) and written to log/24/server.response 09:40:43.833816 special request received, no persistency 09:40:43.833899 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39259... * Connected to 127.0.0.1 (127.0.0.1) port 39259 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39259 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73787 === End of file http_verify.out === Start of file server.cmd Testnum 374 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73787 === End of file server.response === Start of file valgrind374 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind374 test 0376...[--remove-on-error] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind376 ../src/curl -q --include --trace-ascii log/29/trace376 --trace-config all --trace-time http://127.0.0.1:36877/376 -o log/29/save-376 --remove-on-error > log/29/stdout376 2> log/29/stderr376 376: protocol FAILED! There was no content at all in the file log/29/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/29/ dir after test 376 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind376 ../src/curl -q --include --trace-ascii log/29/trace376 --trace-config all --trace-time http://127.0.0.1:36877/376 -o log/29/save-376 --remove-on-error > log/29/stdout376 2> log/29/stderr376 === End of file commands.log === Start of file http_server.log 09:40:44.053578 ====> Client connect 09:40:44.053916 accept_connection 3 returned 4 09:40:44.054081 accept_connection 3 returned 0 09:40:44.054218 Read 93 bytes 09:40:44.054321 Process 93 bytes request 09:40:44.054410 Got request: GET /verifiedserver HTTP/1.1 09:40:44.054581 Are-we-friendly question received 09:40:44.054807 Wrote request (93 bytes) input to log/29/server.input 09:40:44.055010 Identifying ourselves as friends 09:40:44.058865 Response sent (56 bytes) and written to log/29/server.response 09:40:44.058996 special request received, no persistency 09:40:44.059072 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36877... * Connected to 127.0.0.1 (127.0.0.1) port 36877 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36877 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73782 === End of file http_verify.out === Start of file server.cmd Testnum 376 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73782 === End of file server.response === Start of file valgrind376 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind376 test 0385...[HTTP with --json x 2] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind385 ../src/curl -q --output log/48/curl385.out --include --trace-ascii log/48/trace385 --trace-config all --trace-time --json '{ "drink": "coffe",' --json ' "crunch": "cookie" }' http://127.0.0.1:46339/385 -H "Content-Type: drinks/hot" > log/48/stdout385 2> log/48/stderr385 385: protocol FAILED! There was no content at all in the file log/48/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/48/ dir after test 385 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind385 ../src/curl -q --output log/48/curl385.out --include --trace-ascii log/48/trace385 --trace-config all --trace-time --json '{ "drink": "coffe",' --json ' "crunch": "cookie" }' http://127.0.0.1:46339/385 -H "Content-Type: drinks/hot" > log/48/stdout385 2> log/48/stderr385 === End of file commands.log === Start of file http_server.log 09:40:44.156137 ====> Client connect 09:40:44.156682 accept_connection 3 returned 4 09:40:44.156880 accept_connection 3 returned 0 09:40:44.160216 Read 93 bytes 09:40:44.160378 Process 93 bytes request 09:40:44.160562 Got request: GET /verifiedserver HTTP/1.1 09:40:44.160696 Are-we-friendly question received 09:40:44.160982 Wrote request (93 bytes) input to log/48/server.input 09:40:44.161210 Identifying ourselves as friends 09:40:44.161937 Response sent (56 bytes) and written to log/48/server.response 09:40:44.162055 special request received, no persistency 09:40:44.162125 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46339... * Connected to 127.0.0.1 (127.0.0.1) port 46339 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46339 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73764 === End of file http_verify.out === Start of file server.cmd Testnum 385 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73764 === End of file server.response === Start of file valgrind385 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind385 test 0361...[HTTP GET --fail-with-body on HTTP error return - twice] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind361 ../src/curl -q --output log/55/curl361.out --include --trace-ascii log/55/trace361 --trace-config all --trace-time http://127.0.0.1:33071/361 http://127.0.0.1:33071/361 --fail-with-body > log/55/stdout361 2> log/55/stderr361 361: protocol FAILED! There was no content at all in the file log/55/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/55/ dir after test 361 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind361 ../src/curl -q --output log/55/curl361.out --include --trace-ascii log/55/trace361 --trace-config all --trace-time http://127.0.0.1:33071/361 http://127.0.0.1:33071/361 --fail-with-body > log/55/stdout361 2> log/55/stderr361 === End of file commands.log === Start of file http_server.log 09:40:43.512630 ====> Client connect 09:40:43.513007 accept_connection 3 returned 4 09:40:43.513232 accept_connection 3 returned 0 09:40:43.513427 Read 93 bytes 09:40:43.513644 Process 93 bytes request 09:40:43.513764 Got request: GET /verifiedserver HTTP/1.1 09:40:43.513892 Are-we-friendly question received 09:40:43.514201 Wrote request (93 bytes) input to log/55/server.input 09:40:43.514696 Identifying ourselves as friends 09:40:43.518311 Response sent (56 bytes) and written to log/55/server.response 09:40:43.518533 special request received, no persistency 09:40:43.518635 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33071... * Connected to 127.0.0.1 (127.0.0.1) port 33071 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33071 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73757 === End of file http_verify.out === Start of file server.cmd Testnum 361 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73757 === End of file server.response === Start of file valgrind361 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind361 test 0362...[FTP resume upload file with nothing to start from] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind362 ../src/curl -q --output log/58/curl362.out --include --trace-ascii log/58/trace362 --trace-config all --trace-time ftp://127.0.0.1:38901/362 -T log/58/test362.txt --continue-at - > log/58/stdout362 2> log/58/stderr362 362: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 362 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind362 ../src/curl -q --output log/58/curl362.out --include --trace-ascii log/58/trace362 --trace-config all --trace-time ftp://127.0.0.1:38901/362 -T log/58/test362.txt --continue-at - > log/58/stdout362 2> log/58/stderr362 === End of file commands.log === Start of file ftp_server.log 09:40:43.537927 ====> Client connect 09:40:43.540375 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:43.543479 < "USER anonymous" 09:40:43.544337 > "331 We are happy you popped in![CR][LF]" 09:40:43.546207 < "PASS ftp@example.com" 09:40:43.547371 > "230 Welcome you silly person[CR][LF]" 09:40:43.549080 < "PWD" 09:40:43.550846 > "257 "/" is current directory[CR][LF]" 09:40:43.552042 < "EPSV" 09:40:43.552352 ====> Passive DATA channel requested by client 09:40:43.552613 DATA sockfilt for passive data channel starting... 09:40:43.565576 DATA sockfilt for passive data channel started (pid 92461) 09:40:43.566671 DATA sockfilt for passive data channel listens on port 34879 09:40:43.567194 > "229 Entering Passive Mode (|||34879|)[LF]" 09:40:43.567448 Client has been notified that DATA conn will be accepted on port 34879 09:40:43.569431 Client connects to port 34879 09:40:43.569688 ====> Client established passive DATA connection on port 34879 09:40:43.570723 < "TYPE I" 09:40:43.571244 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:43.573204 < "SIZE verifiedserver" 09:40:43.574446 > "213 17[CR][LF]" 09:40:43.575539 < "RETR verifiedserver" 09:40:43.576029 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:43.576707 =====> Closing passive DATA connection... 09:40:43.578944 Server disconnects passive DATA connection 09:40:43.579217 Fancy that; client wants to DISC, too 09:40:43.580605 Server disconnected passive DATA connection 09:40:43.581005 DATA sockfilt for passive data channel quits (pid 92461) 09:40:43.583085 DATA sockfilt for passive data channel quit (pid 92461) 09:40:43.583320 =====> Closed passive DATA connection 09:40:43.583603 > "226 File transfer complete[CR][LF]" 09:40:43.620399 < "QUIT" 09:40:43.621540 > "221 bye bye baby[CR][LF]" 09:40:43.623135 MAIN sockfilt said DISC 09:40:43.623444 ====> Client disconnected 09:40:43.624004 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:43.789682 ====> Client connect 09:40:43.792888 Received DATA (on stdin) 09:40:43.793053 > 160 bytes data, server => client 09:40:43.793230 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:43.793357 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:43.793579 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:43.796066 < 16 bytes data, client => server 09:40:43.796233 'USER anonymous\r\n' 09:40:43.797634 Received DATA (on stdin) 09:40:43.797798 > 33 bytes data, server => client 09:40:43.798403 '331 We are happy you popped in!\r\n' 09:40:43.799144 < 22 bytes data, client => server 09:40:43.799282 'PASS ftp@example.com\r\n' 09:40:43.800231 Received DATA (on stdin) 09:40:43.800374 > 30 bytes data, server => client 09:40:43.800614 '230 Welcome you silly person\r\n' 09:40:43.802097 < 5 bytes data, client => server 09:40:43.802250 'PWD\r\n' 09:40:43.803346 Received DATA (on stdin) 09:40:43.803591 > 30 bytes data, server => client 09:40:43.803779 '257 "/" is current directory\r\n' 09:40:43.804931 < 6 bytes data, client => server 09:40:43.805067 'EPSV\r\n' 09:40:43.821523 Received DATA (on stdin) 09:40:43.821670 > 38 bytes data, server => client 09:40:43.821762 '229 Entering Passive Mode (|||34879|)\n' 09:40:43.823104 < 8 bytes data, client => server 09:40:43.823250 'TYPE I\r\n' 09:40:43.825267 Received DATA (on stdin) 09:40:43.825421 > 33 bytes data, server => client 09:40:43.825634 '200 I modify TYPE as you wanted\r\n' 09:40:43.826351 < 21 bytes data, client => server 09:40:43.826574 'SIZE verifiedserver\r\n' 09:40:43.827331 Received DATA (on stdin) 09:40:43.827545 > 8 bytes data, server => client 09:40:43.827720 '213 17\r\n' 09:40:43.828570 < 21 bytes data, client => server 09:40:43.828698 'RETR verifiedserver\r\n' 09:40:43.830550 Received DATA (on stdin) 09:40:43.830690 > 29 bytes data, server => client 09:40:43.830780 '150 Binary junk (17 bytes).\r\n' 09:40:43.837715 Received DATA (on stdin) 09:40:43.837850 > 28 bytes data, server => client 09:40:43.837928 '226 File transfer complete\r\n' 09:40:43.873258 < 6 bytes data, client => server 09:40:43.873413 'QUIT\r\n' 09:40:43.874518 Received DATA (on stdin) 09:40:43.874662 > 18 bytes data, server => client 09:40:43.874835 '221 bye bye baby\r\n' 09:40:43.876565 ====> Client disconnect 09:40:43.879317 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:43.817692 Running IPv4 version 09:40:43.818269 Listening on port 34879 09:40:43.818832 Wrote pid 92461 to log/58/server/ftp_sockdata.pid 09:40:43.818995 Received PING (on stdin) 09:40:43.819769 Received PORT (on stdin) 09:40:43.822845 ====> Client connect 09:40:43.831115 Received DATA (on stdin) 09:40:43.831252 > 17 bytes data, server => client 09:40:43.831333 'WE ROOLZ: 77973\r\n' 09:40:43.832081 ====> Client disconnect 09:40:43.833309 Received DISC (on stdin) 09:40:43.833757 Crikey! Client also wants to disconnect 09:40:43.833907 Received ACKD (on stdin) 09:40:43.835001 Received QUIT (on stdin) 09:40:43.835126 quits 09:40:43.835591 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 362 === End of file server.cmd === Start of file test362.txt data to see that FTP works so does it? === End of file test362.txt === Start of file valgrind362 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind362 test 0365...[HTTP/1.1 with chunked AND Content-Length headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind365 ../src/curl -q --output log/59/curl365.out --include --trace-ascii log/59/trace365 --trace-config all --trace-time http://127.0.0.1:43695/365 > log/59/stdout365 2> log/59/stderr365 365: protocol FAILED! There was no content at all in the file log/59/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/59/ dir after test 365 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind365 ../src/curl -q --output log/59/curl365.out --include --trace-ascii log/59/trace365 --trace-config all --trace-time http://127.0.0.1:43695/365 > log/59/stdout365 2> log/59/stderr365 === End of file commands.log === Start of file http_server.log 09:40:43.783806 ====> Client connect 09:40:43.784117 accept_connection 3 returned 4 09:40:43.784311 accept_connection 3 returned 0 09:40:43.786052 Read 93 bytes 09:40:43.786198 Process 93 bytes request 09:40:43.786295 Got request: GET /verifiedserver HTTP/1.1 09:40:43.786386 Are-we-friendly question received 09:40:43.786711 Wrote request (93 bytes) input to log/59/server.input 09:40:43.786894 Identifying ourselves as friends 09:40:43.787394 Response sent (56 bytes) and written to log/59/server.response 09:40:43.787568 special request received, no persistency 09:40:43.787642 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43695... * Connected to 127.0.0.1 (127.0.0.1) port 43695 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43695 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73752 === End of file http_verify.out === Start of file server.cmd Testnum 365 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73752 === End of file server.response === Start of file valgrind365 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind365 test 0373...[Chunked transfer encoding - Multiple valid chunks with binary zeros.] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind373 ../src/curl -q --output log/60/curl373.out --include --trace-ascii log/60/trace373 --trace-config all --trace-time http://127.0.0.1:38843/chunked-transfer-encoding/373 > log/60/stdout373 2> log/60/stderr373 373: protocol FAILED! There was no content at all in the file log/60/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/60/ dir after test 373 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind373 ../src/curl -q --output log/60/curl373.out --include --trace-ascii log/60/trace373 --trace-config all --trace-time http://127.0.0.1:38843/chunked-transfer-encoding/373 > log/60/stdout373 2> log/60/stderr373 === End of file commands.log === Start of file http_server.log 09:40:43.891761 ====> Client connect 09:40:43.892078 accept_connection 3 returned 4 09:40:43.892239 accept_connection 3 returned 0 09:40:43.893174 Read 93 bytes 09:40:43.893327 Process 93 bytes request 09:40:43.893528 Got request: GET /verifiedserver HTTP/1.1 09:40:43.893659 Are-we-friendly question received 09:40:43.893897 Wrote request (93 bytes) input to log/60/server.input 09:40:43.894099 Identifying ourselves as friends 09:40:43.895987 Response sent (56 bytes) and written to log/60/server.response 09:40:43.896113 special request received, no persistency 09:40:43.896181 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38843... * Connected to 127.0.0.1 (127.0.0.1) port 38843 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38843 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73750 === End of file http_verify.out === Start of file server.cmd Testnum 373 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73750 === End of file server.response === Start of file valgrind373 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind373 test 0379...[--remove-on-error with --no-clobber and an added number] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind379 ../src/curl -q --include --trace-ascii log/2/trace379 --trace-config all --trace-time http://127.0.0.1:39659/379 -o log/2/save --remove-on-error --no-clobber > log/2/stdout379 2> log/2/stderr379 379: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 379 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind379 ../src/curl -q --include --trace-ascii log/2/trace379 --trace-config all --trace-time http://127.0.0.1:39659/379 -o log/2/save --remove-on-error --no-clobber > log/2/stdout379 2> log/2/stderr379 === End of file commands.log === Start of file http_server.log 09:40:44.041019 ====> Client connect 09:40:44.041421 accept_connection 3 returned 4 09:40:44.0CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind391 ../src/curl -q --output log/39/curl391.out --include --trace-ascii log/39/trace391 --trace-config all --trace-time http://127.0.0.1:42899/../../391 --path-as-is -L > log/39/stdout391 2> log/39/stderr391 41824 accept_connection 3 returned 0 09:40:44.042019 Read 93 bytes 09:40:44.042204 Process 93 bytes request 09:40:44.042354 Got request: GET /verifiedserver HTTP/1.1 09:40:44.042562 Are-we-friendly question received 09:40:44.042843 Wrote request (93 bytes) input to log/2/server.input 09:40:44.043107 Identifying ourselves as friends 09:40:44.049419 Response sent (56 bytes) and written to log/2/server.response 09:40:44.049660 special request received, no persistency 09:40:44.049767 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39659... * Connected to 127.0.0.1 (127.0.0.1) port 39659 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39659 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73807 === End of file http_verify.out === Start of file save exists before command runs === End of file save === Start of file server.cmd Testnum 379 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73807 === End of file server.response === Start of file valgrind379 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind379 test 0383...[HTTP with --json] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind383 ../src/curl -q --output log/4/curl383.out --include --trace-ascii log/4/trace383 --trace-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:43013/383 > log/4/stdout383 2> log/4/stderr383 383: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 383 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind383 ../src/curl -q --output log/4/curl383.out --include --trace-ascii log/4/trace383 --trace-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:43013/383 > log/4/stdout383 2> log/4/stderr383 === End of file commands.log === Start of file http_server.log 09:40:44.214875 ====> Client connect 09:40:44.215288 accept_connection 3 returned 4 09:40:44.215566 accept_connection 3 returned 0 09:40:44.216767 Read 93 bytes 09:40:44.216909 Process 93 bytes request 09:40:44.217000 Got request: GET /verifiedserver HTTP/1.1 09:40:44.217086 Are-we-friendly question received 09:40:44.217323 Wrote request (93 bytes) input to log/4/server.input 09:40:44.217632 Identifying ourselves as friends 09:40:44.222024 Response sent (56 bytes) and written to log/4/server.response 09:40:44.222154 special request received, no persistency 09:40:44.222230 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43013... * Connected to 127.0.0.1 (127.0.0.1) port 43013 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43013 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73808 === End of file http_verify.out === Start of file server.cmd Testnum 383 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73808 === End of file server.response === Start of file valgrind383 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind383 test 0384...[HTTP with --json from stdin] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind384 ../src/curl -q --output log/9/curl384.out --include --trace-ascii log/9/trace384 --trace-config all --trace-time --json @- http://127.0.0.1:46607/384 -H "Accept: foobar/*" log/9/stdout384 2> log/9/stderr384 384: protocol FAILED! There was no content at all in the file log/9/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/9/ dir after test 384 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind384 ../src/curl -q --output log/9/curl384.out --include --trace-ascii log/9/trace384 --trace-config all --trace-time --json @- http://127.0.0.1:46607/384 -H "Accept: foobar/*" log/9/stdout384 2> log/9/stderr384 === End of file commands.log === Start of file http_server.log 09:40:44.290087 ====> Client connect 09:40:44.290408 accept_connection 3 returned 4 09:40:44.290758 accept_connection 3 returned 0 09:40:44.291573 Read 93 bytes 09:40:44.291763 Process 93 bytes request 09:40:44.291871 Got request: GET /verifiedserver HTTP/1.1 09:40:44.292006 Are-we-friendly question received 09:40:44.292298 Wrote request (93 bytes) input to log/9/server.input 09:40:44.292678 Identifying ourselves as friends 09:40:44.293359 Response sent (56 bytes) and written to log/9/server.response 09:40:44.293552 special request received, no persistency 09:40:44.293657 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46607... * Connected to 127.0.0.1 (127.0.0.1) port 46607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46607 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73797 === End of file http_verify.out === Start of file server.cmd Testnum 384 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73797 === End of file server.response === Start of file stdin-for-384 { "drink": "coffe" } === End of file stdin-for-384 === Start of file valgrind384 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind384 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/16/server/ftp_server.pid" --logfile "log/16/ftp_server.log" --logdir "log/16" --portfile "log/16/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 44119 (log/16/server/ftp_server.port) RUN: FTP server is PID 90762 port 44119 * pid ftp => 90762 90762 test 0351...[FTP root dir list nocwd] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind351 ../src/curl -q --output log/16/curl351.out --include --trace-ascii log/16/trace351 --trace-config all --trace-time ftp://127.0.0.1:44119// --ftp-method nocwd > log/16/stdout351 2> log/16/stderr351 351: protocol FAILED! There was no content at all in the file log/16/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/16/ dir after test 351 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind351 ../src/curl -q --output log/16/curl351.out --include --trace-ascii log/16/trace351 --trace-config all --trace-time ftp://127.0.0.1:44119// --ftp-method nocwd > log/16/stdout351 2> log/16/stderr351 === End of file commands.log === Start of file ftp_server.log 09:40:43.116469 FTP server listens on port IPv4/44119 09:40:43.117470 logged pid 90762 in log/16/server/ftp_server.pid 09:40:43.117821 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:43.367552 Running IPv4 version 09:40:43.368205 Listening on port 44119 09:40:43.368829 Wrote pid 91410 to log/16/server/ftp_sockctrl.pid 09:40:43.369191 Wrote port 44119 to log/16/server/ftp_server.port 09:40:43.369368 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 351 === End of file server.cmd === Start of file valgrind351 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind351 test 0389...[*.localhost is a local host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind389 ../src/curl -q --output log/36/curl389.out --include --trace-ascii log/36/trace389 --trace-config all --trace-time -4 http://curlmachine.localhost:44255/389 > log/36/stdout389 2> log/36/stderr389 389: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 389 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind389 ../src/curl -q --output log/36/curl389.out --include --trace-ascii log/36/trace389 --trace-config all --trace-time -4 http://curlmachine.localhost:44255/389 > log/36/stdout389 2> log/36/stderr389 === End of file commands.log === Start of file http_server.log 09:40:44.539621 ====> Client connect 09:40:44.539981 accept_connection 3 returned 4 09:40:44.540167 accept_connection 3 returned 0 09:40:44.541143 Read 93 bytes 09:40:44.541331 Process 93 bytes request 09:40:44.541547 Got request: GET /verifiedserver HTTP/1.1 09:40:44.541704 Are-we-friendly question received 09:40:44.541981 Wrote request (93 bytes) input to log/36/server.input 09:40:44.542173 Identifying ourselves as friends 09:40:44.544839 Response sent (56 bytes) and written to log/36/server.response 09:40:44.544980 special request received, no persistency 09:40:44.545062 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44255... * Connected to 127.0.0.1 (127.0.0.1) port 44255 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44255 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 77175 === End of file http_verify.out === Start of file server.cmd Testnum 389 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 77175 === End of file server.response === Start of file valgrind389 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind389 test 0388...[HTTP with Digest and multiple qop values with leading space] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind388 ../src/curl -q --include --trace-ascii log/46/trace388 --trace-config all --trace-time http://127.0.0.1:46523/3880001 -u testuser:testpass --digest http://127.0.0.1:46523/3880002 > log/46/stdout388 2> log/46/stderr388 388: stdout FAILED: --- log/46/check-expected 2025-07-18 09:40:45.593695152 +0000 +++ log/46/check-generated 2025-07-18 09:40:45.592605713 +0000 @@ -1,30 +0,0 @@ -HTTP/1.1 401 Authorization Required swsclose[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 200 OK[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 23[CR][LF] -[CR][LF] -This IS the real page![LF] -HTTP/1.1 401 Authorization Required swsclose[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 200 OK[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 30[CR][LF] -[CR][LF] -This IS the second real page![LF] == Contents of files in the log/46/ dir after test 388 === Start of file check-expected HTTP/1.1 401 Authorization Required swsclose[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 200 OK[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 23[CR][LF] [CR][LF] This IS the real page![LF] HTTP/1.1 401 Authorization Required swsclose[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 200 OK[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 30[CR][LF] [CR][LF] This IS the second real page![LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind388 ../src/curl -q --include --trace-ascii log/46/trace388 --trace-config all --trace-time http://127.0.0.1:46523/3880001 -u testuser:testpass --digest http://127.0.0.1:46523/3880002 > log/46/stdout388 2> log/46/stderr388 === End of file commands.log === Start of file http_server.log 09:40:44.222099 ====> Client connect 09:40:44.222575 accept_connection 3 returned 4 09:40:44.222778 accept_connection 3 returned 0 09:40:44.223349 Read 93 bytes 09:40:44.223570 Process 93 bytes request 09:40:44.223753 Got request: GET /verifiedserver HTTP/1.1 09:40:44.223875 Are-we-friendly question received 09:40:44.224172 Wrote request (93 bytes) input to log/46/server.input 09:40:44.224531 Identifying ourselves as friends 09:40:44.225189 Response sent (56 bytes) and written to log/46/server.response 09:40:44.225376 special request received, no persistency 09:40:44.225569 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46523... * Connected to 127.0.0.1 (127.0.0.1) port 46523 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46523 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 75714 === End of file http_verify.out === Start of file server.cmd Testnum 388 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 75714 === End of file server.response === Start of file valgrind388 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind388 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind395 ../src/curl -q --output log/56/curl395.out --include --trace-ascii log/56/trace395 --trace-config all --trace-time http://127.0.0.1:43265/395 > log/56/stdout395 2> log/56/stderr395 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind399 ../src/curl -q --output log/32/curl399.out --include --trace-ascii log/32/trace399 --trace-config all --trace-time -K log/32/input%TESTNUM > log/32/stdout399 2> log/32/stderr399 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind398 ../src/curl -q --output log/6/curl398.out --include --trace-ascii log/6/trace398 --trace-config all --trace-time http://127.0.0.1:37181/398 > log/6/stdout398 2> log/6/stderr398 test 0387...[Response with overly long compression chain] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind387 ../src/curl -q --output log/49/curl387.out --include --trace-ascii log/49/trace387 --trace-config all --trace-time http://127.0.0.1:42667/387 -sS --tr-encoding > log/49/stdout387 2> log/49/stderr387 387: stderr FAILED: --- log/49/check-expected 2025-07-18 09:40:45.676296910 +0000 +++ log/49/check-generated 2025-07-18 09:40:45.674605671 +0000 @@ -1 +0,0 @@ -curl: (61) Reject response due to more than 5 content encodings[CR][LF] == Contents of files in the log/49/ dir after test 387 === Start of file check-expected curl: (61) Reject response due to more than 5 content encodings[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind387 ../src/curl -q --output log/49/curl387.out --include --trace-ascii log/49/trace387 --trace-config all --trace-time http://127.0.0.1:42667/387 -sS --tr-encoding > log/49/stdout387 2> log/49/stderr387 === End of file commands.log === Start of file http_server.log 09:40:44.336045 ====> Client connect 09:40:44.336348 accept_connection 3 returned 4 09:40:44.336634 accept_connection 3 returned 0 09:40:44.337351 Read 93 bytes 09:40:44.337593 Process 93 bytes request 09:40:44.337717 Got request: GET /verifiedserver HTTP/1.1 09:40:44.337810 Are-we-friendly question received 09:40:44.338027 Wrote request (93 bytes) input to log/49/server.input 09:40:44.338231 Identifying ourselves as friends 09:40:44.338830 Response sent (56 bytes) and written to log/49/server.response 09:40:44.338930 special request received, no persistency 09:40:44.338994 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42667... * Connected to 127.0.0.1 (127.0.0.1) port 42667 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42667 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73760 === End of file http_verify.out === Start of file server.cmd Testnum 387 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73760 === End of file server.response === Start of file valgrind387 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind387 test 0381...[netrc-optional lets URL creds override netrc] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind381 ../src/curl -q --output log/50/curl381.out --include --trace-ascii log/50/trace381 --trace-config all --trace-time --netrc-optional --netrc-file log/50/netrc381 ftp://mary:drfrank@127.0.0.1:36567/ > log/50/stdout381 2> log/50/stderr381 381: protocol FAILED! There was no content at all in the file log/50/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/50/ dir after test 381 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind381 ../src/curl -q --output log/50/curl381.out --include --trace-ascii log/50/trace381 --trace-config all --trace-time --netrc-optional --netrc-file log/50/netrc381 ftp://mary:drfrank@127.0.0.1:36567/ > log/50/stdout381 2> log/50/stderr381 === End of file commands.log === Start of file ftp_server.log 09:40:43.850383 ====> Client connect 09:40:43.855998 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:43.859278 < "USER anonymous" 09:40:43.860247 > "331 We are happy you popped in![CR][LF]" 09:40:43.865978 < "PASS ftp@example.com" 09:40:43.869246 > "230 Welcome you silly person[CR][LF]" 09:40:43.870101 < "PWD" 09:40:43.872903 > "257 "/" is current directory[CR][LF]" 09:40:43.875676 < "EPSV" 09:40:43.876068 ====> Passive DATA channel requested by client 09:40:43.876256 DATA sockfilt for passive data channel starting... 09:40:43.903665 DATA sockfilt for passive data channel started (pid 93256) 09:40:43.904873 DATA sockfilt for passive data channel listens on port 38125 09:40:43.905719 > "229 Entering Passive Mode (|||38125|)[LF]" 09:40:43.906134 Client has been notified that DATA conn will be accepted on port 38125 09:40:43.908717 Client connects to port 38125 09:40:43.909105 ====> Client established passive DATA connection on port 38125 09:40:43.910027 < "TYPE I" 09:40:43.910457 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:43.912934 < "SIZE verifiedserver" 09:40:43.914830 > "213 17[CR][LF]" 09:40:43.916138 < "RETR verifiedserver" 09:40:43.916663 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:43.917498 =====> Closing passive DATA connection... 09:40:43.917722 Server disconnects passive DATA connection 09:40:43.922205 Server disconnected passive DATA connection 09:40:43.922616 DATA sockfilt for passive data channel quits (pid 93256) 09:40:43.925118 DATA sockfilt for passive data channel quit (pid 93256) 09:40:43.925609 =====> Closed passive DATA connection 09:40:43.926561 > "226 File transfer complete[CR][LF]" 09:40:43.964058 < "QUIT" 09:40:43.968295 > "221 bye bye baby[CR][LF]" 09:40:43.969280 MAIN sockfilt said DISC 09:40:43.969551 ====> Client disconnected 09:40:43.970354 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:44.103214 ====> Client connect 09:40:44.105701 Received DATA (on stdin) 09:40:44.105884 > 160 bytes data, server => client 09:40:44.110062 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:44.110218 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:44.110310 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:44.111707 < 16 bytes data, client => server 09:40:44.111863 'USER anonymous\r\n' 09:40:44.113400 Received DATA (on stdin) 09:40:44.113686 > 33 bytes data, server => client 09:40:44.114310 '331 We are happy you popped in!\r\n' 09:40:44.118292 < 22 bytes data, client => server 09:40:44.118517 'PASS ftp@example.com\r\n' 09:40:44.120398 Received DATA (on stdin) 09:40:44.120773 > 30 bytes data, server => client 09:40:44.121608 '230 Welcome you silly person\r\n' 09:40:44.122290 < 5 bytes data, client => server 09:40:44.122593 'PWD\r\n' 09:40:44.125653 Received DATA (on stdin) 09:40:44.125848 > 30 bytes data, server => client 09:40:44.126048 '257 "/" is current directory\r\n' 09:40:44.126994 < 6 bytes data, client => server 09:40:44.127221 'EPSV\r\n' 09:40:44.159019 Received DATA (on stdin) 09:40:44.159170 > 38 bytes data, server => client 09:40:44.160272 '229 Entering Passive Mode (|||38125|)\n' 09:40:44.161795 < 8 bytes data, client => server 09:40:44.161947 'TYPE I\r\n' 09:40:44.164567 Received DATA (on stdin) 09:40:44.164718 > 33 bytes data, server => client 09:40:44.164803 '200 I modify TYPE as you wanted\r\n' 09:40:44.165380 < 21 bytes data, client => server 09:40:44.165592 'SIZE verifiedserver\r\n' 09:40:44.167121 Received DATA (on stdin) 09:40:44.167280 > 8 bytes data, server => client 09:40:44.167554 '213 17\r\n' 09:40:44.168960 < 21 bytes data, client => server 09:40:44.169102 'RETR verifiedserver\r\n' 09:40:44.171947 Received DATA (on stdin) 09:40:44.172192 > 29 bytes data, server => client 09:40:44.172409 '150 Binary junk (17 bytes).\r\n' 09:40:44.179839 Received DATA (on stdin) 09:40:44.180013 > 28 bytes data, server => client 09:40:44.180697 '226 File transfer complete\r\n' 09:40:44.216692 < 6 bytes data, client => server 09:40:44.216856 'QUIT\r\n' 09:40:44.220606 Received DATA (on stdin) 09:40:44.220936 > 18 bytes data, server => client 09:40:44.221366 '221 bye bye baby\r\n' 09:40:44.222736 ====> Client disconnect 09:40:44.227640 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:43.154650 Running IPv4 version 09:40:43.156294 Listening on port 38125 09:40:43.156847 Wrote pid 93256 to log/50/server/ftp_sockdata.pid 09:40:43.157037 Received PING (on stdin) 09:40:43.157912 Received PORT (on stdin) 09:40:43.162147 ====> Client connect 09:40:43.172898 Received DATA (on stdin) 09:40:43.173055 > 17 bytes data, server => client 09:40:43.173137 'WE ROOLZ: 77995\r\n' 09:40:43.173422 Received DISC (on stdin) 09:40:43.173702 ====> Client forcibly disconnected 09:40:43.176809 Received QUIT (on stdin) 09:40:43.176971 quits 09:40:43.177403 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc381 # the following two lines were created while testing curl machine 127.0.0.1 login frankenstein password wrongone machine 127.0.0.1 login mary password yram === End of file netrc381 === Start of file server.cmd Testnum 381 === End of file server.cmd === Start of file valgrind381 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind381 test 0393...[HTTP max-filesize and out-of-range Content-Length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind393 ../src/curl -q --output log/54/curl393.out --include --trace-ascii log/54/trace393 --trace-config all --trace-time http://127.0.0.1:44921/393 --max-filesize 2000000 > log/54/stdout393 2> log/54/stderr393 393: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 393 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind393 ../src/curl -q --output log/54/curl393.out --include --trace-ascii log/54/trace393 --trace-config all --trace-time http://127.0.0.1:44921/393 --max-filesize 2000000 > log/54/stdout393 2> log/54/stderr393 === End of file commands.log === Start of file http_server.log 09:40:44.695189 ====> Client connect 09:40:44.695753 accept_connection 3 returned 4 09:40:44.695992 accept_connection 3 returned 0 09:40:44.696182 Read 93 bytes 09:40:44.696319 Process 93 bytes request 09:40:44.696513 Got request: GET /verifiedserver HTTP/1.1 09:40:44.696658 Are-we-friendly question received 09:40:44.696967 Wrote request (93 bytes) input to log/54/server.input 09:40:44.697224 Identifying ourselves as friends 09:40:44.700396 Response sent (56 bytes) and written to log/54/server.response 09:40:44.700655 special request received, no persistency 09:40:44.700787 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 393 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind393 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind393 setenv TZ = GMT test 0392...[HTTP secure cookies over localhost] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind392 ../src/curl -q --output log/57/curl392.out --include --trace-ascii log/57/trace392 --trace-config all --trace-time -4 http://localhost:35945/392 -b none http://localhost:35945/392 > log/57/stdout392 2> log/57/stderr392 392: protocol FAILED! There was no content at all in the file log/57/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/57/ dir after test 392 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind392 ../src/curl -q --output log/57/curl392.out --include --trace-ascii log/57/trace392 --trace-config all --trace-time -4 http://localhost:35945/392 -b none http://localhost:35945/392 > log/57/stdout392 2> log/57/stderr392 === End of file commands.log === Start of file http_server.log 09:40:44.522842 ====> Client connect 09:40:44.523157 accept_connection 3 returned 4 09:40:44.523335 accept_connection 3 returned 0 09:40:44.527575 Read 93 bytes 09:40:44.527752 Process 93 bytes request 09:40:44.527855 Got request: GET /verifiedserver HTTP/1.1 09:40:44.527941 Are-we-friendly question received 09:40:44.528218 Wrote request (93 bytes) input to log/57/server.input 09:40:44.528514 Identifying ourselves as friends 09:40:44.533384 Response sent (56 bytes) and written to log/57/server.response 09:40:44.533598 special request received, no persistency 09:40:44.533773 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35945... * Connected to 127.0.0.1 (127.0.0.1) port 35945 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35945 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73753 === End of file http_verify.out === Start of file server.cmd Testnum 392 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73753 === End of file server.response === Start of file valgrind392 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind392 test 0367...[Empty user name provided in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind367 ../src/curl -q --output log/62/curl367.out --include --trace-ascii log/62/trace367 --trace-config all --trace-time http://:example@127.0.0.1:38899/367 > log/62/stdout367 2> log/62/stderr367 367: protocol FAILED! There was no content at all in the file log/62/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/62/ dir after test 367 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind367 ../src/curl -q --output log/62/curl367.out --include --trace-ascii log/62/trace367 --trace-config all --trace-time http://:example@127.0.0.1:38899/367 > log/62/stdout367 2> log/62/stderr367 === End of file commands.log === Start of file http_server.log 09:40:43.922236 ====> Client connect 09:40:43.922895 accept_connection 3 returned 4 09:40:43.923063 accept_connection 3 returned 0 09:40:43.923202 Read 93 bytes 09:40:43.923335 Process 93 bytes request 09:40:43.923527 Got request: GET /verifiedserver HTTP/1.1 09:40:43.923672 Are-we-friendly question received 09:40:43.924020 Wrote request (93 bytes) input to log/62/server.input 09:40:43.924216 Identifying ourselves as friends 09:40:43.929055 Response sent (56 bytes) and written to log/62/server.response 09:40:43.929205 special request received, no persistency 09:40:43.929309 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38899... * Connected to 127.0.0.1 (127.0.0.1) port 38899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73749 === End of file http_verify.out === Start of file server.cmd Testnum 367 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73749 === End of file server.response === Start of file valgrind367 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind367 test 0386...[HTTP with --json + --next] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind386 ../src/curl -q --output log/63/curl386.out --include --trace-ascii log/63/trace386 --trace-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:38797/386 --next http://127.0.0.1:38797/3860002 > log/63/stdout386 2> log/63/stderr386 386: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after teCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind394 ../src/curl -q --output log/14/curl394.out --include --trace-ascii log/14/trace394 --trace-config all --trace-time http://127.0.0.1:43309/394 > log/14/stdout394 2> log/14/stderr394 st 386 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind386 ../src/curl -q --output log/63/curl386.out --include --trace-ascii log/63/trace386 --trace-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:38797/386 --next http://127.0.0.1:38797/3860002 > log/63/stdout386 2> log/63/stderr386 === End of file commands.log === Start of file http_server.log 09:40:44.195912 ====> Client connect 09:40:44.196223 accept_connection 3 returned 4 09:40:44.196404 accept_connection 3 returned 0 09:40:44.197406 Read 93 bytes 09:40:44.197620 Process 93 bytes request 09:40:44.197726 Got request: GET /verifiedserver HTTP/1.1 09:40:44.197824 Are-we-friendly question received 09:40:44.198090 Wrote request (93 bytes) input to log/63/server.input 09:40:44.198350 Identifying ourselves as friends 09:40:44.201995 Response sent (56 bytes) and written to log/63/server.response 09:40:44.202138 special request received, no persistency 09:40:44.202227 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38797... * Connected to 127.0.0.1 (127.0.0.1) port 38797 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38797 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73747 === End of file http_verify.out === Start of file server.cmd Testnum 386 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73747 === End of file server.response === Start of file valgrind386 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind386 test 0398...[Reject HTTP/1.1 response with colon-less header] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind398 ../src/curl -q --output log/6/curl398.out --include --trace-ascii log/6/trace398 --trace-config all --trace-time http://127.0.0.1:37181/398 > log/6/stdout398 2> log/6/stderr398 398: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 398 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind398 ../src/curl -q --output log/6/curl398.out --include --trace-ascii log/6/trace398 --trace-config all --trace-time http://127.0.0.1:37181/398 > log/6/stdout398 2> log/6/stderr398 === End of file commands.log === Start of file http_server.log 09:40:45.024145 ====> Client connect 09:40:45.024566 accept_connection 3 returned 4 09:40:45.024770 accept_connection 3 returned 0 09:40:45.025600 Read 93 bytes 09:40:45.025746 Process 93 bytes request 09:40:45.025832 Got request: GET /verifiedserver HTTP/1.1 09:40:45.025917 Are-we-friendly question received 09:40:45.026156 Wrote request (93 bytes) input to log/6/server.input 09:40:45.026341 Identifying ourselves as friends 09:40:45.027321 Response sent (56 bytes) and written to log/6/server.response 09:40:45.027510 special request received, no persistency 09:40:45.027604 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37181... * Connected to 127.0.0.1 (127.0.0.1) port 37181 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37181 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73803 === End of file http_verify.out === Start of file server.cmd Testnum 398 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73803 === End of file server.response === Start of file valgrind398 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind398 test 0399...[65536 bytes long host name in URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind399 ../src/curl -q --output log/32/curl399.out --include --trace-ascii log/32/trace399 --trace-config all --trace-time -K log/32/input%TESTNUM > log/32/stdout399 2> log/32/stderr399 curl returned 1, when expecting 3 399: exit FAILED == Contents of files in the log/32/ dir after test 399 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind399 ../src/curl -q --output log/32/curl399.out --include --trace-ascii log/32/trace399 --trace-config all --trace-time -K log/32/input%TESTNUM > log/32/stdout399 2> log/32/stderr399 === End of file commands.log === Start of file http_server.log 09:40:44.932714 ====> Client connect 09:40:44.933055 accept_connection 3 returned 4 09:40:44.933218 accept_connection 3 returned 0 09:40:44.934205 Read 93 bytes 09:40:44.934379 Process 93 bytes request 09:40:44.934612 Got request: GET /verifiedserver HTTP/1.1 09:40:44.934906 Are-we-friendly question received 09:40:44.935199 Wrote request (93 bytes) input to log/32/server.input 09:40:44.935383 Identifying ourselves as friends 09:40:44.940706 Response sent (56 bytes) and written to log/32/server.response 09:40:44.940825 special request received, no persistency 09:40:44.940891 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45607... * Connected to 127.0.0.1 (127.0.0.1) port 45607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45607 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73778 === End of file http_verify.out === Start of file input%TESTNUM url = http://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/399 === End of file input%TESTNUM === Start of file server.cmd Testnum 399 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73778 === End of file server.response === Start of file valgrind399 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind399 test 0391...[--path-as-is with redirect, keeping dotdots] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind391 ../src/curl -q --output log/39/curl391.out --include --trace-ascii log/39/trace391 --trace-config all --trace-time http://127.0.0.1:42899/../../391 --path-as-is -L > log/39/stdout391 2> log/39/stderr391 391: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 391 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind391 ../src/curl -q --output log/39/curl391.out --include --trace-ascii log/39/trace391 --trace-config all --trace-time http://127.0.0.1:42899/../../391 --path-as-is -L > log/39/stdout391 2> log/39/stderr391 === End of file commands.log === Start of file http_server.log 09:40:44.672204 ====> Client connect 09:40:44.672676 accept_connection 3 returned 4 09:40:44.672876 accept_connection 3 returned 0 09:40:44.673028 Read 93 bytes 09:40:44.673366 Process 93 bytes request 09:40:44.673558 Got request: GET /verifiedserver HTTP/1.1 09:40:44.678635 Are-we-friendly question received 09:40:44.678944 Wrote request (93 bytes) input to log/39/server.input 09:40:44.679191 Identifying ourselves as friends 09:40:44.680284 Response sent (56 bytes) and written to log/39/server.response 09:40:44.682594 special request received, no persistency 09:40:44.682721 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 391 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind391 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind391 test 0395...[HTTP and out-of-range Content-Length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind395 ../src/curl -q --output log/56/curl395.out --include --trace-ascii log/56/trace395 --trace-config all --trace-time http://127.0.0.1:43265/395 > log/56/stdout395 2> log/56/stderr395 395: protocol FAILED! There was no content at all in the file log/56/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/56/ dir after test 395 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind395 ../src/curl -q --output log/56/curl395.out --include --trace-ascii log/56/trace395 --trace-config all --trace-time http://127.0.0.1:43265/395 > log/56/stdout395 2> log/56/stderr395 === End of file commands.log === Start of file http_server.log 09:40:44.838274 ====> Client connect 09:40:44.838733 accept_connection 3 returned 4 09:40:44.838896 accept_connection 3 returned 0 09:40:44.839610 Read 93 bytes 09:40:44.839792 Process 93 bytes request 09:40:44.839896 Got request: GET /verifiedserver HTTP/1.1 09:40:44.839990 Are-we-friendly question received 09:40:44.840224 Wrote request (93 bytes) input to log/56/server.input 09:40:44.840562 Identifying ourselves as friendsCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind402 ../src/curl -q --output log/53/curl402.out --include --trace-ascii log/53/trace402 --trace-config all --trace-time --insecure --ftp-ssl-reqd ftp://127.0.0.1:42281/402 > log/53/stdout402 2> log/53/stderr402 09:40:44.841247 Response sent (56 bytes) and written to log/56/server.response 09:40:44.841393 special request received, no persistency 09:40:44.841588 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43265... * Connected to 127.0.0.1 (127.0.0.1) port 43265 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43265 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73754 === End of file http_verify.out === Start of file server.cmd Testnum 395 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73754 === End of file server.response === Start of file valgrind395 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind395 test 0394...[HTTP with rubbish in Content-Length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind394 ../src/curl -q --output log/14/curl394.out --include --trace-ascii log/14/trace394 --trace-config all --trace-time http://127.0.0.1:43309/394 > log/14/stdout394 2> log/14/stderr394 394: protocol FAILED! There was no content at all in the file log/14/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/14/ dir after test 394 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind394 ../src/curl -q --output log/14/curl394.out --include --trace-ascii log/14/trace394 --trace-config all --trace-time http://127.0.0.1:43309/394 > log/14/stdout394 2> log/14/stderr394 === End of file commands.log === Start of file http_server.log 09:40:44.883307 ====> Client connect 09:40:44.883957 accept_connection 3 returned 4 09:40:44.884233 accept_connection 3 returned 0 09:40:44.884544 Read 93 bytes 09:40:44.884731 Process 93 bytes request 09:40:44.884835 Got request: GET /verifiedserver HTTP/1.1 09:40:44.884978 Are-we-friendly question received 09:40:44.885584 Wrote request (93 bytes) input to log/14/server.input 09:40:44.885807 Identifying ourselves as friends 09:40:44.893988 Response sent (56 bytes) and written to log/14/server.response 09:40:44.894134 special request received, no persistency 09:40:44.894220 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43309... * Connected to 127.0.0.1 (127.0.0.1) port 43309 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43309 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73795 === End of file http_verify.out === Start of file server.cmd Testnum 394 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73795 === End of file server.response === Start of file valgrind394 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind394 test 0402...[FTP SSL required on non-SSL server] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind402 ../src/curl -q --output log/53/curl402.out --include --trace-ascii log/53/trace402 --trace-config all --trace-time --insecure --ftp-ssl-reqd ftp://127.0.0.1:42281/402 > log/53/stdout402 2> log/53/stderr402 402: protocol FAILED! There was no content at all in the file log/53/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/53/ dir after test 402 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind402 ../src/curl -q --output log/53/curl402.out --include --trace-ascii log/53/trace402 --trace-config all --trace-time --insecure --ftp-ssl-reqd ftp://127.0.0.1:42281/402 > log/53/stdout402 2> log/53/stderr402 === End of file commands.log === Start of file ftp_server.log 09:40:44.774493 ====> Client connect 09:40:44.779215 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:44.780319 < "USER anonymous" 09:40:44.781072 > "331 We are happy you popped in![CR][LF]" 09:40:44.795420 < "PASS ftp@example.com" 09:40:44.796434 > "230 Welcome you silly person[CR][LF]" 09:40:44.798368 < "PWD" 09:40:44.799734 > "257 "/" is current directory[CR][LF]" 09:40:44.801534 < "EPSV" 09:40:44.801915 ====> Passive DATA channel requested by client 09:40:44.802175 DATA sockfilt for passive data channel starting... 09:40:44.830254 DATA sockfilt for passive data channel started (pid 94846) 09:40:44.833157 DATA sockfilt for passive data channel listens on port 42717 09:40:44.836876 > "229 Entering Passive Mode (|||42717|)[LF]" 09:40:44CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind405 ../src/curl -q --output log/44/curl405.out --include --trace-ascii log/44/trace405 --trace-config all --trace-time -m 5 --insecure ftps://127.0.0.1:41125/path/to/file/405 > log/44/stdout405 2> log/44/stderr405 .837954 Client has been notified that DATA conn will be accepted on port 42717 09:40:44.840860 Client connects to port 42717 09:40:44.841184 ====> Client established passive DATA connection on port 42717 09:40:44.842062 < "TYPE I" 09:40:44.843109 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:44.846158 < "SIZE verifiedserver" 09:40:44.848109 > "213 17[CR][LF]" 09:40:44.849839 < "RETR verifiedserver" 09:40:44.851009 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:44.851984 =====> Closing passive DATA connection... 09:40:44.852233 Server disconnects passive DATA connection 09:40:44.854584 Server disconnected passive DATA connection 09:40:44.854968 DATA sockfilt for passive data channel quits (pid 94846) 09:40:44.857112 DATA sockfilt for passive data channel quit (pid 94846) 09:40:44.857359 =====> Closed passive DATA connection 09:40:44.857696 > "226 File transfer complete[CR][LF]" 09:40:44.895102 < "QUIT" 09:40:44.895516 > "221 bye bye baby[CR][LF]" 09:40:44.898970 MAIN sockfilt said DISC 09:40:44.899306 ====> Client disconnected 09:40:44.899917 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:45.027591 ====> Client connect 09:40:45.029858 Received DATA (on stdin) 09:40:45.030031 > 160 bytes data, server => client 09:40:45.030677 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:45.030879 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:45.030989 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:45.032066 < 16 bytes data, client => server 09:40:45.032210 'USER anonymous\r\n' 09:40:45.041160 Received DATA (on stdin) 09:40:45.041805 > 33 bytes data, server => client 09:40:45.042026 '331 We are happy you popped in!\r\n' 09:40:45.047776 < 22 bytes data, client => server 09:40:45.048072 'PASS ftp@example.com\r\n' 09:40:45.049677 Received DATA (on stdin) 09:40:45.049926 > 30 bytes data, server => client 09:40:45.050630 '230 Welcome you silly person\r\n' 09:40:45.051274 < 5 bytes data, client => server 09:40:45.051412 'PWD\r\n' 09:40:45.052427 Received DATA (on stdin) 09:40:45.052712 > 30 bytes data, server => client 09:40:45.052900 '257 "/" is current directory\r\n' 09:40:45.054365 < 6 bytes data, client => server 09:40:45.054606 'EPSV\r\n' 09:40:45.088749 Received DATA (on stdin) 09:40:45.089061 > 38 bytes data, server => client 09:40:45.089365 '229 Entering Passive Mode (|||42717|)\n' 09:40:45.094089 < 8 bytes data, client => server 09:40:45.094212 'TYPE I\r\n' 09:40:45.096218 Received DATA (on stdin) 09:40:45.096527 > 33 bytes data, server => client 09:40:45.097337 '200 I modify TYPE as you wanted\r\n' 09:40:45.098721 < 21 bytes data, client => server 09:40:45.098966 'SIZE verifiedserver\r\n' 09:40:45.100579 Received DATA (on stdin) 09:40:45.100827 > 8 bytes data, server => client 09:40:45.100913 '213 17\r\n' 09:40:45.102770 < 21 bytes data, client => server 09:40:45.102925 'RETR verifiedserver\r\n' 09:40:45.103957 Received DATA (on stdin) 09:40:45.104093 > 29 bytes data, server => client 09:40:45.104256 '150 Binary junk (17 bytes).\r\n' 09:40:45.111887 Received DATA (on stdin) 09:40:45.112074 > 28 bytes data, server => client 09:40:45.112165 '226 File transfer complete\r\n' 09:40:45.147824 < 6 bytes data, client => server 09:40:45.147994 'QUIT\r\n' 09:40:45.149611 Received DATA (on stdin) 09:40:45.149747 > 18 bytes data, server => client 09:40:45.149823 '221 bye bye baby\r\n' 09:40:45.150327 ====> Client disconnect 09:40:45.153916 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:44.079218 Running IPv4 version 09:40:44.080173 Listening on port 42717 09:40:44.083104 Wrote pid 94846 to log/53/server/ftp_sockdata.pid 09:40:44.083414 Received PING (on stdin) 09:40:44.084937 Received PORT (on stdin) 09:40:44.093815 ====> Client connect 09:40:44.106562 Received DATA (on stdin) 09:40:44.106769 > 17 bytes data, server => client 09:40:44.106895 'WE ROOLZ: 77508\r\n' 09:40:44.107204 Received DISC (on stdin) 09:40:44.107358 ====> Client forcibly disconnected 09:40:44.109030 Received QUIT (on stdin) 09:40:44.109168 quits 09:40:44.109657 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 402 === End of file server.cmd === Start of file valgrind402 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind402 test 0405...[FTPS operation to FTP port] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind405 ../src/curl -q --output log/44/curl405.out --include --trace-ascii log/44/trace405 --trace-config all --trace-time -m 5 --insecure ftps://127.0.0.1:41125/path/to/file/405 > log/44/stdout405 2> log/44/stderr405 curl returned 1, when expecting 35,28 405: exit FAILED == Contents of files in the log/44/ dir after test 405 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind405 ../src/curl -q --output log/44/curl405.out --include --trace-ascii log/44/trace405 --trace-config all --trace-time -m 5 --insecure ftps://127.0.0.1:41125/path/to/file/405 > log/44/stdout405 2> log/44/stderr405 === End of file commands.log === Start of file ftp_server.log 09:40:44.824887 ====> Client connect 09:40:44.826265 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:44.835688 < "USER anonymous" 09:40:44.840018 > "331 We are happy you popped in![CR][LF]" 09:40:44.842027 < "PASS ftp@example.com" 09:40:44.842695 > "230 Welcome you silly person[CR][LF]" 09:40:44.849209 < "PWD" 09:40:44.851224 > "257 "/" is current directory[CR][LF]" 09:40:44.855301 < "EPSV" 09:40:44.855550 ====> Passive DATA channel requested by client 09:40:44.855709 DATA sockfilt for passive data channel starting... 09:40:44.885041 DATA sockfilt for passive data channel started (pid 94909) 09:40:44.886233 DATA sockfilt for passive data channel listens on port 44821 09:40:44.886707 > "229 Entering Passive Mode (|||44821|)[LF]" 09:40:44.887071 Client has been notified that DATA conn will be accepted on port 44821 09:40:44.892811 Client connects to port 44821 09:40:44.893217 ====> Client established passive DATA connection on port 44821 09:40:44.894654 < "TYPE I" 09:40:44.898522 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:44.900408 < "SIZE verifiedserver" 09:40:44.900867 > "213 17[CR][LF]" 09:40:44.908636 < "RETR verifiedserver" 09:40:44.910564 > "150 BinaryCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind397 ../src/curl -q --output log/64/curl397.out --include --trace-ascii log/64/trace397 --trace-config all --trace-time http://127.0.0.1:33073/397 --compressed > log/64/stdout397 2> log/64/stderr397 junk (17 bytes).[CR][LF]" 09:40:44.913452 =====> Closing passive DATA connection... 09:40:44.913846 Server disconnects passive DATA connection 09:40:44.914463 Fancy that; client wants to DISC, too 09:40:44.915279 Server disconnected passive DATA connection 09:40:44.915549 DATA sockfilt for passive data channel quits (pid 94909) 09:40:44.917348 DATA sockfilt for passive data channel quit (pid 94909) 09:40:44.917603 =====> Closed passive DATA connection 09:40:44.918109 > "226 File transfer complete[CR][LF]" 09:40:44.954455 < "QUIT" 09:40:44.955619 > "221 bye bye baby[CR][LF]" 09:40:44.969917 MAIN sockfilt said DISC 09:40:44.971316 ====> Client disconnected 09:40:44.973268 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:45.077909 ====> Client connect 09:40:45.080715 Received DATA (on stdin) 09:40:45.081064 > 160 bytes data, server => client 09:40:45.081256 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:45.081614 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:45.081804 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:45.087192 < 16 bytes data, client => server 09:40:45.087701 'USER anonymous\r\n' 09:40:45.094183 Received DATA (on stdin) 09:40:45.094324 > 33 bytes data, server => client 09:40:45.094422 '331 We are happy you popped in!\r\n' 09:40:45.096539 < 22 bytes data, client => server 09:40:45.096687 'PASS ftp@example.com\r\n' 09:40:45.096844 Received DATA (on stdin) 09:40:45.097006 > 30 bytes data, server => client 09:40:45.097142 '230 Welcome you silly person\r\n' 09:40:45.100828 < 5 bytes data, client => server 09:40:45.100979 'PWD\r\n' 09:40:45.104557 Received DATA (on stdin) 09:40:45.104710 > 30 bytes data, server => client 09:40:45.105518 '257 "/" is current directory\r\n' 09:40:45.106248 < 6 bytes data, client => server 09:40:45.106559 'EPSV\r\n' 09:40:45.141182 Received DATA (on stdin) 09:40:45.141336 > 38 bytes data, server => client 09:40:45.141512 '229 Entering Passive Mode (|||44821|)\n' 09:40:45.145585 < 8 bytes data, client => server 09:40:45.145724 'TYPE I\r\n' 09:40:45.149553 Received DATA (on stdin) 09:40:45.149700 > 33 bytes data, server => client 09:40:45.152614 '200 I modify TYPE as you wanted\r\n' 09:40:45.153293 < 21 bytes data, client => server 09:40:45.153504 'SIZE verifiedserver\r\n' 09:40:45.155126 Received DATA (on stdin) 09:40:45.155278 > 8 bytes data, server => client 09:40:45.155366 '213 17\r\n' 09:40:45.161518 < 21 bytes data, client => server 09:40:45.161690 'RETR verifiedserver\r\n' 09:40:45.162855 Received DATA (on stdin) 09:40:45.163034 > 29 bytes data, server => client 09:40:45.163575 '150 Binary junk (17 bytes).\r\n' 09:40:45.172632 Received DATA (on stdin) 09:40:45.172949 > 28 bytes data, server => client 09:40:45.173223 '226 File transfer complete\r\n' 09:40:45.206233 < 6 bytes data, client => server 09:40:45.207011 'QUIT\r\n' 09:40:45.208877 Received DATA (on stdin) 09:40:45.209055 > 18 bytes data, server => client 09:40:45.209546 '221 bye bye baby\r\n' 09:40:45.220731 ====> Client disconnect 09:40:45.223983 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:44.133835 Running IPv4 version 09:40:44.134347 Listening on port 44821 09:40:44.134820 Wrote pid 94909 to log/44/server/ftp_sockdata.pid 09:40:44.134975 Received PING (on stdin) 09:40:44.139262 Received PORT (on stdin) 09:40:44.145929 ====> Client connect 09:40:44.164818 Received DATA (on stdin) 09:40:44.164978 > 17 bytes data, server => client 09:40:44.165275 'WE ROOLZ: 77468\r\n' 09:40:44.166245 ====> Client disconnect 09:40:44.167822 Received DISC (on stdin) 09:40:44.167976 Crikey! Client also wants to disconnect 09:40:44.168429 Received ACKD (on stdin) 09:40:44.169501 Received QUIT (on stdin) 09:40:44.169633 quits 09:40:44.169999 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 405 === End of file server.cmd === Start of file valgrind405 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind405 test 0397...[HTTP GET zstd compressed content of size more than CURL_MAX_WRITE_SIZE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind397 ../src/curl -q --output log/64/curl397.out --include --trace-ascii log/64/trace397 --trace-config all --trace-time http://127.0.0.1:33073/397 --compressed > log/64/stdout397 2> log/64/stderr397 397: protocol FAILED! There was no content at all in the file log/64/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/64/ dir after test 397 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind397 ../src/curl -q --output log/64/curl397.out --include --trace-ascii log/64/trace397 --trace-config all --trace-time http://127.0.0.1:33073/397 --compressed > log/64/stdout397 2> log/64/stderr397 === End of file commands.log === Start of file http_server.log 09:40:44.914900 ====> Client connect 09:40:44.915258 accept_connection 3 returned 4 09:40:44.915594 accept_connection 3 returned 0 09:40:44.915789 Read 93 bytes 09:40:44.915897 Process 93 bytes request 09:40:44.916007 Got request: GET /verifiedserver HTTP/1.1 09:40:44.916108 Are-we-friendly question received 09:40:44.916377 Wrote request (93 bytes) input to log/64/server.input 09:40:44.916695 Identifying ourselves as friends 09:40:44.917693 Response sent (56 bytes) and written to log/64/server.response 09:40:44.917918 special request received, no persistency 09:40:44.918011 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33073... * Connected to 127.0.0.1 (127.0.0.1) port 33073 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33073 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73748 === End of file http_verify.out === Start of file server.cmd Testnum 397 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73748 === End of file server.response === Start of file valgrind397 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind411 ../src/curl -q --output log/51/curl411.out --include --trace-ascii log/51/trace411 --trace-config all --trace-time -K log/51/missing http://localhost > log/51/stdout411 2> log/51/stderr411 grind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind397 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind390 ../src/curl -q --include --trace-ascii log/43/trace390 --trace-config all --trace-time http://127.0.0.1:41267/390 file://localhost/build/curl/src/build-curl/tests/log/43/test390.txt ftp://127.0.0.1:33177/3900002 --parallel -o log/43/390.a -o log/43/390.b -o log/43/390.c > log/43/stdout390 2> log/43/stderr390 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind396 ../src/curl -q --output log/52/curl396.out --include --trace-ascii log/52/trace396 --trace-config all --trace-time http://127.0.0.1:40089/396 --compressed > log/52/stdout396 2> log/52/stderr396 * starts no server test 0411...[-K with missing file causes error] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind411 ../src/curl -q --output log/51/curl411.out --include --trace-ascii log/51/trace411 --trace-config all --trace-time -K log/51/missing http://localhost > log/51/stdout411 2> log/51/stderr411 411: stderr FAILED: --- log/51/check-expected 2025-07-18 09:40:46.177384317 +0000 +++ log/51/check-generated 2025-07-18 09:40:46.176605417 +0000 @@ -1,3 +0,0 @@ -curl: cannot read config from 'log/51/missing'[CR][LF] -curl: option -K: error encountered when reading a file[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/51/ dir after test 411 === Start of file check-expected curl: cannot read config from 'log/51/missing'[CR][LF] curl: option -K: error encountered when reading a file[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind411 ../src/curl -q --output log/51/curl411.out --include --trace-ascii log/51/trace411 --trace-config all --trace-time -K log/51/missing http://localhost > log/51/stdout411 2> log/51/stderr411 === End of file commands.log === Start of file server.cmd Testnum 411 === End of file server.cmd === Start of file valgrind411 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind411 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/43/server/ftp_server.pid" --logfile "log/43/ftp_server.log" --logdir "log/43" --portfile "log/43/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 33177 (log/43/server/ftp_server.port) RUN: FTP server is PID 94256 port 33177 * pid ftp => 94256 94256 test 0390...[curl HTTP, FILE and FTP in parallel] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind390 ../src/curl -q --include --trace-ascii log/43/trace390 --trace-config all --trace-time http://127.0.0.1:41267/390 file://localhost/build/curl/src/build-curl/tests/log/43/test390.txt ftp://127.0.0.1:33177/3900002 --parallel -o log/43/390.a -o log/43/390.b -o log/43/390.c > log/43/stdout390 2> log/43/stderr390 curl returned 1, when expecting 0 390: exit FAILED == Contents of files in the log/43/ dir after test 390 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind390 ../src/curl -q --include --trace-ascii log/43/trace390 --trace-config all --trace-time http://127.0.0.1:41267/390 file://localhost/build/curl/src/build-curl/tests/log/43/test390.txt ftp://127.0.0.1:33177/3900002 --parallel -o log/43/390.a -o log/43/390.b -o log/43/390.c > log/43/stdout390 2> log/43/stderr390 === End of file commands.log === Start of file ftp_server.log 09:40:45.264982 FTP server listens on port IPv4/33177 09:40:45.268576 logged pid 94256 in log/43/server/ftp_server.pid 09:40:45.268977 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:45.515026 Running IPv4 version 09:40:45.515923 Listening on port 33177 09:40:45.516428 Wrote pid 95222 to log/43/server/ftp_sockctrl.pid 09:40:45.517084 Wrote port 33177 to log/43/server/ftp_server.port 09:40:45.517371 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file http_server.log 09:40:44.652928 ====> Client connect 09:40:44.653317 accept_connection 3 returned 4 09:40:44.653672 accept_connection 3 returned 0 09:40:44.654698 Read 93 bytes 09:40:44.654850 Process 93 bytes request 09:40:44.654931 Got request: GET /verifiedserver HTTP/1.1 09:40:44.655004 Are-we-friendly question received 09:40:44.655228 Wrote request (93 bytes) input to log/43/server.input 09:40:44.655420 Identifying ourselves as friends 09:40:44.658715 Response sent (56 bytes) and written to log/43/server.response 09:40:44.658852 special request received, no persistency 09:40:44.658930 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd Testnum 390 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file test390.txt hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind415 ../src/curl -q --output log/60/curl415.out --include --trace-ascii log/60/trace415 --trace-config all --trace-time http://127.0.0.1:38843/415 > log/60/stdout415 2> log/60/stderr415 ofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile!hellofile === End of file test390.txt === Start of file valgrind390 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind390 test 0396...[HTTP GET zstd compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind396 ../src/curl -q --output log/52/curl396.out --include --trace-ascii log/52/trace396 --trace-config all --trace-time http://127.0.0.1:40089/396 --compressed > log/52/stdout396 2> log/52/stderr396 396: protocol FAILED! There was no content at all in the file log/52/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/52/ dir after test 396 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind396 ../src/curl -q --output log/52/curl396.out --include --trace-ascii log/52/trace396 --trace-config all --trace-time http://127.0.0.1:40089/396 --compressed > log/52/stdout396 2> log/52/stderr396 === End of file commands.log === Start of file http_server.log 09:40:45.024848 ====> Client connect 09:40:45.025428 accept_connection 3 returned 4 09:40:45.025686 accept_connection 3 returned 0 09:40:45.026259 Read 93 bytes 09:40:45.026399 Process 93 bytes request 09:40:45.026637 Got request: GET /verifiedserver HTTP/1.1 09:40:45.026898 Are-we-friendly question received 09:40:45.027253 Wrote request (93 bytes) input to log/52/server.input 09:40:45.027694 Identifying ourselves as friends 09:40:45.028560 Response sent (56 bytes) and written to log/52/server.response 09:40:45.028697 special request received, no persistency 09:40:45.028790 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40089... * Connected to 127.0.0.1 (127.0.0.1) port 40089 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40089 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73758 === End of file http_verify.out === Start of file server.cmd Testnum 396 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73758 === End of file server.response === Start of file valgrind396 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind396 test 0415...[HTTP response with control code then negative Content-Length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind415 ../src/curl -q --output log/60/curl415.out --include --trace-ascii log/60/trace415 --trace-config all --trace-time http://127.0.0.1:38843/415 > log/60/stdout415 2> log/60/stderr415 415: protocol FAILED! There was no content at all in the file log/60/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/60/ dir after test 415 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind415 ../src/curl -q --output log/60/curl415.out --include --trace-ascii log/60/trace415 --trace-config all --trace-time http://127.0.0.1:38843/415 > log/60/stdout415 2> log/60/stderr415 === End of file commands.log === Start of file http_server.log 09:40:45.945852 ====> Client connect 09:40:45.946175 accept_connection 3 returned 4 09:40:45.946343 accept_connection 3 returned 0 09:40:45.946599 Read 93 bytes 09:40:45.946803 Process 93 bytes request 09:40:45.947001 Got request: GET /verifiedserver HTTP/1.1 09:40:45.947068 Are-we-friendly question received 09:40:45.947306 Wrote request (93 bytes) input to log/60/server.input 09:40:45.947602 Identifying ourselves as friends 09:40:45.948645 Response sent (56 bytes) and written to log/60/server.response 09:40:45.948758 special request received, no persistency 09:40:45.948823 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38843... * Connected to 127.0.0.1 (127.0.0.1) port 38843 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38843 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73750 === End of file http_verify.out === Start of file server.cmd Testnum 415 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73750 === End of file server.response === Start of file valgrind415 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind422 ../src/curl -q --output log/6/curl422.out --include --trace-ascii log/6/trace422 --trace-config all --trace-time -O -I --next http://127.0.0.1:37181/422 > log/6/stdout422 2> log/6/stderr422 are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind415 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind418 ../src/curl -q --output log/14/curl418.out --include --trace-ascii log/14/trace418 --trace-config all --trace-time http://127.0.0.1:43309/418 -sS --tr-encoding > log/14/stdout418 2> log/14/stderr418 * starts no server test 0422...[use --next with missing URL before it] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind422 ../src/curl -q --output log/6/curl422.out --include --trace-ascii log/6/trace422 --trace-config all --trace-time -O -I --next http://127.0.0.1:37181/422 > log/6/stdout422 2> log/6/stderr422 422: stderr FAILED: --- log/6/check-expected 2025-07-18 09:40:47.183128947 +0000 +++ log/6/check-generated 2025-07-18 09:40:47.182559508 +0000 @@ -1,3 +0,0 @@ -curl: missing URL before --next[CR][LF] -curl: option --next: is badly used here[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/6/ dir after test 422 === Start of file check-expected curl: missing URL before --next[CR][LF] curl: option --next: is badly used here[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind422 ../src/curl -q --output log/6/curl422.out --include --trace-ascii log/6/trace422 --trace-config all --trace-time -O -I --next http://127.0.0.1:37181/422 > log/6/stdout422 2> log/6/stderr422 === End of file commands.log === Start of file server.cmd Testnum 422 === End of file server.cmd === Start of file valgrind422 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind422 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind419 ../src/curl -q --output log/39/curl419.out --include --trace-ascii log/39/trace419 --trace-config all --trace-time http://127.0.0.1:42899/419 -D loggg/save-here/fails > log/39/stdout419 2> log/39/stderr419 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind416 ../src/curl -q --output log/63/curl416.out --include --trace-ascii log/63/trace416 --trace-config all --trace-time --ignore-content-length ftp://127.0.0.1:33267/416 > log/63/stdout416 2> log/63/stderr416 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind427 ../src/curl -q --output log/54/curl427.out --include --trace-ascii log/54/trace427 --trace-config all --trace-time http://127.0.0.1:44921/427 -c log/54/cookies427 -L > log/54/stdout427 2> log/54/stderr427 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind436 ../src/curl --output log/4/curl436.out --include --trace-ascii log/4/trace436 --trace-config all --trace-time 127.0.0.1:43013/436 > log/4/stdout436 2> log/4/stderr436 test 0418...[Response with multiple Transfer-Encoding headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind418 ../src/curl -q --output log/14/curl418.out --include --trace-ascii log/14/trace418 --trace-config all --trace-time http://127.0.0.1:43309/418 -sS --tr-encoding > log/14/stdout418 2> log/14/stderr418 418: stderr FAILED: --- log/14/check-expected 2025-07-18 09:40:47.393129761 +0000 +++ log/14/check-generated 2025-07-18 09:40:47.392258502 +0000 @@ -1 +0,0 @@ -curl: (61) Reject response due to more than 5 content encodings[CR][LF] == Contents of files in the log/14/ dir after test 418 === Start of file check-expected curl: (61) Reject response due to more than 5 content encodings[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind418 ../src/curl -q --output log/14/curl418.out --include --trace-ascii log/14/trace418 --trace-config all --trace-time http://127.0.0.1:43309/418 -sS --tr-encoding > log/14/stdout418 2> log/14/stderr418 === End of file commands.log === Start of file http_server.log 09:40:46.411866 ====> Client connect 09:40:46.412181 accept_connection 3 returned 4 09:40:46.412351 accept_connection 3 returned 0 09:40:46.412559 Read 93 bytes 09:40:46.412672 Process 93 bytes request 09:40:46.412757 Got request: GET /verifiedserver HTTP/1.1 09:40:46.412842 Are-we-friendly question received 09:40:46.413070 Wrote request (93 bytes) input to log/14/server.input 09:40:46.413263 Identifying ourselves as friends 09:40:46.414089 Response sent (56 bytes) and written to log/14/server.response 09:40:46.414202 special request received, no persistency 09:40:46.414275 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43309... * Connected to 127.0.0.1 (127.0.0.1) port 43309 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43309 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73795 === End of file http_verify.out === Start of file server.cmd Testnum 418 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73795 === End of file server.response === Start of file valgrind418 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind418 test 0419...[--dump-header to file that cannot be created] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind419 ../src/curl -q --output log/39/curl419.out --include --trace-ascii log/39/trace419 --trace-config all --trace-time http://127.0.0.1:42899/419 -D loggg/save-here/fails > log/39/stdout419 2> log/39/stderr419 curl returned 1, when expecting 23 419: exit FAILED == Contents of files in the log/39/ dir after test 419 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind419 ../src/curl -q --output log/39/curl419.out --include --trace-ascii log/39/trace419 --trace-config all --trace-time http://127.0.0.1:42899/419 -D loggg/save-here/fails > log/39/stdout419 2> log/39/stderr419 === End of file commands.log === Start of file http_server.log 09:40:46.363849 ====> Client connect 09:40:46.364144 accept_connection 3 returned 4 09:40:46.364306 accept_connection 3 returned 0 09:40:46.365181 Read 93 bytes 09:40:46.365318 Process 93 bytes request 09:40:46.365403 Got request: GET /verifiedserver HTTP/1.1 09:40:46.365573 Are-we-friendly question received 09:40:46.365831 Wrote request (93 bytes) input to log/39/server.input 09:40:46.366000 Identifying ourselves as friends 09:40:46.367718 Response sent (56 bytes) and written to log/39/server.response 09:40:46.367848 special request received, no persistency 09:40:46.367911 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 419 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind419 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind419 test 0427...[Keep Cookie: header within 8190 bytes] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind427 ../src/curl -q --output log/54/curl427.out --include --trace-ascii log/54/trace427 --trace-config all --trace-time http://127.0.0.1:44921/427 -c log/54/cookies427 -L > log/54/stdout427 2> log/54/stderr427 427: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 427 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind427 ../src/curl -q --output log/54/curl427.out --include --trace-ascii log/54/trace427 --trace-config all --trace-time http://127.0.0.1:44921/427 -c log/54/cookies427 -L > log/54/stdout427 2> log/54/stderr427 === End of file commands.log === Start of file http_server.log 09:40:46.507876 ====> Client connect 09:40:46.508185 accept_connection 3 returned 4 09:40:46.508369 accept_connection 3 returned 0 09:40:46.508748 Read 93 bytes 09:40:46.508874 Process 93 bytes request 09:40:46.508958 Got request: GET /verifiedserver HTTP/1.1 09:40:46.509030 Are-we-friendly question received 09:40:46.509261 Wrote request (93 bytes) input to log/54/server.input 09:40:46.509529 Identifying ourselves as friends 09:40:46.512725 Response sent (56 bytes) and written to log/54/server.response 09:40:46.512853 special request received, no persistency 09:40:46.512928 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 427 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind427 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind427 test 0416...[FTP growing file support] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind416 ../src/curl -q --output log/63/curl416.out --include --trace-ascii log/63/trace416 --trace-config all --trace-time --ignore-content-length ftp://127.0.0.1:33267/416 > log/63/stdout416 2> log/63/stderr416 416: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 416 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind416 ../src/curl -q --output log/63/curl416.out --include --trace-ascii log/63/trace416 --trace-config all --trace-time --ignore-content-length ftp://127.0.0.1:33267/416 > log/63/stdout416 2> log/63/stderr416 === End of file commands.log === Start of file ftp_server.log 09:40:46.057632 ====> Client connect 09:40:46.059413 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:46.062532 < "USER anonymous" 09:40:46.063400 > "331 We are happy you popped in![CR][LF]" 09:40:46.065319 < "PASS ftp@example.com" 09:40:46.066805 > "230 Welcome you silly person[CR][LF]" 09:40:46.068377 < "PWD" 09:40:46.069518 > "257 "/" is current directory[CR][LF]" 09:40:46.071644 < "EPSV" 09:40:46.072073 ====> Passive DATA channel requested by client 09:40:46.072317 DATA sockfilt for passive data channel starting... 09:40:46.084938 DATA sockfilt for passive data channel started (pid 95771) 09:40:46.086380 DATA sockfilt for passive data channel listens on port 39603 09:40:46.087126 > "229 Entering Passive Mode (|||39603|)[LF]" 09:40:46.087402 Client has been notified that DATA conn will be accepted on port 39603 09:40:46.090158 Client connects to port 39603 09:40:46.090702 ====> Client established passive DATA connection on port 39603 09:40:46.091681 < "TYPE I" 09:40:46.092235 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:46.094904 < "SIZE verifiedserver" 09:40:46.096240 > "213 17[CR][LF]" 09:40:46.097959 < "RETR verifiedserver" 09:40:46.099147 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:46.101221 =====> Closing passive DATA connection... 09:40:46.101449 Server disconnects passive DATA connection 09:40:46.102919 Server disconnected passive DATA connection 09:40:46.103233 DATA sockfilt for passive data channel quits (pid 95771) 09:40:46.105260 DATA sockfilt for passive data channel quit (pid 95771) 09:40:46.105511 =====> Closed passive DATA connection 09:40:46.105895 > "226 File transfer complete[CR][LF]" 09:40:46.142970 < "QUIT" 09:40:46.144254 > "221 bye bye baby[CR][LF]" 09:40:46.148228 MAIN sockfilt said DISC 09:40:46.149189 ====> Client disconnected 09:40:46.149726 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:46.310376 ====> Client connect 09:40:46.313563 Received DATA (on stdin) 09:40:46.313730 > 160 bytes data, server => client 09:40:46.313838 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:46.313941 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:46.314053 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:46.315050 < 16 bytes data, client => server 09:40:46.315210 'USER anonymous\r\n' 09:40:46.316694 Received DATA (on stdin) 09:40:46.316866 > 33 bytes data, server => client 09:40:46.317412 '331 We are happy you popped in!\r\n' 09:40:46.318139 < 22 bytes data, client => server 09:40:46.318299 'PASS ftp@example.com\r\n' 09:40:46.319528 Received DATA (on stdin) 09:40:46.319743 > 30 bytes data, server => client 09:40:46.320018 '230 Welcome you silly person\r\n' 09:40:46.321432 < 5 bytes data, client => server 09:40:46.321648 'PWD\r\n' 09:40:46.322429 Received DATA (on stdin) 09:40:46.322660 > 30 bytes data, server => client 09:40:46.322839 '257 "/" is current directory\r\n' 09:40:46.324411 < 6 bytes data, client => server 09:40:46.324681 'EPSV\r\n' 09:40:46.341400 Received DATA (on stdin) 09:40:46.341637 > 38 bytes data, server => client 09:40:46.341735 '229 Entering Passive Mode (|||39603|)\n' 09:40:46.343433 < 8 bytes data, client => serverCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind421 ../src/curl -q --output log/32/curl421.out --include --trace-ascii log/32/trace421 --trace-config all --trace-time http://127.0.0.1:45607/421 -w '%{stderr}%{header_json}\n' -s > log/32/stdout421 2> log/32/stderr421 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind428 ../src/curl -q --output log/50/curl428.out --include --trace-ascii log/50/trace428 --trace-config all --trace-time http://127.0.0.1:45651/428 -K log/50/cmd > log/50/stdout428 2> log/50/stderr428 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind420 ../src/curl -q --output log/53/curl420.out --include --trace-ascii log/53/trace420 --trace-config all --trace-time http://127.0.0.1:34639/func_test/del_cookie -b log/53/cookie420 -c log/53/save420 > log/53/stdout420 2> log/53/stderr420 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind460 ../src/curl -q --output log/45/curl460.out --include --trace-ascii log/45/trace460 --trace-config all --trace-time --expand-url > log/45/stdout460 2> log/45/stderr460 09:40:46.343645 'TYPE I\r\n' 09:40:46.346293 Received DATA (on stdin) 09:40:46.346519 > 33 bytes data, server => client 09:40:46.346641 '200 I modify TYPE as you wanted\r\n' 09:40:46.347381 < 21 bytes data, client => server 09:40:46.347713 'SIZE verifiedserver\r\n' 09:40:46.349083 Received DATA (on stdin) 09:40:46.349235 > 8 bytes data, server => client 09:40:46.349428 '213 17\r\n' 09:40:46.350943 < 21 bytes data, client => server 09:40:46.351109 'RETR verifiedserver\r\n' 09:40:46.352066 Received DATA (on stdin) 09:40:46.352213 > 29 bytes data, server => client 09:40:46.352397 '150 Binary junk (17 bytes).\r\n' 09:40:46.359927 Received DATA (on stdin) 09:40:46.360063 > 28 bytes data, server => client 09:40:46.360151 '226 File transfer complete\r\n' 09:40:46.395658 < 6 bytes data, client => server 09:40:46.395846 'QUIT\r\n' 09:40:46.397084 Received DATA (on stdin) 09:40:46.397237 > 18 bytes data, server => client 09:40:46.397514 '221 bye bye baby\r\n' 09:40:46.401594 ====> Client disconnect 09:40:46.402275 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:46.336857 Running IPv4 version 09:40:46.337629 Listening on port 39603 09:40:46.338073 Wrote pid 95771 to log/63/server/ftp_sockdata.pid 09:40:46.338243 Received PING (on stdin) 09:40:46.339275 Received PORT (on stdin) 09:40:46.343159 ====> Client connect 09:40:46.353730 Received DATA (on stdin) 09:40:46.353885 > 17 bytes data, server => client 09:40:46.354067 'WE ROOLZ: 77431\r\n' 09:40:46.355417 Received DISC (on stdin) 09:40:46.355632 ====> Client forcibly disconnected 09:40:46.357325 Received QUIT (on stdin) 09:40:46.357532 quits 09:40:46.357928 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd RETRSIZE 7 Testnum 416 === End of file server.cmd === Start of file valgrind416 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind416 setenv CURL_HOME = /build/curl/src/build-curl/tests/log/4 setenv XDG_CONFIG_HOME = test 0436...[Find .curlrc in .config/curlrc via CURL_HOME] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind436 ../src/curl --output log/4/curl436.out --include --trace-ascii log/4/trace436 --trace-config all --trace-time 127.0.0.1:43013/436 > log/4/stdout436 2> log/4/stderr436 436: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 436 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind436 ../src/curl --output log/4/curl436.out --include --trace-ascii log/4/trace436 --trace-config all --trace-time 127.0.0.1:43013/436 > log/4/stdout436 2> log/4/stderr436 === End of file commands.log === Start of file http_server.log 09:40:46.615973 ====> Client connect 09:40:46.616288 accept_connection 3 returned 4 09:40:46.616592 accept_connection 3 returned 0 09:40:46.617170 Read 93 bytes 09:40:46.617311 Process 93 bytes request 09:40:46.617392 Got request: GET /verifiedserver HTTP/1.1 09:40:46.617570 Are-we-friendly question received 09:40:46.617842 Wrote request (93 bytes) input to log/4/server.input 09:40:46.618035 Identifying ourselves as friends 09:40:46.618696 Response sent (56 bytes) and written to log/4/server.response 09:40:46.618807 special request received, no persistency 09:40:46.618874 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43013... * Connected to 127.0.0.1 (127.0.0.1) port 43013 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43013 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73808 === End of file http_verify.out === Start of file server.cmd Testnum 436 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73808 === End of file server.response === Start of file valgrind436 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind436 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind423 ../src/curl -q --trace-ascii log/62/trace423 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:38899/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:38899/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/62/stdout423 2> log/62/stderr423 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind426 ../src/curl -q --output log/57/curl426.out --include --trace-ascii log/57/trace426 --trace-config all --trace-time http://127.0.0.1:35945/426 -d foobar -C 3 > log/57/stdout426 2> log/57/stderr426 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind425 ../src/curl -q --output log/61/curl425.out --include --trace-ascii log/61/trace425 --trace-config all --trace-time -T log/61/up425 http://127.0.0.1:44381/425/?fullpath > log/61/stdout425 2> log/61/stderr425 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind434 ../src/curl -q --output log/16/curl434.out --include --trace-ascii log/16/trace434 --trace-config all --trace-time -K log/16/config434 > log/16/stdout434 2> log/16/stderr434 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind429 ../src/curl -q --output log/64/curl429.out --include --trace-ascii log/64/trace429 --trace-config all --trace-time http://127.0.0.1:33073/429 -K log/64/cmd > log/64/stdout429 2> log/64/stderr429 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind454 ../src/curl -q --output log/18/curl454.out --include --trace-ascii log/18/trace454 --trace-config all --trace-time http://127.0.0.1:41285/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/18/stdout454 2> log/18/stderr454 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind457 ../src/curl -q --output log/7/curl457.out --include --trace-ascii log/7/trace457 --trace-config all --trace-time http://127.0.0.1:44647/457 --max-filesize 143 > log/7/stdout457 2> log/7/stderr457 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind462 ../src/curl -q --output log/30/curl462.out --include --trace-ascii log/30/trace462 --trace-config all --trace-time http://127.0.0.1:43913/462 -K log/30/cmd > log/30/stdout462 2> log/30/stderr462 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind424 ../src/curl -q --trace-ascii log/44/trace424 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:34655/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:34655/424?qqqq#ffff" -w '%{urle.host}+%{urle.path}+%{urle.scheme}+%{urle.user}+%{urle.password}+%{urle.port}+%{urle.query}+%{urle.fragment}\n' -x http://127.0.0.1:34655/ -L > log/44/stdout424 2> log/44/stderr424 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind467 ../src/curl -q --output log/10/curl467.out --include --trace-ascii log/10/trace467 --trace-config all --trace-time curl -v http://example.com > log/10/stdout467 2> log/10/stderr467 test 0421...[HTTP GET multiple headers and %{header_json}] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind421 ../src/curl -q --output log/32/curl421.out --include --trace-ascii log/32/trace421 --trace-config all --trace-time http://127.0.0.1:45607/421 -w '%{stderr}%{header_json}\n' -s > log/32/stdout421 2> log/32/stderr421 421: stderr FAILED: --- log/32/check-expected 2025-07-18 09:40:47.728604631 +0000 +++ log/32/check-generated 2025-07-18 09:40:47.726604632 +0000 @@ -1,19 +0,0 @@ -{"server":["nginx"],[CR][LF] -"date":["Tue, 07 Mar 2023 15:14:41 GMT"],[CR][LF] -"content-type":["application/json"],[CR][LF] -"content-length":["6"],[CR][LF] -"vary":["Accept-Encoding","Accept-Encoding","Accept"],[CR][LF] -"access-control-allow-origin":["*"],[CR][LF] -"referrer-policy":["strict-origin-when-cross-origin","strict-origin-when-cross-origin"],[CR][LF] -"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],[CR][LF] -"access-control-max-age":["1728000"],[CR][LF] -"access-control-allow-headers":["Authorization, Content-Type, AuthorizationOauth, X-EARLY-ACCESS"],[CR][LF] -"access-control-expose-headers":[""],[CR][LF] -"etag":["W/\"2678f9ab2ba550d164e7cc014aefd31e\""],[CR][LF] -"cache-control":["max-age=0, private, must-revalidate"],[CR][LF] -"x-request-id":["375b343b3d2ecf9b442c0daf00fc4a9a"],[CR][LF] -"strict-transport-security":["max-age=31536000; includeSubDomains"],[CR][LF] -"x-content-type-options":["nosniff"],[CR][LF] -"x-xss-protection":["1; mode=block"],[CR][LF] -"feature-policy":["accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'"][CR][LF] -}[CR][LF] == Contents of files in the log/32/ dir after test 421 === Start of file check-expected {"server":["nginx"],[CR][LF] "date":["Tue, 07 Mar 2023 15:14:41 GMT"],[CR][LF] "content-type":["application/json"],[CR][LF] "content-length":["6"],[CR][LF] "vary":["Accept-Encoding","Accept-Encoding","Accept"],[CR][LF] "access-control-allow-origin":["*"],[CR][LF] "referrer-policy":["strict-origin-when-cross-origin","strict-origin-when-cross-origin"],[CR][LF] "access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],[CR][LF] "access-control-max-age":["1728000"],[CR][LF] "access-control-allow-headers":["Authorization, Content-Type, AuthorizationOauth, X-EARLY-ACCESS"],[CR][LF] "access-control-expose-headers":[""],[CR][LF] "etag":["W/\"2678f9ab2ba550d164e7cc014aefd31e\""],[CR][LF] "cache-control":["max-age=0, private, must-revalidate"],[CR][LF] "x-request-id":["375b343b3d2ecf9b442c0daf00fc4a9a"],[CR][LF] "strict-transport-security":["max-age=31536000; includeSubDomains"],[CR][LF] "x-content-type-options":["nosniff"],[CR][LF] "x-xss-protection":["1; mode=block"],[CR][LF] "feature-policy":["accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'"][CR][LF] }[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind421 ../src/curl -q --output log/32/curl421.out --include --trace-ascii log/32/trace421 --trace-config all --trace-time http://127.0.0.1:45607/421 -w '%{stderr}%{header_json}\n' -s > log/32/stdout421 2> log/32/stderr421 === End of file commands.log === Start of file http_server.log 09:40:46.417878 ====> Client connect 09:40:46.418225 accept_connection 3 returned 4 09:40:46.418414 accept_connection 3 returned 0 09:40:46.418727 Read 93 bytes 09:40:46.418856 Process 93 bytes request 09:40:46.419026 Got request: GET /verifiedserver HTTP/1.1 09:40:46.419155 Are-we-friendly question received 09:40:46.419869 Wrote request (93 bytes) input to log/32/server.input 09:40:46.420122 Identifying ourselves as friends 09:40:46.423764 Response sent (56 bytes) and written to log/32/server.response 09:40:46.423904 special request received, no persistency 09:40:46.423989 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45607... * Connected to 127.0.0.1 (127.0.0.1) port 45607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45607 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73778 === End of file http_verify.out === Start of file server.cmd Testnum 421 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73778 === End of file server.response === Start of file valgrind421 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind421 setenv FUNVALUE = contents setenv VALUE2 = curl setenv BLANK = test 0428...[Expand environment variables within config file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind428 ../src/curl -q --output log/50/curl428.out --include --trace-ascii log/50/trace428 --trace-config all --trace-time http://127.0.0.1:45651/428 -K log/50/cmd > log/50/stdout428 2> log/50/stderr428 428: protocol FAILED! There was no content at all in the file log/50/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/50/ dir after test 428 === Start of file cmd --variable %FUNVALUE --variable %VALUE2 --variable %BLANK --variable %curl_NOT_SET=default --expand-data 1{{FUNVALUE}}2{{VALUE2}}3{{curl_NOT_SET}}4{{BLANK}}5\{{verbatim}}6{{not.good}}7{{}} === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind428 ../src/curl -q --output log/50/curl428.out --include --trace-ascii log/50/trace428 --trace-config all --trace-time http://127.0.0.1:45651/428 -K log/50/cmd > log/50/stdout428 2> log/50/stderr428 === End of file commands.log === Start of file http_server.log 09:40:46.600913 ====> Client connect 09:40:46.601277 accept_connection 3 returned 4 09:40:46.601589 accept_connection 3 returned 0 09:40:46.601778 Read 93 bytes 09:40:46.601890 Process 93 bytes request 09:40:46.601996 Got request: GET /verifiedserver HTTP/1.1 09:40:46.602092 Are-we-friendly question received 09:40:46.602335 Wrote request (93 bytes) input to log/50/seCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind455 ../src/curl -q --output log/17/curl455.out --include --trace-ascii log/17/trace455 --trace-config all --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:44383/{{moby:b64}}/{{what:64dec}}/455" > log/17/stdout455 2> log/17/stderr455 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind435 ../src/curl -q --include --trace-ascii log/9/trace435 --trace-config all --trace-time http://127.0.0.1:46607/435 http://127.0.0.1:46607/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/9/stdout435 2> log/9/stderr435 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind453 ../src/curl -q --output log/21/curl453.out --include --trace-ascii log/21/trace453 --trace-config all --trace-time http://127.0.0.1:34827/453 --variable what@log/21/junk --expand-data "{{what}}" > log/21/stdout453 2> log/21/stderr453 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind449 ../src/curl -q --output log/48/curl449.out --include --trace-ascii log/48/trace449 --trace-config all --trace-time http://127.0.0.1:46339/449 -K log/48/cmd > log/48/stdout449 2> log/48/stderr449 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind452 ../src/curl -q --output log/23/curl452.out --include --trace-ascii log/23/trace452 --trace-config all --trace-time http://127.0.0.1:42467/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/23/stdout452 2> log/23/stderr452 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind440 ../src/curl -q --include --trace-ascii log/2/trace440 --trace-config all --trace-time -x http://127.0.0.1:39659 http://this.hsts.example./440 --hsts log/2/input440 -w '%{url_effective}\n' > log/2/stdout440 2> log/2/stderr440 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind470 ../src/curl -q --output log/20/curl470.out --include --trace-ascii log/20/trace470 --trace-config all --trace-time 127.0.0.1:45475 --no-progress-meter -K "log/20/input470" > log/20/stdout470 2> log/20/stderr470 rver.input 09:40:46.602627 Identifying ourselves as friends 09:40:46.604384 Response sent (56 bytes) and written to log/50/server.response 09:40:46.604601 special request received, no persistency 09:40:46.604685 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45651... * Connected to 127.0.0.1 (127.0.0.1) port 45651 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45651 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73759 === End of file http_verify.out === Start of file server.cmd Testnum 428 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73759 === End of file server.response === Start of file valgrind428 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind428 test 0457...[chunked Transfer-Encoding with --max-filesize] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind457 ../src/curl -q --output log/7/curl457.out --include --trace-ascii log/7/trace457 --trace-config all --trace-time http://127.0.0.1:44647/457 --max-filesize 143 > log/7/stdout457 2> log/7/stderr457 457: protocol FAILED! There was no content at all in the file log/7/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/7/ dir after test 457 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind457 ../src/curl -q --output log/7/curl457.out --include --trace-ascii log/7/trace457 --trace-config all --trace-time http://127.0.0.1:44647/457 --max-filesize 143 > log/7/stdout457 2> log/7/stderr457 === End of file commands.log === Start of file http_server.log 09:40:46.883869 ====> Client connect 09:40:46.884200 accept_connection 3 returned 4 09:40:46.884378 accept_connection 3 returned 0 09:40:46.884878 Read 93 bytes 09:40:46.884999 Process 93 bytes request 09:40:46.885102 Got request: GET /verifiedserver HTTP/1.1 09:40:46.885195 Are-we-friendly question received 09:40:46.885432 Wrote request (93 bytes) input to log/7/server.input 09:40:46.885765 Identifying ourselves as friends 09:40:46.888734 Response sent (56 bytes) and written to log/7/server.response 09:40:46.888856 special request received, no persistency 09:40:46.888923 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44647... * Connected to 127.0.0.1 (127.0.0.1) port 44647 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44647 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73801 === End of file http_verify.out === Start of file server.cmd Testnum 457 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73801 === End of file server.response === Start of file valgrind457 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind457 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind471 ../src/curl -q --include --trace-ascii log/19/trace471 --trace-config all --trace-time "http://127.0.0.1:35697/{471,4710001}" -o "log/19/dumpit#1.dump" > log/19/stdout471 2> log/19/stderr471 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind448 ../src/curl -q --output log/55/curl448.out --include --trace-ascii log/55/trace448 --trace-config all --trace-time http://127.0.0.1:33071/448 -K log/55/cmd > log/55/stdout448 2> log/55/stderr448 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind432 ../src/curl -q --output log/36/curl432.out --include --trace-ascii log/36/trace432 --trace-config all --trace-time -K log/36/config432 > log/36/stdout432 2> log/36/stderr432 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind430 ../src/curl -q --output log/49/curl430.out --include --trace-ascii log/49/trace430 --trace-config all --trace-time -K log/49/config430-a -K log/49/config430-b -K log/49/config430-c > log/49/stdout430 2> log/49/stderr430 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind459 ../src/curl -q --output log/1/curl459.out --include --trace-ascii log/1/trace459 --trace-config all --trace-time http://127.0.0.1:40633/459 --config log/1/config --silent > log/1/stdout459 2> log/1/stderr459 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind451 ../src/curl -q --output log/24/curl451.out --include --trace-ascii log/24/trace451 --trace-config all --trace-time http://127.0.0.1:39259/451 --variable what@log/24/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/24/stdout451 2> log/24/stderr451 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind441 ../src/curl -q --include --trace-ascii log/51/trace441 --trace-config all --trace-time -x http://127.0.0.1:34903 http://this.hsts.example/441 --hsts log/51/input441 -w '%{url_effective}\n' > log/51/stdout441 2> log/51/stderr441 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind461 ../src/curl -q --output log/41/curl461.out --include --trace-ascii log/41/trace461 --trace-config all --trace-time http://127.0.0.1:35093/461 -H host: > log/41/stdout461 2> log/41/stderr461 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind484 ../src/curl -q --output log/33/curl484.out --include --trace-ascii log/33/trace484 --trace-config all --trace-time http://example.com/484 --etag-compare log/33/etag484 --etag-save log/33/etag484 --url http://example.net/fooo > log/33/stdout484 2> log/33/stderr484 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind443 ../src/curl -q --output log/59/curl443.out --include --trace-ascii log/59/trace443 --trace-config all --trace-time http://attack.invalid:43695/a/b/443 -b log/59/cookie443 --resolve attack.invalid:43695:127.0.0.1 -L > log/59/stdout443 2> log/59/stderr443 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind431 ../src/curl -q --output log/46/curl431.out --include --trace-ascii log/46/trace431 --trace-config all --trace-time -K log/46/config431-a -K log/46/config431-b --next -d c 127.0.0.1:46523/4310003 -H "c: c" > log/46/stdout431 2> log/46/stderr431 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind463 ../src/curl -q --output log/11/curl463.out --include --trace-ascii log/11/trace463 --trace-config all --trace-time -d @log/11/input463 http://127.0.0.1:41387/463 > log/11/stdout463 2> log/11/stderr463 test 0435...[verify -w local/remote port+ip after connection reuse] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind435 ../src/curl -q --include --trace-ascii log/9/trace435 --trace-config all --trace-time http://127.0.0.1:46607/435 http://127.0.0.1:46607/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/9/stdout435 2> log/9/stderr435 435: stdout FAILED: --- log/9/check-expected 2025-07-18 09:40:48.214631665 +0000 +++ log/9/check-generated 2025-07-18 09:40:48.213604386 +0000 @@ -1,14 +0,0 @@ -HTTP/1.1 200 OK[CR][LF] -Content-Length: 0[CR][LF] -[CR][LF] -local port == [digits][LF] -local ip == 127.0.0.1[LF] -remote_ip == 127.0.0.1[LF] -remote_port == 46607[LF] -HTTP/1.1 200 OK[CR][LF] -Content-Length: 0[CR][LF] -[CR][LF] -local port == [digits][LF] -local ip == 127.0.0.1[LF] -remote_ip == 127.0.0.1[LF] -remote_port == 46607[LF] == Contents of files in the log/9/ dir after test 435 === Start of file check-expected HTTP/1.1 200 OK[CR][LF] Content-Length: 0[CR][LF] [CR][LF] local port == [digits][LF] local ip == 127.0.0.1[LF] remote_ip == 127.0.0.1[LF] remote_port == 46607[LF] HTTP/1.1 200 OK[CR][LF] Content-Length: 0[CR][LF] [CR][LF] local port == [digits][LF] local ip == 127.0.0.1[LF] remote_ip == 127.0.0.1[LF] remote_port == 46607[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind435 ../src/curl -q --include --trace-ascii log/9/trace435 --trace-config all --trace-time http://127.0.0.1:46607/435 http://127.0.0.1:46607/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/9/stdout435 2> log/9/stderr435 === End of file commands.log === Start of file http_server.log 09:40:46.840093 ====> Client connect 09:40:46.840381 accept_connection 3 returned 4 09:40:46.840680 accept_connection 3 returned 0 09:40:46.846412 Read 93 bytes 09:40:46.846645 Process 93 bytes request 09:40:46.846740 Got request: GET /verifiedserver HTTP/1.1 09:40:46.846823 Are-we-friendly question received 09:40:46.847072 Wrote request (93 bytes) input to log/9/server.input 09:40:46.847284 Identifying ourselves as friends 09:40:46.847918 Response sent (56 bytes) and written to log/9/server.response 09:40:46.848027 special request received, no persistency 09:40:46.848094 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46607... * Connected to 127.0.0.1 (127.0.0.1) port 46607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46607 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73797 === End of file http_verify.out === Start of file server.cmd Testnum 435 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73797 === End of file server.response === Start of file valgrind435 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind435 * starts no server test 0467...[use a bad short option letter that does not exist (after one does exist)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind467 ../src/curl -q --output log/10/curl467.out --include --trace-ascii log/10/trace467 --trace-config all --trace-time curl -v http://example.com > log/10/stdout467 2> log/10/stderr467 curl returned 1, when expecting 2 467: exit FAILED == Contents of files in the log/10/ dir after test 467 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind467 ../src/curl -q --output log/10/curl467.out --include --trace-ascii log/10/trace467 --trace-config all --trace-time curl -v http://example.com > log/10/stdout467 2> log/10/stderr467 === End of file commands.log === Start of file server.cmd Testnum 467 === End of file server.cmd === Start of file valgrind467 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind467 test 0434...[-K with a single line without newline] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind434 ../src/curl -q --output log/16/curl434.out --include --trace-ascii log/16/trace434 --trace-config all --trace-time -K log/16/config434 > log/16/stdout434 2> log/16/stderr434 434: protocol FAILED! There was no content at all in the file log/16/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/16/ dir after test 434 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind434 ../src/curl -q --output log/16/curl434.out --include --trace-ascii log/16/trace434 --trace-config all --trace-time -K log/16/config434 > log/16/stdout434 2> log/16/stderr434 === End of file commands.log === Start of file config434 url = 127.0.0.1:34829/434 === End of file config434 === Start of file http_server.log 09:40:46.784889 ====> Client connect 09:40:46.785223 accept_connection 3 returned 4 09:40:46.785402 accept_connection 3 returned 0 09:40:46.785707 Read 93 bytes 09:40:46.785829 Process 93 bytes request 09:40:46.785932 Got request: GET /verifiedserver HTTP/1.1 09:40:46.786027 Are-we-friendly question received 09:40:46.786279 Wrote request (93 bytes) input to log/16/server.input 09:40:46.789630 Identifying ourselves as friends 09:40:46.790654 Response sent (56 bytes) and written to log/16/server.response 09:40:46.790767 special request received, no persistency 09:40:46.790853 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34829... * Connected to 127.0.0.1 (127.0.0.1) port 34829 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34829 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73794 === End of file http_verify.out === Start of file server.cmd Testnum 434 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73794 === End of file server.response === Start of file valgrind434 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind434 test 0455...[Variable using base64] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind455 ../src/curl -q --output log/17/curl455.out --include --trace-ascii log/17/trace455 --trace-config all --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:44383/{{moby:b64}}/{{what:64dec}}/455" > log/17/stdout455 2> log/17/stderr455 455: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 455 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind455 ../src/curl -q --output log/17/curl455.out --include --trace-ascii log/17/trace455 --trace-config all --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:44383/{{moby:b64}}/{{what:64dec}}/455" > log/17/stdout455 2> log/17/stderr455 === End of file commands.log === Start of file http_server.log 09:40:47.057342 ====> Client connect 09:40:47.057818 accept_connection 3 returned 4 09:40:47.057986 accept_connection 3 returned 0 09:40:47.058888 Read 93 bytes 09:40:47.059047 Process 93 bytes request 09:40:47.059172 Got request: GET /verifiedserver HTTP/1.1 09:40:47.059275 Are-we-friendly question received 09:40:47.059596 Wrote request (93 bytes) input to log/17/server.input 09:40:47.059823 Identifying ourselves as friends 09:40:47.061654 Response sent (56 bytes) and written to log/17/server.response 09:40:47.061759 special request received, no persistency 09:40:47.061825 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44383... * Connected to 127.0.0.1 (127.0.0.1) port 44383 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44383 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73792 === End of file http_verify.out === Start of file server.cmd Testnum 455 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73792 === End of file server.response === Start of file valgrind455 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind455 test 0454...[Variable using illegal function separator] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind454 ../src/curl -q --output log/18/curl454.out --include --trace-ascii log/18/trace454 --trace-config all --trace-time http://127.0.0.1:41285/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/18/stdout454 2> log/18/stderr454 curl returned 1, when expecting 2 454: exit FAILED == Contents of files in the log/18/ dir after test 454 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind454 ../src/curl -q --output log/18/curl454.out --include --trace-ascii log/18/trace454 --trace-config all --trace-time http://127.0.0.1:41285/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/18/stdout454 2> log/18/stderr454CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind485 ../src/curl -q --output log/22/curl485.out --include --trace-ascii log/22/trace485 --trace-config all --trace-time http://example.com/485 http://example.net/fooo --etag-save log/22/etag485 > log/22/stdout485 2> log/22/stderr485 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind458 ../src/curl -q --include --trace-ascii log/5/trace458 --trace-config all --trace-time http://127.0.0.1:33413/458 -K log/5/cmd > log/5/stdout458 2> log/5/stderr458 === End of file commands.log === Start of file http_server.log 09:40:46.856619 ====> Client connect 09:40:46.856928 accept_connection 3 returned 4 09:40:46.857066 accept_connection 3 returned 0 09:40:46.857185 Read 93 bytes 09:40:46.857269 Process 93 bytes request 09:40:46.857340 Got request: GET /verifiedserver HTTP/1.1 09:40:46.857402 Are-we-friendly question received 09:40:46.857780 Wrote request (93 bytes) input to log/18/server.input 09:40:46.857945 Identifying ourselves as friends 09:40:46.862743 Response sent (56 bytes) and written to log/18/server.response 09:40:46.862846 special request received, no persistency 09:40:46.862917 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41285... * Connected to 127.0.0.1 (127.0.0.1) port 41285 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41285 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73790 === End of file http_verify.out === Start of file server.cmd Testnum 454 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73790 === End of file server.response === Start of file valgrind454 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind454 * starts no server test 0462...[Missing environment variables in config file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind462 ../src/curl -q --output log/30/curl462.out --include --trace-ascii log/30/trace462 --trace-config all --trace-time http://127.0.0.1:43913/462 -K log/30/cmd > log/30/stdout462 2> log/30/stderr462 curl returned 1, when expecting 26 462: exit FAILED == Contents of files in the log/30/ dir after test 462 === Start of file cmd variable %MISSING expand-data {{MISSING}} === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind462 ../src/curl -q --output log/30/curl462.out --include --trace-ascii log/30/trace462 --trace-config all --trace-time http://127.0.0.1:43913/462 -K log/30/cmd > log/30/stdout462 2> log/30/stderr462 === End of file commands.log === Start of file server.cmd Testnum 462 === End of file server.cmd === Start of file valgrind462 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind462 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind482 ../src/curl -q --trace-ascii log/31/trace482 --trace-config all --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/31/482" > log/31/stdout482 2> log/31/stderr482 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind469 ../src/curl -q --output log/38/curl469.out --include --trace-ascii log/38/trace469 --trace-config all --trace-time -H “host: 127.0.0.1:33511/“ -s > log/38/stdout469 2> log/38/stderr469 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind481 ../src/curl -q --trace-ascii log/52/trace481 --trace-config all --trace-time http://127.0.0.1:40089/481 --no-clobber -C 1 -o "log/52/481" > log/52/stdout481 2> log/52/stderr481 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind487 ../src/curl -q --output log/60/curl487.out --include --trace-ascii log/60/trace487 --trace-config all --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:38843/{{what:64dec}}/487" -g > log/60/stdout487 2> log/60/stderr487 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind473 ../src/curl -q --output log/8/curl473.out --include --trace-ascii log/8/trace473 --trace-config all --trace-time http://127.0.0.1:46129/473 --etag-save log/8/etag473 > log/8/stdout473 2> log/8/stderr473 test 0424...[-w with urle.* variables] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind424 ../src/curl -q --trace-ascii log/44/trace424 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:34655/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:34655/424?qqqq#ffff" -w '%{urle.host}+%{urle.path}+%{urle.scheme}+%{urle.user}+%{urle.password}+%{urle.port}+%{urle.query}+%{urle.fragment}\n' -x http://127.0.0.1:34655/ -L > log/44/stdout424 2> log/44/stderr424 424: stdout FAILED: --- log/44/check-expected 2025-07-18 09:40:48.443119430 +0000 +++ log/44/check-generated 2025-07-18 09:40:48.441604270 +0000 @@ -1,4 +0,0 @@ -anotherhost.example+/4240002+http+++2023+moo.html+[LF] -hello2000+/424+h55p+++1+qqqq+ffff[LF] -+++++++[LF] -anotherhost.example+/4240002+http+++2023+moo.html+[LF] == Contents of files in the log/44/ dir after test 424 === Start of file check-expected anotherhost.example+/4240002+http+++2023+moo.html+[LF] hello2000+/424+h55p+++1+qqqq+ffff[LF] +++++++[LF] anotherhost.example+/4240002+http+++2023+moo.html+[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind424 ../src/curl -q --trace-ascii log/44/trace424 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:34655/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:34655/424?qqqq#ffff" -w '%{urle.host}+%{urle.path}+%{urle.scheme}+%{urle.user}+%{urle.password}+%{urle.port}+%{urle.query}+%{urle.fragment}\n' -x http://127.0.0.1:34655/ -L > log/44/stdout424 2> log/44/stderr424 === End of file commands.log === Start of file http_server.log 09:40:46.587003 ====> Client connect 09:40:46.587312 accept_connection 3 returned 4 09:40:46.587633 accept_connection 3 returned 0 09:40:46.587819 Read 93 bytes 09:40:46.587905 Process 93 bytes request 09:40:46.588006 Got request: GET /verifiedserver HTTP/1.1 09:40:46.588096 Are-we-friendly question received 09:40:46.588345 Wrote request (93 bytes) input to log/44/server.input 09:40:46.588656 Identifying ourselves as friends 09:40:46.589507 Response sent (56 bytes) and written to log/44/server.response 09:40:46.589645 special request received, no persistency 09:40:46.589716 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34655... * Connected to 127.0.0.1 (127.0.0.1) port 34655 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34655 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73766 === End of file http_verify.out === Start of file server.cmd Testnum 424 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73766 === End of file server.response === Start of file valgrind424 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind424 * starts no server test 0460...[try --expand without an argument] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind460 ../src/curl -q --output log/45/curl460.out --include --trace-ascii log/45/trace460 --trace-config all --trace-time --expand-url > log/45/stdout460 2> log/45/stderr460 curl returned 1, when expecting 2 460: exit FAILED == Contents of files in the log/45/ dir after test 460 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind460 ../src/curl -q --output log/45/curl460.out --include --trace-ascii log/45/trace460 --trace-config all --trace-time --expand-url > log/45/stdout460 2> log/45/stderr460 === End of file commands.log === Start of file server.cmd Testnum 460 === End of file server.cmd === Start of file valgrind460 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind460 test 0420...[Setting cookies set with expired dates that were loaded from jar] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind420 ../src/curl -q --output log/53/curl420.out --include --trace-ascii log/53/trace420 --trace-config all --trace-time http://127.0.0.1:34639/func_test/del_cookie -b log/53/cookie420 -c log/53/save420 > log/53/stdout420 2> log/53/stderr420 420: protocol FAILED! There was no content at all in the file log/53/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/53/ dir after test 420 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind420 ../src/curl -q --output log/53/curl420.out --include --trace-ascii log/53/trace420 --trace-confiCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind483 ../src/curl -q --output log/27/curl483.out --include --trace-ascii log/27/trace483 --trace-config all --trace-time http://127.0.0.1:42323/483 -c log/27/c483 > log/27/stdout483 2> log/27/stderr483 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind489 ../src/curl -q --output log/40/curl489.out --include --trace-ascii log/40/trace489 --trace-config all --trace-time --output-dir log/40 --url @log/40/urls > log/40/stdout489 2> log/40/stderr489 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind456 ../src/curl -q --output log/15/curl456.out --include --trace-ascii log/15/trace456 --trace-config all --trace-time http://127.0.0.1:35435/456 --variable what@log/15/junk --expand-data "{{what}}" > log/15/stdout456 2> log/15/stderr456 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind477 ../src/curl -q --output log/3/curl477.out --include --trace-ascii log/3/trace477 --trace-config all --trace-time http://127.0.0.1:42107/477 --max-filesize 5 -L > log/3/stdout477 2> log/3/stderr477 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind488 ../src/curl -q --output log/37/curl488.out --include --trace-ascii log/37/trace488 --trace-config all --trace-time --output-dir log/37 --url @- log/37/stdout488 2> log/37/stderr488 g all --trace-time http://127.0.0.1:34639/func_test/del_cookie -b log/53/cookie420 -c log/53/save420 > log/53/stdout420 2> log/53/stderr420 === End of file commands.log === Start of file cookie420 127.0.0.1 FALSE /func_test FALSE 21709598616 mycookie6 991 #HttpOnly_127.0.0.1 FALSE /func_test FALSE 21709598616 mycookie5 990 #HttpOnly_127.0.0.1 FALSE /func_test FALSE 21709598616 mycookie4 950 #HttpOnly_127.0.0.1 FALSE /func_test FALSE 21709598616 mycookie3 900 #HttpOnly_127.0.0.1 FALSE /func_test/ FALSE 21709598616 mycookie2 5900 #HttpOnly_127.0.0.1 FALSE / FALSE 21709598616 mycookie1 4900 #HttpOnly_127.0.0.1 FALSE /func_test/ FALSE 0 mycookie 1200 === End of file cookie420 === Start of file http_server.log 09:40:46.521766 ====> Client connect 09:40:46.522077 accept_connection 3 returned 4 09:40:46.522247 accept_connection 3 returned 0 09:40:46.523987 Read 93 bytes 09:40:46.524120 Process 93 bytes request 09:40:46.524199 Got request: GET /verifiedserver HTTP/1.1 09:40:46.524273 Are-we-friendly question received 09:40:46.524588 Wrote request (93 bytes) input to log/53/server.input 09:40:46.524768 Identifying ourselves as friends 09:40:46.525814 Response sent (56 bytes) and written to log/53/server.response 09:40:46.525950 special request received, no persistency 09:40:46.526037 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34639... * Connected to 127.0.0.1 (127.0.0.1) port 34639 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34639 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73761 === End of file http_verify.out === Start of file server.cmd Testnum 420 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73761 === End of file server.response === Start of file valgrind420 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind420 test 0426...[try --data with --continue-at] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind426 ../src/curl -q --output log/57/curl426.out --include --trace-ascii log/57/trace426 --trace-config all --trace-time http://127.0.0.1:35945/426 -d foobar -C 3 > log/57/stdout426 2> log/57/stderr426 curl returned 1, when expecting 2 426: exit FAILED == Contents of files in the log/57/ dir after test 426 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind426 ../src/curl -q --output log/57/curl426.out --include --trace-ascii log/57/trace426 --trace-config all --trace-time http://127.0.0.1:35945/426 -d foobar -C 3 > log/57/stdout426 2> log/57/stderr426 === End of file commands.log === Start of file http_server.log 09:40:46.535118 ====> Client connect 09:40:46.535432 accept_connection 3 returned 4 09:40:46.535776 accept_connection 3 returned 0 09:40:46.535913 Read 93 bytes 09:40:46.536024 Process 93 bytes request 09:40:46.536130 Got request: GET /verifiedserver HTTP/1.1 09:40:46.536225 Are-we-friendly question received 09:40:46.537694 Wrote request (93 bytes) input to log/57/server.input 09:40:46.537926 Identifying ourselves as friends 09:40:46.541173 Response sent (56 bytes) and written to log/57/server.response 09:40:46.541315 special request received, no persistency 09:40:46.541393 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35945... * Connected to 127.0.0.1 (127.0.0.1) port 35945 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35945 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73753 === End of file http_verify.out === Start of file server.cmd Testnum 426 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73753 === End of file server.response === Start of file valgrind426 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind426 test 0425...[HTTP PUT with path ending with slash + query] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind425 ../src/curl -q --output log/61/curl425.out --include --trace-ascii log/61/trace425 --trace-config all --trace-time -T log/61/up425 http://127.0.0.1:44381/425/?fullpath > log/61/stdout425 2> log/61/stderr425 425: protocol FAILED! There was no content at all in the file log/61/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/61/ dir after test 425 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind425 ../src/curl -q --output log/61/curl425.CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind468 ../src/curl -q --trace-ascii log/47/trace468 --trace-config all --trace-time http://127.0.0.1:41103/468 -K log/47/cmd468 -w "" > log/47/stdout468 2> log/47/stderr468 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind450 ../src/curl -q --output log/29/curl450.out --include --trace-ascii log/29/trace450 --trace-config all --trace-time http://127.0.0.1:36877/450 --variable what@log/29/junk --expand-data "{{what:trim:url}}" > log/29/stdout450 2> log/29/stderr450 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind478 ../src/curl -q --output log/42/curl478.out --include --trace-ascii log/42/trace478 --trace-config all --trace-time --netrc --netrc-file log/42/netrc478 -x http://127.0.0.1:42819/ http://debbie@github.com/ > log/42/stdout478 2> log/42/stderr478 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind486 ../src/curl -q --output log/35/curl486.out --include --trace-ascii log/35/trace486 --trace-config all --trace-time --netrc --netrc-file log/35/netrc486 -L -x http://127.0.0.1:43179/ http://a.com/ > log/35/stdout486 2> log/35/stderr486 out --include --trace-ascii log/61/trace425 --trace-config all --trace-time -T log/61/up425 http://127.0.0.1:44381/425/?fullpath > log/61/stdout425 2> log/61/stderr425 === End of file commands.log === Start of file http_server.log 09:40:46.488963 ====> Client connect 09:40:46.489269 accept_connection 3 returned 4 09:40:46.489589 accept_connection 3 returned 0 09:40:46.490559 Read 93 bytes 09:40:46.490721 Process 93 bytes request 09:40:46.490814 Got request: GET /verifiedserver HTTP/1.1 09:40:46.490898 Are-we-friendly question received 09:40:46.491146 Wrote request (93 bytes) input to log/61/server.input 09:40:46.491336 Identifying ourselves as friends 09:40:46.493329 Response sent (56 bytes) and written to log/61/server.response 09:40:46.496634 special request received, no persistency 09:40:46.496747 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44381... * Connected to 127.0.0.1 (127.0.0.1) port 44381 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44381 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73751 === End of file http_verify.out === Start of file server.cmd Testnum 425 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73751 === End of file server.response === Start of file up425 content === End of file up425 === Start of file valgrind425 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind425 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind491 ../src/curl -q --output log/12/curl491.out --include --trace-ascii log/12/trace491 --trace-config all --trace-time http://127.0.0.1:45579/491 -T '{log/12/in491,log/12/bad491}' > log/12/stdout491 2> log/12/stderr491 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind492 ../src/curl -q --output log/28/curl492.out --include --trace-ascii log/28/trace492 --trace-config all --trace-time 'http://127.0.0.1:37545/{one,two}/' -T '{log/28/first492,log/28/second492}' -H "Testno: 492" > log/28/stdout492 2> log/28/stderr492 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind476 ../src/curl -q --output log/13/curl476.out --include --trace-ascii log/13/trace476 --trace-config all --trace-time "ftp://127.0.0.1:34087/476;type=a" -T log/13/test476.txt > log/13/stdout476 2> log/13/stderr476 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind490 ../src/curl -q --output log/25/curl490.out --include --trace-ascii log/25/trace490 --trace-config all --trace-time http://127.0.0.1:41727/490 -T '{log/25/in490,log/25/in490}' > log/25/stdout490 2> log/25/stderr490 test 0423...[-w with url.* variables] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind423 ../src/curl -q --trace-ascii log/62/trace423 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:38899/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:38899/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/62/stdout423 2> log/62/stderr423 423: stdout FAILED: --- log/62/check-expected 2025-07-18 09:40:48.614689523 +0000 +++ log/62/check-generated 2025-07-18 09:40:48.613604183 +0000 @@ -1,4 +0,0 @@ -127.0.0.1+/423+http+uuuu+pppp+38899+qqqq+ffff[LF] -hello2000+/423+h55p+++1+qqqq+ffff[LF] -+++++++[LF] -127.0.0.1+/423+http+u22u+p22p+38899+qqqq+ffff[LF] == Contents of files in the log/62/ dir after test 423 === Start of file check-expected 127.0.0.1+/423+http+uuuu+pppp+38899+qqqq+ffff[LF] hello2000+/423+h55p+++1+qqqq+ffff[LF] +++++++[LF] 127.0.0.1+/423+http+u22u+p22p+38899+qqqq+ffff[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind423 ../src/curl -q --trace-ascii log/62/trace423 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:38899/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:38899/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/62/stdout423 2> log/62/stderr423 === End of file commands.log === Start of file http_server.log 09:40:46.514098 ====> Client connect 09:40:46.514591 accept_connection 3 returned 4 09:40:46.514808 accept_connection 3 returned 0 09:40:46.515567 Read 93 bytes 09:40:46.515728 Process 93 bytes request 09:40:46.515833 Got request: GET /verifiedserver HTTP/1.1 09:40:46.515938 Are-we-friendly question received 09:40:46.516214 Wrote request (93 bytes) input to log/62/server.input 09:40:46.516529 Identifying ourselves as friends 09:40:46.518714 Response sent (56 bytes) and written to log/62/server.response 09:40:46.518845 special request received, no persistency 09:40:46.518931 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38899... * Connected to 127.0.0.1 (127.0.0.1) port 38899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73749 === End of file http_verify.out === Start of file server.cmd Testnum 423 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73749 === End of file server.response === Start of file valgrind423 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind423 setenv FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF = contents2023 test 0429...[Expand environment variable in config file - too long name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind429 ../src/curl -q --output log/64/curl429.out --include --trace-ascii log/64/trace429 --trace-config all --trace-time http://127.0.0.1:33073/429 -K log/64/cmd > log/64/stdout429 2> log/64/stderr429 429: protocol FAILED! There was no content at all in the file log/64/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/64/ dir after test 429 === Start of file cmd --expand-data {{FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}} === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind429 ../src/curl -q --output log/64/curl429.out --include --trace-ascii log/64/trace429 --trace-config all --trace-time http://127.0.0.1:33073/429 -K log/64/cmd > log/64/stdout429 2> log/64/stderr429 === End of file commands.log === Start of file http_server.log 09:40:46.655791 ====> Client connect 09:40:46.656120 accept_connection 3 returned 4 09:40:46.656301 accept_connection 3 returned 0 09:40:46.656520 Read 93 bytes 09:40:46.656678 Process 93 bytes request 09:40:46.656787 Got request: GET /verifiedserver HTTP/1.1 09:40:46.656877 Are-we-friendly question received 09:40:46.657106 Wrote request (93 bytes) input to log/64/server.input 09:40:46.657309 Identifying ourselves as friends 09:40:46.659149 Response sent (56 bytes) and written to log/64/server.response 09:40:46.659265 special request received, no persistency 09:40:46.659330 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33073... * Connected to 127.0.0.1 (127.0.0.1) port 33073 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33073 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73748 === End of file http_verify.out === Start of file server.cmd Testnum 429 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73748 === End of file server.response === Start of file valgrind429 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind479 ../src/curl -q --output log/34/curl479.out --include --trace-ascii log/34/trace479 --trace-config all --trace-time --netrc --netrc-file log/34/netrc479 -L -x http://127.0.0.1:33117/ http://a.com/ > log/34/stdout479 2> log/34/stderr479 stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind429 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind442 ../src/curl -q --output log/56/curl442.out --include --trace-ascii log/56/trace442 --trace-config all --trace-time http://attack.invalid:43265/a/b/442 -b log/56/cookie442 --resolve attack.invalid:43265:127.0.0.1 -L > log/56/stdout442 2> log/56/stderr442 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind475 ../src/curl -q --output log/26/curl475.out --include --trace-ascii log/26/trace475 --trace-config all --trace-time "ftp://127.0.0.1:39753/475;type=a" -T log/26/test475.txt > log/26/stdout475 2> log/26/stderr475 test 0459...[config file with argument using whitespace missing quotes] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind459 ../src/curl -q --output log/1/curl459.out --include --trace-ascii log/1/trace459 --trace-config all --trace-time http://127.0.0.1:40633/459 --config log/1/config --silent > log/1/stdout459 2> log/1/stderr459 459: stderr FAILED: --- log/1/check-expected 2025-07-18 09:40:48.757604110 +0000 +++ log/1/check-generated 2025-07-18 09:40:48.756604111 +0000 @@ -1,2 +0,0 @@ -Warning: log/1/config:1: warning: 'data' uses unquoted whitespace[CR][LF] -Warning: This may cause side-effects. Consider using double quotes?[CR][LF] == Contents of files in the log/1/ dir after test 459 === Start of file check-expected Warning: log/1/config:1: warning: 'data' uses unquoted whitespace[CR][LF] Warning: This may cause side-effects. Consider using double quotes?[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind459 ../src/curl -q --output log/1/curl459.out --include --trace-ascii log/1/trace459 --trace-config all --trace-time http://127.0.0.1:40633/459 --config log/1/config --silent > log/1/stdout459 2> log/1/stderr459 === End of file commands.log === Start of file config data = arg with space === End of file config === Start of file http_server.log 09:40:47.050834 ====> Client connect 09:40:47.051160 accept_connection 3 returned 4 09:40:47.051322 accept_connection 3 returned 0 09:40:47.051569 Read 93 bytes 09:40:47.051700 Process 93 bytes request 09:40:47.051798 Got request: GET /verifiedserver HTTP/1.1 09:40:47.051886 Are-we-friendly question received 09:40:47.052124 Wrote request (93 bytes) input to log/1/server.input 09:40:47.052306 Identifying ourselves as friends 09:40:47.053103 Response sent (56 bytes) and written to log/1/server.response 09:40:47.053223 special request received, no persistency 09:40:47.053292 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40633... * Connected to 127.0.0.1 (127.0.0.1) port 40633 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40633 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73806 === End of file http_verify.out === Start of file server.cmd Testnum 459 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73806 === End of file server.response === Start of file valgrind459 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind459 test 0440...[HSTS with trailing-dot host name in URL but none in hsts file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind440 ../src/curl -q --include --trace-ascii log/2/trace440 --trace-config all --trace-time -x http://127.0.0.1:39659 http://this.hsts.example./440 --hsts log/2/input440 -w '%{url_effective}\n' > log/2/stdout440 2> log/2/stderr440 440: stdout FAILED: --- log/2/check-expected 2025-07-18 09:40:48.816276881 +0000 +++ log/2/check-generated 2025-07-18 09:40:48.814604081 +0000 @@ -1,8 +0,0 @@ -HTTP/1.1 403 not OK at all[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -Funny-head: yesyes[CR][LF] -[CR][LF] -https://this.hsts.example./440[LF] == Contents of files in the log/2/ dir after test 440 === Start of file check-expected HTTP/1.1 403 not OK at all[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] Funny-head: yesyes[CR][LF] [CR][LF] https://this.hsts.example./440[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind440 ../src/curl -q --include --trace-ascii log/2/trace440 --trace-config all --trace-time -x http://127.0.0.1:39659 http://this.hsts.example./440 --hsts log/2/input440 -w '%{url_effective}\n' > log/2/stdout440 2> log/2/stderr440 === End of file commands.log === Start of file http_server.log 09:40:46.732884 ====> Client connect 09:40:46.733204 accept_connection 3 returned 4 09:40:46.733386 accept_connection 3 returned 0 09:40:46.733720 Read 93 bytes 09:40:46.733848 Process 93 bytes request 09:40:46.733949 Got request: GET /verifiedserver HTTP/1.1 09:40:46.734039 Are-we-friendly question received 09:40:46.734316 Wrote request (93 bytes) input to log/2/server.input 09:40:46.739693 Identifying ourselves as friends 09:40:46.740665 Response sent (56 bytes) and written to log/2/server.response 09:40:46.740822 special request received, no persistency 09:40:46.740921 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39659... * Connected to 127.0.0.1 (127.0.0.1) port 39659 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39659 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73807 === End of file http_verify.out === Start of file input440 this.hsts.example "99991001 04:47:41" === End of file input440 === Start of file server.cmd Testnum 440 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73807 === End of file server.response === Start of file valgrind440 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind440 test 0477...[HTTP GET with maximum filesize with a redirect sending data] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind477 ../src/curl -q --output log/3/curl477.out --include --trace-ascii log/3/trace477 --trace-config all --trace-time http://127.0.0.1:42107/477 --max-filesize 5 -L > log/3/stdout477 2> log/3/stderr477 477: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 477 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind477 ../src/curl -q --output log/3/curl477.out --include --trace-ascii log/3/trace477 --trace-config all --trace-time http://127.0.0.1:42107/477 --max-filesize 5 -L > log/3/stdout477 2> log/3/stderr477 === End of file commands.log === Start of file http_server.log 09:40:47.316757 ====> Client connect 09:40:47.317391 accept_connection 3 returned 4 09:40:47.317985 accept_connection 3 returned 0 09:40:47.319667 Read 93 bytes 09:40:47.320108 Process 93 bytes request 09:40:47.320281 Got request: GET /verifiedserver HTTP/1.1 09:40:47.320381 Are-we-friendly question received 09:40:47.321026 Wrote request (93 bytes) input to log/3/server.input 09:40:47.321241 Identifying ourselves as friends 09:40:47.321928 Response sent (56 bytes) and written to log/3/server.response 09:40:47.322045 special request received, no persistency 09:40:47.322117 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42107... * Connected to 127.0.0.1 (127.0.0.1) port 42107 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42107 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73802 === End of file http_verify.out === Start of file server.cmd Testnum 477 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73802 === End of file server.response === Start of file valgrind477 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind444 ../src/curl -q --output log/58/curl444.out --include --trace-ascii log/58/trace444 --trace-config all --trace-time http://attack.invalid:46727/a/b/444 -c log/58/cookie444 --resolve attack.invalid:46727:127.0.0.1 > log/58/stdout444 2> log/58/stderr444 c-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind477 setenv FUNVALUE = contents458 setenv VALUE2 = curl setenv BLANK = test 0458...[variable expand the file name with --expand-output] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind458 ../src/curl -q --include --trace-ascii log/5/trace458 --trace-config all --trace-time http://127.0.0.1:33413/458 -K log/5/cmd > log/5/stdout458 2> log/5/stderr458 458: protocol FAILED! There was no content at all in the file log/5/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/5/ dir after test 458 === Start of file cmd --variable %FUNVALUE --expand-output log/5/{{FUNVALUE}} === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind458 ../src/curl -q --include --trace-ascii log/5/trace458 --trace-config all --trace-time http://127.0.0.1:33413/458 -K log/5/cmd > log/5/stdout458 2> log/5/stderr458 === End of file commands.log === Start of file http_server.log 09:40:47.076142 ====> Client connect 09:40:47.076552 accept_connection 3 returned 4 09:40:47.076747 accept_connection 3 returned 0 09:40:47.085432 Read 93 bytes 09:40:47.085636 Process 93 bytes request 09:40:47.085719 Got request: GET /verifiedserver HTTP/1.1 09:40:47.085804 Are-we-friendly question received 09:40:47.086038 Wrote request (93 bytes) input to log/5/server.input 09:40:47.086222 Identifying ourselves as friends 09:40:47.089755 Response sent (56 bytes) and written to log/5/server.response 09:40:47.089873 special request received, no persistency 09:40:47.089939 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33413... * Connected to 127.0.0.1 (127.0.0.1) port 33413 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33413 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73798 === End of file http_verify.out === Start of file server.cmd Testnum 458 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73798 === End of file server.response === Start of file valgrind458 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind458 test 0473...[Check if --etag-save saved correct etag to a file on 301] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind473 ../src/curl -q --output log/8/curl473.out --include --trace-ascii log/8/trace473 --trace-config all --trace-time http://127.0.0.1:46129/473 --etag-save log/8/etag473 > log/8/stdout473 2> log/8/stderr473 473: protocol FAILED! There was no content at all in the file log/8/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/8/ dir after test 473 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind473 ../src/curl -q --output log/8/curl473.out --include --trace-ascii log/8/trace473 --trace-config all --trace-time http://127.0.0.1:46129/473 --etag-save log/8/etag473 > log/8/stdout473 2> log/8/stderr473 === End of file commands.log === Start of file http_server.log 09:40:47.180226 ====> Client connect 09:40:47.180642 accept_connection 3 returned 4 09:40:47.180807 accept_connection 3 returned 0 09:40:47.181733 Read 93 bytes 09:40:47.181872 Process 93 bytes request 09:40:47.181950 Got request: GET /verifiedserver HTTP/1.1 09:40:47.182016 Are-we-friendly question received 09:40:47.182221 Wrote request (93 bytes) input to log/8/server.input 09:40:47.182380 Identifying ourselves as friends 09:40:47.183001 Response sent (56 bytes) and written to log/8/server.response 09:40:47.183107 special request received, no persistency 09:40:47.183172 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46129... * Connected to 127.0.0.1 (127.0.0.1) port 46129 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46129 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73800 === End of file http_verify.out === Start of file server.cmd Testnum 473 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73800 === End of file server.response === Start of file valgrind473 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind473 test 0463...[HTTP with -d @fiCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind493 ../src/curl -q --include --trace-ascii log/6/trace493 --trace-config all --trace-time -x http://127.0.0.1:37181 http://this.hsts.example/493 --hsts log/6/input493 -w '%{url_effective}\n' > log/6/stdout493 2> log/6/stderr493 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind495 ../src/curl -q --output log/39/curl495.out --include --trace-ascii log/39/trace495 --trace-config all --trace-time http://foo%40bar:secret@127.0.0.1:42899/495 --netrc-optional > log/39/stdout495 2> log/39/stderr495 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind480 ../src/curl -q --output log/43/curl480.out --include --trace-ascii log/43/trace480 --trace-config all --trace-time --netrc --netrc-file log/43/netrc480 pop3://127.0.0.1:33889/480 > log/43/stdout480 2> log/43/stderr480 le with file containing CR, LF and null byte] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind463 ../src/curl -q --output log/11/curl463.out --include --trace-ascii log/11/trace463 --trace-config all --trace-time -d @log/11/input463 http://127.0.0.1:41387/463 > log/11/stdout463 2> log/11/stderr463 463: protocol FAILED! There was no content at all in the file log/11/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/11/ dir after test 463 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind463 ../src/curl -q --output log/11/curl463.out --include --trace-ascii log/11/trace463 --trace-config all --trace-time -d @log/11/input463 http://127.0.0.1:41387/463 > log/11/stdout463 2> log/11/stderr463 === End of file commands.log === Start of file http_server.log 09:40:47.104890 ====> Client connect 09:40:47.105600 accept_connection 3 returned 4 09:40:47.105794 accept_connection 3 returned 0 09:40:47.105924 Read 93 bytes 09:40:47.106013 Process 93 bytes request 09:40:47.106093 Got request: GET /verifiedserver HTTP/1.1 09:40:47.106167 Are-we-friendly question received 09:40:47.106386 Wrote request (93 bytes) input to log/11/server.input 09:40:47.106690 Identifying ourselves as friends 09:40:47.107613 Response sent (56 bytes) and written to log/11/server.response 09:40:47.107746 special request received, no persistency 09:40:47.107827 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41387... * Connected to 127.0.0.1 (127.0.0.1) port 41387 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41387 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73809 === End of file http_verify.out === Start of file input463 one two three fourfive === End of file input463 === Start of file server.cmd Testnum 463 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73809 === End of file server.response === Start of file valgrind463 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind463 test 0491...[Two globbed HTTP PUTs, the second upload file is missing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind491 ../src/curl -q --output log/12/curl491.out --include --trace-ascii log/12/trace491 --trace-config all --trace-time http://127.0.0.1:45579/491 -T '{log/12/in491,log/12/bad491}' > log/12/stdout491 2> log/12/stderr491 491: protocol FAILED! There was no content at all in the file log/12/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/12/ dir after test 491 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind491 ../src/curl -q --output log/12/curl491.out --include --trace-ascii log/12/trace491 --trace-config all --trace-time http://127.0.0.1:45579/491 -T '{log/12/in491,log/12/bad491}' > log/12/stdout491 2> log/12/stderr491 === End of file commands.log === Start of file http_server.log 09:40:47.543882 ====> Client connect 09:40:47.544311 accept_connection 3 returned 4 09:40:47.544554 accept_connection 3 returned 0 09:40:47.544745 Read 93 bytes 09:40:47.544844 Process 93 bytes request 09:40:47.544934 Got request: GET /verifiedserver HTTP/1.1 09:40:47.545017 Are-we-friendly question received 09:40:47.545254 Wrote request (93 bytes) input to log/12/server.input 09:40:47.546543 Identifying ourselves as friends 09:40:47.547274 Response sent (56 bytes) and written to log/12/server.response 09:40:47.547378 special request received, no persistency 09:40:47.547526 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45579... * Connected to 127.0.0.1 (127.0.0.1) port 45579 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45579 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73799 === End of file http_verify.out === Start of file in491 surprise === End of file in491 === Start of file server.cmd Testnum 491 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73799 === End of file server.response === Start of file valgrind491 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind491 test 0476...[FTP PASV upload ASCII file already using CRLF] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind476 ../src/curl -q --output log/13/curl476.out --include --trace-ascii log/13/trace476 --trace-config all --trace-time "ftp://127.0.0.1:34087/476;type=a" -T log/13/test476.txt > log/13/stdout476 2> log/13/stderr476 476: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 476 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind476 ../src/curl -q --output log/13/curl476.out --include --trace-ascii log/13/trace476 --trace-config all --trace-time "ftp://127.0.0.1:34087/476;type=a" -T log/13/test476.txt > log/13/stdout476 2> log/13/stderr476 === End of file commands.log === Start of file ftp_server.log 09:40:47.014642 ====> Client connect 09:40:47.016373 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:47.022268 < "USER anonymous" 09:40:47.025958 > "331 We are happy you popped in![CR][LF]" 09:40:47.030388 < "PASS ftp@example.com" 09:40:47.030888 > "230 Welcome you silly person[CR][LF]" 09:40:47.034437 < "PWD" 09:40:47.034897 > "257 "/" is current directory[CR][LF]" 09:40:47.041326 < "EPSV" 09:40:47.041600 ====> Passive DATA channel requested by client 09:40:47.041882 DATA sockfilt for passive data channel starting... 09:40:47.087217 DATA sockfilt for passive data channel started (pid 97293) 09:40:47.089433 DATA sockfilt for passive data channel listens on port 37699 09:40:47.089982 > "229 Entering Passive Mode (|||37699|)[LF]" 09:40:47.090307 Client has been notified that DATA conn will be accepted on port 37699 09:40:47.098881 Client connects to port 37699 09:40:47.099218 ====> Client established passive DATA connection on port 37699 09:40:47.100104 < "TYPE I" 09:40:47.103258 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:47.109335 < "SIZE verifiedserver" 09:40:47.109851 > "213 17[CR][LF]" 09:40:47.113443 < "RETR verifiedserver" 09:40:47.117056 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:47.118112 =====> Closing passive DATA connection... 09:40:47.118456 Server disconnects passive DATA connection 09:40:47.120915 Server disconnected passive DATA connection 09:40:47.121293 DATA sockfilt for passive data channel quits (pid 97293) 09:40:47.127201 DATA sockfilt for passive data channel quit (pid 97293) 09:40:47.127613 =====> Closed passive DATA connection 09:40:47.128098 > "226 File transfer complete[CR][LF]" 09:40:47.162919 < "QUIT" 09:40:47.164452 > "221 bye bye baby[CR][LF]" 09:40:47.168471 MAIN sockfilt said DISC 09:40:47.168869 ====> Client disconnected 09:40:47.169406 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:46.267751 ====> Client connect 09:40:46.270432 Received DATA (on stdin) 09:40:46.270690 > 160 bytes data, server => client 09:40:46.270786 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:46.270882 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:46.270957 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:46.272652 < 16 bytes data, client => server 09:40:46.272843 'USER anonymous\r\n' 09:40:46.280024 Received DATA (on stdin) 09:40:46.280185 > 33 bytes data, server => client 09:40:46.280285 '331 We are happy you popped in!\r\n' 09:40:46.281220 < 22 bytes data, client => server 09:40:46.281374 'PASS ftp@example.com\r\n' 09:40:46.284917 Received DATA (on stdin) 09:40:46.285134 > 30 bytes data, server => client 09:40:46.285254 '230 Welcome you silly person\r\n' 09:40:46.286164 < 5 bytes data, client => server 09:40:46.286308 'PWD\r\n' 09:40:46.290566 Received DATA (on stdin) 09:40:46.290730 > 30 bytes data, server => client 09:40:46.290815 '257 "/" is current directory\r\n' 09:40:46.293360 < 6 bytes data, client => server 09:40:46.293607 'EPSV\r\n' 09:40:46.344377 Received DATA (on stdin) 09:40:46.344688 > 38 bytes data, server => client 09:40:46.344825 '229 Entering Passive Mode (|||37699|)\n' 09:40:46.348816 < 8 bytes data, client => server 09:40:46.348975 'TYPE I\r\n' 09:40:46.354190 Received DATA (on stdin) 09:40:46.354340 > 33 bytes data, server => client 09:40:46.354798 '200 I modify TYPE as you wanted\r\n' 09:40:46.360619 < 21 bytes data, client => server 09:40:46.360802 'SIZE verifiedserver\r\n' 09:40:46.364008 Received DATA (on stdin) 09:40:46.364159 > 8 bytes data, server => client 09:40:46.364295 '213 17\r\n' 09:40:46.365784 < 21 bytes data, client => server 09:40:46.365951 'RETR verifiedserver\r\n' 09:40:46.372588 Received DATA (on stdin) 09:40:46.372788 > 29 bytes data, server => client 09:40:46.372935 '150 Binary junk (17 bytes).\r\n' 09:40:46.382191 Received DATA (on stdin) 09:40:46.382360 > 28 bytes data, server => client 09:40:46.382617 '226 File transfer complete\r\n' 09:40:46.415360 < 6 bytes data, client => server 09:40:46.415737 'QUIT\r\n' 09:40:46.417048 Received DATA (on stdin) 09:40:46.417211 > 18 bytes data, server => client 09:40:46.417684 '221 bye bye baby\r\n' 09:40:46.421881 ====> Client disconnect 09:40:46.423407 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:47.331275 Running IPv4 version 09:40:47.336092 Listening on port 37699 09:40:47.336587 Wrote pid 97293 to log/13/server/ftp_sockdata.pid 09:40:47.337831 Received PING (on stdin) 09:40:47.342562 Received PORT (on stdin) 09:40:47.351617 ====> Client connect 09:40:47.371274 Received DATA (on stdin) 09:40:47.371585 > 17 bytes data, server => client 09:40:47.371728 'WE ROOLZ: 79551\r\n' 09:40:47.372747 Received DISC (on stdin) 09:40:47.372936 ====> Client forcibly disconnected 09:40:47.375402 Received QUIT (on stdin) 09:40:47.375656 quits 09:40:47.376336 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 476 === End of file server.cmd === Start of file test476.txt a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === File too long: 349 lines omitted here a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === End of file test476.txt === Start of file valgrind476 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind476 test 0456...[Variable output starting with null byte] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind456 ../src/curl -q --output log/15/curl456.out --include --trace-ascii log/15/trace456 --trace-config all --trace-time http://127.0.0.1:35435/456 --variable what@log/15/junk --expand-data "{{what}}" > log/15/stdout456 2> log/15/stderr456 curl returned 1, when expecting 2 456: exit FAILED == Contents of files in the log/15/ dir after test 456 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind456 ../src/curl -q --output log/15/curl456.out --include --trace-ascii log/15/trace456 --trace-config all --trace-time http://127.0.0.1:35435/456 --variable what@log/15/junk --expand-data "{{what}}" > log/15/stdout456 2> log/15/stderr456 === End of file commands.log === Start of file http_server.log 09:40:47.143090 ====> Client connect 09:40:47.143431 accept_connection 3 returned 4 09:40:47.143760 accept_connection 3 returned 0 09:40:47.143895 Read 93 bytes 09:40:47.143988 Process 93 bytes request 09:40:47.144086 Got request: GET /verifiedserver HTTP/1.1 09:40:47.144175 Are-we-friendly question received 09:40:47.144419 Wrote request (93 bytes) input to log/15/server.input 09:40:47.144707 Identifying ourselves as friends 09:40:47.145590 Response sent (56 bytes) and written to log/15/server.response 09:40:47.145705 special request received, no persistency 09:40:47.145781 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35435... * Connected to 127.0.0.1 (127.0.0.1) port 35435 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35435 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73793 === End of file http_verify.out === Start of file junk hello === End of file junk === Start of file server.cmd Testnum 456 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73793 === End of file server.response === Start of file valgrind456 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind456 test 0471...[Reject HTTP/1.1 to HTTP/2 switch on the same connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind471 ../src/curl -q --include --trace-ascii log/19/trace471 --trace-config all --trace-time "http://127.0.0.1:35697/{471,4710001}" -o "log/19/dumpit#1.dump" > log/19/stdout471 2> log/19/stderr471 471: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 471 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind471 ../src/curl -q --include --trace-ascii log/19/trace471 --trace-config all --trace-time "http://127.0.0.1:35697/{471,4710001}" -o "log/19/dumpit#1.dump" > log/19/stdout471 2> log/19/stderr471 === End of file commands.log === Start of file http_server.log 09:40:47.167261 ====> Client connect 09:40:47.167655 accept_connection 3 returned 4 09:40:47.167827 accept_connection 3 returned 0 09:40:47.167963 Read 93 bytes 09:40:47.168058 Process 93 bytes request 09:40:47.168149 Got request: GET /verifiedserver HTTP/1.1 09:40:47.168250 Are-we-friendly question received 09:40:47.168565 Wrote request (93 bytes) input to log/19/server.input 09:40:47.168783 Identifying ourselves as friends 09:40:47.173741 Response sent (56 bytes) and written to log/19/server.response 09:40:47.173852 special request received, no persistency 09:40:47.173916 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35697... * Connected to 127.0.0.1 (127.0.0.1) port 35697 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35697 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73791 === End of file http_verify.out === Start of file server.cmd Testnum 471 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73791 === End of file server.response === Start of file valgrind471 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind471 test 0470...[warn about Unicode quote character read from config file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind470 ../src/curl -q --output log/20/curl470.out --include --trace-ascii log/20/trace470 --trace-config all --trace-time 127.0.0.1:45475 --no-progress-meter -K "log/20/input470" > log/20/stdout470 2> log/20/stderr470 470: stderr FAILED: --- log/20/check-expected 2025-07-18 09:40:49.182646075 +0000 +++ log/20/check-generated 2025-07-18 09:40:49.181603896 +0000 @@ -1,2 +0,0 @@ -Warning: The argument '%e2%80%9chost:fake%e2%80%9d' starts with a Unicode quote where [CR][LF] -Warning: maybe an ASCII " was intended?[CR][LF] == Contents of files in the log/20/ dir after test 470 === Start of file check-expected Warning: The argument '%e2%80%9chost:fake%e2%80%9d' starts with a Unicode quote where [CR][LF] Warning: maybe an ASCII " was intended?[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind470 ../src/curl -q --output log/20/curl470.out --include --trace-ascii log/20/trace470 --trace-config all --trace-time 127.0.0.1:45475 --no-progress-meter -K "log/20/input470" > log/20/stdout470 2> log/20/stderr470 === End of file commands.log === Start of file http_server.log 09:40:47.083837 ====> Client connect 09:40:47.084145 accept_connection 3 returned 4 09:40:47.084326 accept_connection 3 returned 0 09:40:47.084672 Read 93 bytes 09:40:47.084801 Process 93 bytes request 09:40:47.084885 Got request: GET /verifiedserver HTTP/1.1 09:40:47.084964 Are-we-friendly question received 09:40:47.085191 Wrote request (93 bytes) input to log/20/server.input 09:40:47.085365 Identifying ourselves as friends 09:40:47.086140 Response sent (56 bytes) and written to log/20/server.response 09:40:47.086259 special request received, no persistency 09:40:47.086341 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45475... * Connected to 127.0.0.1 (127.0.0.1) port 45475 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45475 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73786 === End of file http_verify.out === Start of file input470 -H “host:fake” === End of file input470 === Start of file server.cmd Testnum 470 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73786 === End of file server.response === Start of file valgrind470 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind470 test 0453...[Variable output containing null byte] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind453 ../src/curl -q --output log/21/curl453.out --include --trace-ascii log/21/trace453 --trace-config all --trace-time http://127.0.0.1:34827/453 --variable what@log/21/junk --expand-data "{{what}}" > log/21/stdout453 2> log/21/stderr453 curl returned 1, when expecting 2 453: exit FAILED == Contents of files in the log/21/ dir after test 453 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind453 ../src/curl -q --output log/21/curl453.out --include --trace-ascii log/21/trace453 --trace-config all --trace-time http://127.0.0.1:34827/453 --variable what@log/21/junk --expand-data "{{what}}" > log/21/stdout453 2> log/21/stderr453 === End of file commands.log === Start of file http_server.log 09:40:46.810993 ====> Client connect 09:40:46.811370 accept_connection 3 returned 4 09:40:46.811732 accept_connection 3 returned 0 09:40:46.811883 Read 93 bytes 09:40:46.811989 Process 93 bytes request 09:40:46.812088 Got request: GET /verifiedserver HTTP/1.1 09:40:46.812178 Are-we-friendly question received 09:40:46.812431 Wrote request (93 bytes) input to log/21/server.input 09:40:46.812709 Identifying ourselves as friends 09:40:46.813591 Response sent (56 bytes) and written to log/21/server.response 09:40:46.813712 special request received, no persistency 09:40:46.813784 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34827... * Connected to 127.0.0.1 (127.0.0.1) port 34827 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34827 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73789 === End of file http_verify.out === Start of file junk  === End of file junk === Start of file server.cmd Testnum 453 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73789 === End of file server.response === Start of file valgrind453 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind453 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind496 ../src/curl -q --output log/63/curl496.out --include --trace-ascii log/63/trace496 --trace-config all --trace-time 0 -Z -Tz > log/63/stdout496 2> log/63/stderr496 * starts no server test 0485...[Use --etag-compare and -save with more than one URL, URLs specified first] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind485 ../src/curl -q --output log/22/curl485.out --include --trace-ascii log/22/trace485 --trace-config all --trace-time http://example.com/485 http://example.net/fooo --etag-save log/22/etag485 > log/22/stdout485 2> log/22/stderr485 485: stderr FAILED: --- log/22/check-expected 2025-07-18 09:40:49.268192452 +0000 +++ log/22/check-generated 2025-07-18 09:40:49.266603853 +0000 @@ -1,3 +0,0 @@ -curl: The etag options only work on a single URL[CR][LF] -curl: option --etag-save: is badly used here[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/22/ dir after test 485 === Start of file check-expected curl: The etag options only work on a single URL[CR][LF] curl: option --etag-save: is badly used here[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind485 ../src/curl -q --output log/22/curl485.out --include --trace-ascii log/22/trace485 --trace-config all --trace-time http://example.com/485 http://example.net/fooo --etag-save log/22/etag485 > log/22/stdout485 2> log/22/stderr485 === End of file commands.log === Start of file server.cmd Testnum 485 === End of file server.cmd === Start of file valgrind485 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind485 test 0452...[Variable using illegal function in expansion] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind452 ../src/curl -q --output log/23/curl452.out --include --trace-ascii log/23/trace452 --trace-config all --trace-time http://127.0.0.1:42467/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/23/stdout452 2> log/23/stderr452 curl returned 1, when expecting 2 452: exit FAILED == Contents of files in the log/23/ dir after test 452 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind452 ../src/curl -q --output log/23/curl452.out --include --trace-ascii log/23/trace452 --trace-config all --trace-time http://127.0.0.1:42467/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/23/stdout452 2> log/23/stderr452 === End of file commands.log === Start of file http_server.log 09:40:47.087114 ====> Client connect 09:40:47.090695 accept_connection 3 returned 4 09:40:47.090913 accept_connection 3 returned 0 09:40:47.091047 Read 93 bytes 09:40:47.091151 Process 93 bytes request 09:40:47.091246 Got request: GET /verifiedserver HTTP/1.1 09:40:47.091334 Are-we-friendly question received 09:40:47.091690 Wrote request (93 bytes) input to log/23/server.input 09:40:47.091939 Identifying ourselves as friends 09:40:47.092861 Response sent (56 bytes) and written to log/23/server.response 09:40:47.093007 special request received, no persistency 09:40:47.093092 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42467... * Connected to 127.0.0.1 (127.0.0.1) port 42467 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42467 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73788 === End of file http_verify.out === Start of file server.cmd Testnum 452 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73788 === End of file server.response === Start of file valgrind452 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind452 test 0451...[Variable from file that is JSON and URL encoded (with null byte)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind451 ../src/curl -q --output log/24/curl451.out --include --trace-ascii log/24/trace451 --trace-config all --trace-time http://127.0.0.1:39259/451 --variable what@log/24/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/24/stdout451 2> log/24/stderr451 451: protocol FAILED! There was no content at all in the file log/24/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/24/ dir after test 451 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind451 ../src/curl -q --output log/24/curl451.out --include --trace-ascii log/24/trace451 --trace-config all --trace-time http://127.0.0.1:39259/451 --variable what@log/24/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/24/stdout451 2> log/24/stderr451 === End of file commands.log === Start of file http_server.log 09:40:46.838142 ====> Client connect 09:40:46.838618 accept_connection 3 returned 4 09:40:46.838820 accept_connection 3 returned 0 09:40:46.838961 Read 93 bytes 09:40:46.839066 Process 93 bytes request 09:40:46.839158 Got request: GET /verifiedserver HTTP/1.1 09:40:46.839236 Are-we-friendly question received 09:40:46.839550 Wrote request (93 bytes) input to log/24/server.input 09:40:46.839749 Identifying ourselves as friends 09:40:46.842775 Response sent (56 bytes) and written to log/24/server.response 09:40:46.842911 special request received, no persistency 09:40:46.842993 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39259... * Connected to 127.0.0.1 (127.0.0.1) port 39259 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39259 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73787 === End of file http_verify.out === Start of file junk  === End of file junk === Start of file server.cmd Testnum 451 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73787 === End of file server.response === Start of file valgrind451 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind451 test 0490...[Two globbed HTTP PUTs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind490 ../src/curl -q --output log/25/curl490.out --include --trace-ascii log/25/trace490 --trace-config all --trace-time http://127.0.0.1:41727/490 -T '{log/25/in490,log/25/in490}' > log/25/stdout490 2> log/25/stderr490 490: protocol FAILED! There was no content at all in the file log/25/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/25/ dir after test 490 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind490 ../src/curl -q --output log/25/curl490.out --include --trace-ascii log/25/trace490 --trace-config all --trace-time http://127.0.0.1:41727/490 -T '{log/25/in490,log/25/in490}' > log/25/stdout490 2> log/25/stderr490 === End of file commands.log === Start of file http_server.log 09:40:47.565731 ====> Client connect 09:40:47.566065 accept_connection 3 returned 4 09:40:47.566242 accept_connection 3 returned 0 09:40:47.566390 Read 93 bytes 09:40:47.566591 Process 93 bytes request 09:40:47.566693 Got request: GET /verifiedserver HTTP/1.1 09:40:47.566772 Are-we-friendly question received 09:40:47.567027 Wrote request (93 bytes) input to log/25/server.input 09:40:47.567223 Identifying ourselves as friends 09:40:47.568062 Response sent (56 bytes) and written to log/25/server.response 09:40:47.568174 special request received, no persistency 09:40:47.568241 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41727... * Connected to 127.0.0.1 (127.0.0.1) port 41727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73784 === End of file http_verify.out === Start of file in490 surprise === End of file in490 === Start of file server.cmd Testnum 490 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73784 === End of file server.response === Start of file valgrind490 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind490 test 0483...[HTTP cookies with long expire dates] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind483 ../src/curl -q --output log/27/curl483.out --include --trace-ascii log/27/trace483 --trace-config all --trace-time http://127.0.0.1:42323/483 -c log/27/c483 > log/27/stdout483 2> log/27/stderr483 483: protocol FAILED! There was no content at all in the file log/27/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/27/ dir after test 483 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind483 ../src/curl -q --output log/27/curl483.out --include --trace-ascii log/27/trace483 --trace-config all --trace-time http://127.0.0.1:42323/483 -c log/27/c483 > log/27/stdout483 2> log/27/stderr483 === End of file commands.log === Start of file http_server.log 09:40:47.420347 ====> Client connect 09:40:47.420819 accept_connection 3 returned 4 09:40:47.420997 accept_connection 3 returned 0 09:40:47.421659 Read 93 bytes 09:40:47.421838 Process 93 bytes request 09:40:47.421941 Got request: GET /verifiedserver HTTP/1.1 09:40:47.422053 Are-we-friendly question received 09:40:47.422363 Wrote request (93 bytes) input to log/27/server.input 09:40:47.422699 Identifying ourselves as friends 09:40:47.423417 Response sent (56 bytes) and written to log/27/server.response 09:40:47.423624 special request received, no persistency 09:40:47.423702 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42323... * Connected to 127.0.0.1 (127.0.0.1) port 42323 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42323 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73783 === End of file http_verify.out === Start of file server.cmd Testnum 483 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73783 === End of file server.response === Start of file valgrind483 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind483 test 0492...[Two globbed HTTP PUTs to two globbed URLs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind492 ../src/curl -q --output log/28/curl492.out --include --trace-ascii log/28/trace492 --trace-config all --trace-time 'http://127.0.0.1:37545/{one,two}/' -T '{log/28/first492,log/28/second492}' -H "Testno: 492" > log/28/stdout492 2> log/28/stderr492 492: protocol FAILED! There was no content at all in the file log/28/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/28/ dir after test 492 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind492 ../src/curl -q --output log/28/curl492.out --include --trace-ascii log/28/trace492 --trace-config all --trace-time 'http://127.0.0.1:37545/{one,two}/' -T '{log/28/first492,log/28/second492}' -H "Testno: 492" > log/28/stdout492 2> log/28/stderr492 === End of file commands.log === Start of file first492 first 492 contents === End of file first492 === Start of file http_server.log 09:40:47.707942 ====> Client connect 09:40:47.708284 accept_connection 3 returned 4 09:40:47.708647 accept_connection 3 returned 0 09:40:47.708895 Read 93 bytes 09:40:47.708995 Process 93 bytes request 09:40:47.709108 Got request: GET /verifiedserver HTTP/1.1 09:40:47.709207 Are-we-friendly question received 09:40:47.711810 Wrote request (93 bytes) input to log/28/server.input 09:40:47.712054 Identifying ourselves as friends 09:40:47.713192 Response sent (56 bytes) and written to log/28/server.response 09:40:47.713339 special request received, no persistency 09:40:47.713608 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37545... * Connected to 127.0.0.1 (127.0.0.1) port 37545 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37545 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73781 === End of file http_verify.out === Start of file second492 second 492 contents === End of file second492 === Start of file server.cmd Testnum 492 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73781 === End of file server.response === Start of file valgrind492 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind492 test 0450...[Variable from file that is trimmed and URL encoded] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind450 ../src/curl -q --output log/29/curl450.out --include --trace-ascii log/29/trace450 --trace-config all --trace-time http://127.0.0.1:36877/450 --variable what@log/29/junk --expand-data "{{what:trim:url}}" > log/29/stdout450 2> log/29/stderr450 450: protocol FAILED! There was no content at all in the file log/29/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/29/ dir after test 450 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind450 ../src/curl -q --output log/29/curl450.out --include --trace-ascii log/29/trace450 --trace-config all --trace-time http://127.0.0.1:36877/450 --variable what@log/29/junk --expand-data "{{what:trim:url}}" > log/29/stdout450 2> log/29/stderr450 === End of file commands.log === Start of file http_server.log 09:40:47.110871 ====> Client connect 09:40:47.111214 accept_connection 3 returned 4 09:40:47.111395 accept_connection 3 returned 0 09:40:47.111654 Read 93 bytes 09:40:47.111775 Process 93 bytes request 09:40:47.111877 Got request: GET /verifiedserver HTTP/1.1 09:40:47.111972 Are-we-friendly question received 09:40:47.112214 Wrote request (93 bytes) input to log/29/server.input 09:40:47.112409 Identifying ourselves as friends 09:40:47.114615 Response sent (56 bytes) and written to log/29/server.response 09:40:47.114750 special request received, no persistency 09:40:47.114829 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36877... * Connected to 127.0.0.1 (127.0.0.1) port 36877 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36877 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73782 === End of file http_verify.out === Start of file junk space with space === End of file junk === Start of file server.cmd Testnum 450 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73782 === End of file server.response === Start of file valgrind450 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind450 test 0482...[--remove-on-error with --continue-at] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind482 ../src/curl -q --trace-ascii log/31/trace482 --trace-config all --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/31/482" > log/31/stdout482 2> log/31/stderr482 482: stderr FAILED: --- log/31/check-expected 2025-07-18 09:40:49.452735178 +0000 +++ log/31/check-generated 2025-07-18 09:40:49.451603759 +0000 @@ -1,3 +0,0 @@ -curl: --continue-at is mutually exclusive with --remove-on-error[CR][LF] -curl: option -C: is badly used here[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/31/ dir after test 482 === Start of file check-expected curl: --continue-at is mutually exclusive with --remove-on-error[CR][LF] curl: option -C: is badly used here[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind482 ../src/curl -q --trace-ascii log/31/trace482 --trace-config all --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/31/482" > log/31/stdout482 2> log/31/stderr482 === End of file commands.log === Start of file http_server.log 09:40:47.534153 ====> Client connect 09:40:47.534842 accept_connection 3 returned 4 09:40:47.535099 accept_connection 3 returned 0 09:40:47.535999 Read 93 bytes 09:40:47.536149 Process 93 bytes request 09:40:47.536236 Got request: GET /verifiedserver HTTP/1.1 09:40:47.536323 Are-we-friendly question received 09:40:47.536645 Wrote request (93 bytes) input to log/31/server.input 09:40:47.536852 Identifying ourselves as friends 09:40:47.537552 Response sent (56 bytes) and written to log/31/server.response 09:40:47.537678 special request received, no persistency 09:40:47.537762 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45557... * Connected to 127.0.0.1 (127.0.0.1) port 45557 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45557 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73776 === End of file http_verify.out === Start of file server.cmd Testnum 482 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73776 === End of file server.response === Start of file valgrind482 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind482 * starts no server test 0484...[Use --etag-compare and -save with more than one URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind484 ../src/curl -q --output log/33/curl484.out --include --trace-ascii log/33/trace484 --trace-config all --trace-time http://example.com/484 --etag-compare log/33/etag484 --etag-save log/33/etag484 --url http://example.net/fooo > log/33/stdout484 2> log/33/stderr484 484: stderr FAILED: --- log/33/check-expected 2025-07-18 09:40:49.510365209 +0000 +++ log/33/check-generated 2025-07-18 09:40:49.509603730 +0000 @@ -1,3 +0,0 @@ -curl: The etag options only work on a single URL[CR][LF] -curl: option --url: is badly used here[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/33/ dir after test 484 === Start of file check-expected curl: The etag options only work on a single URL[CR][LF] curl: option --url: is badly used here[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind484 ../src/curl -q --output log/33/curl484.out --include --trace-ascii log/33/trace484 --trace-config all --trace-time http://example.com/484 --etag-compare log/33/etag484 --etag-save log/33/etag484 --url http://example.net/fooo > log/33/stdout484 2> log/33/stderr484 === End of file commands.log === Start of file server.cmd Testnum 484 === End of file server.cmd === Start of file valgrind484 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind484 test 0486...[.netrc with redirect and "default" with no password or login] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind486 ../src/curl -q --output log/35/curl486.out --include --trace-ascii log/35/trace486 --trace-config all --trace-time --netrc --netrc-file log/35/netrc486 -L -x http://127.0.0.1:43179/ http://a.com/ > log/35/stdout486 2> log/35/stderr486 486: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 486 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind486 ../src/curl -q --output log/35/curl486.out --include --trace-ascii log/35/trace486 --trace-config all --trace-time --netrc --netrc-file log/35/netrc486 -L -x http://127.0.0.1:43179/ http://a.com/ > log/35/stdout486 2> log/35/stderr486 === End of file commands.log === Start of file http_server.log 09:40:47.396577 ====> Client connect 09:40:47.396940 accept_connection 3 returned 4 09:40:47.397129 accept_connection 3 returned 0 09:40:47.397269 Read 93 bytes 09:40:47.397358 Process 93 bytes request 09:40:47.397512 Got request: GET /verifiedserver HTTP/1.1 09:40:47.397621 Are-we-friendly question received 09:40:47.397872 Wrote request (93 bytes) input to log/35/server.input 09:40:47.398067 Identifying ourselves as friends 09:40:47.398849 Response sent (56 bytes) and written to log/35/server.response 09:40:47.398962 special request received, no persistency 09:40:47.399025 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43179... * Connected to 127.0.0.1 (127.0.0.1) port 43179 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43179 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73771 === End of file http_verify.out === Start of file netrc486 machine a.com login alice password alicespassword default === End of file netrc486 === Start of file server.cmd Testnum 486 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73771 === End of file server.response === Start of file valgrind486 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind486 test 0432...[Use -K with --next and --config from within] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind432 ../src/curl -q --output log/36/curl432.out --include --trace-ascii log/36/trace432 --trace-config all --trace-time -K log/36/config432 > log/36/stdout432 2> log/36/stderr432 432: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 432 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind432 ../src/curl -q --output log/36/curl432.out --include --trace-ascii log/36/trace432 --trace-config all --trace-time -K log/36/config432 > log/36/stdout432 2> log/36/stderr432 === End of file commands.log === Start of file config432 --next url = 127.0.0.1:44255/4320001 header = "a: a" data = "a" --next url = 127.0.0.1:44255/4320002 header = "b: b" data = "b" config = "log/36/config432-c" === End of file config432 === Start of file config432-c --next url = 127.0.0.1:44255/4320003 header = "c: c" data = "c" === End of file config432-c === Start of file http_server.log 09:40:46.734942 ====> Client connect 09:40:46.735279 accept_connection 3 returned 4 09:40:46.735644 accept_connection 3 returned 0 09:40:46.742060 Read 93 bytes 09:40:46.742223 Process 93 bytes request 09:40:46.742318 Got request: GET /verifiedserver HTTP/1.1 09:40:46.742402 Are-we-friendly question received 09:40:46.742867 Wrote request (93 bytes) input to log/36/server.input 09:40:46.743111 Identifying ourselves as friends 09:40:46.745533 Response sent (56 bytes) and written to log/36/server.response 09:40:46.745727 special request received, no persistency 09:40:46.745893 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44255... * Connected to 127.0.0.1 (127.0.0.1) port 44255 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44255 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 77175 === End of file http_verify.out === Start of file server.cmd Testnum 432 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 77175 === End of file server.response === Start of file valgrind432 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind432 test 0488...[Download two URLs provided on stdin] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind488 ../src/curl -q --output log/37/curl488.out --include --trace-ascii log/37/trace488 --trace-config all --trace-time --output-dir log/37 --url @- log/37/stdout488 2> log/37/stderr488 488: protocol FAILED! There was no content at all in the file log/37/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/37/ dir after test 488 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind488 ../src/curl -q --output log/37/curl488.out --include --trace-ascii log/37/trace488 --trace-config all --trace-time --output-dir log/37 --url @- log/37/stdout488 2> log/37/stderr488 === End of file commands.log === Start of file http_server.log 09:40:47.602128 ====> Client connect 09:40:47.602619 accept_connection 3 returned 4 09:40:47.602831 accept_connection 3 returned 0 09:40:47.610582 Read 93 bytes 09:40:47.610764 Process 93 bytes request 09:40:47.610856 Got request: GET /verifiedserver HTTP/1.1 09:40:47.610944 Are-we-friendly question received 09:40:47.611191 Wrote request (93 bytes) input to log/37/server.input 09:40:47.611398 Identifying ourselves as friends 09:40:47.612279 Response sent (56 bytes) and written to log/37/server.response 09:40:47.612392 special request received, no persistency 09:40:47.612620 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37551... * Connected to 127.0.0.1 (127.0.0.1) port 37551 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37551 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73772 === End of file http_verify.out === Start of file server.cmd Testnum 488 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73772 === End of file server.response === Start of file stdin-for-488 http://127.0.0.1:37551/a http://127.0.0.1:37551/b === End of file stdin-for-488 === Start of file valgrind488 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind488 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind494 ../src/curl -q --output log/14/curl494.out --include --trace-ascii log/14/trace494 --trace-config all --trace-time --netrc --netrc-file log/14/netrc494 ftp://127.0.0.1:36271/494 > log/14/stdout494 2> log/14/stderr494 test 0469...[warn about Unicode quote character] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind469 ../src/curl -q --output log/38/curl469.out --include --trace-ascii log/38/trace469 --trace-config all --trace-time -H “host: 127.0.0.1:33511/“ -s > log/38/stdout469 2> log/38/stderr469 469: stderr FAILED: --- log/38/check-expected 2025-07-18 09:40:49.599510704 +0000 +++ log/38/check-generated 2025-07-18 09:40:49.597603685 +0000 @@ -1,2 +0,0 @@ -Warning: The argument '%e2%80%9chost:' starts with a Unicode quote where maybe an [LF] -Warning: ASCII " was intended?[LF] == Contents of files in the log/38/ dir after test 469 === Start of file check-expected Warning: The argument '%e2%80%9chost:' starts with a Unicode quote where maybe an [LF] Warning: ASCII " was intended?[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind469 ../src/curl -q --output log/38/curl469.out --include --trace-ascii log/38/trace469 --trace-config all --trace-time -H “host: 127.0.0.1:33511/“ -s > log/38/stdout469 2> log/38/stderr469 === End of file commands.log === Start of file http_server.log 09:40:47.210975 ====> Client connect 09:40:47.211339 accept_connection 3 returned 4 09:40:47.211646 accept_connection 3 returned 0 09:40:47.211808 Read 93 bytes 09:40:47.211906 Process 93 bytes request 09:40:47.212010 Got request: GET /verifiedserver HTTP/1.1 09:40:47.212098 Are-we-friendly question received 09:40:47.212329 Wrote request (93 bytes) input to log/38/server.input 09:40:47.212610 Identifying ourselves as friends 09:40:47.213316 Response sent (56 bytes) and written to log/38/server.response 09:40:47.213421 special request received, no persistency 09:40:47.213602 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33511... * Connected to 127.0.0.1 (127.0.0.1) port 33511 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33511 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73775 === End of file http_verify.out === Start of file server.cmd Testnum 469 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73775 === End of file server.response === Start of file valgrind469 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind469 test 0489...[Download two URLs provided in a file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind489 ../src/curl -q --output log/40/curl489.out --include --trace-ascii log/40/trace489 --trace-config all --trace-time --output-dir log/40 --url @log/40/urls > log/40/stdout489 2> log/40/stderr489 489: protocol FAILED! There was no content at all in the file log/40/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/40/ dir after test 489 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind489 ../src/curl -q --output log/40/curl489.out --include --trace-ascii log/40/trace489 --trace-config all --trace-time --output-dir log/40 --url @log/40/urls > log/40/stdout489 2> log/40/stderr489 === End of file commands.log === Start of file http_server.log 09:40:47.503012 ====> Client connect 09:40:47.503375 accept_connection 3 returned 4 09:40:47.503753 accept_connection 3 returned 0 09:40:47.503900 Read 93 bytes 09:40:47.503977 Process 93 bytes request 09:40:47.504056 Got request: GET /verifiedserver HTTP/1.1 09:40:47.504131 Are-we-friendly question received 09:40:47.504338 Wrote request (93 bytes) input to log/40/server.input 09:40:47.504599 Identifying ourselves as friends 09:40:47.505294 Response sent (56 bytes) and written to log/40/server.response 09:40:47.505397 special request received, no persistency 09:40:47.505552 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42139... * Connected to 127.0.0.1 (127.0.0.1) port 42139 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42139 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73767 === End of file http_verify.out === Start of file server.cmd Testnum 489 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73767 === End of file server.response === Start of file urls http://127.0.0.1:42139/a http://127.0.0.1:42139/b === End of file urls === Start of file valgrind489 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind489 test 0461...[disable Host: when specified as lower case] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind461 ../src/curl -q --output log/41/curl461.out --include --trace-ascii log/41/trace461 --trace-config all --trace-time http://127.0.0.1:35093/461 -H host: > log/41/stdout461 2> log/41/stderr461 461: protocol FAILED! There was no content at all in the file log/41/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/41/ dir after test 461 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind461 ../src/curl -q --output log/41/curl461.out --include --trace-ascii log/41/trace461 --trace-config all --trace-time http://127.0.0.1:35093/461 -H host: > log/41/stdout461 2> log/41/stderr461 === End of file commands.log === Start of file http_server.log 09:40:47.214282 ====> Client connect 09:40:47.214766 accept_connection 3 returned 4 09:40:47.214945 accept_connection 3 returned 0 09:40:47.215786 Read 93 bytes 09:40:47.215927 Process 93 bytes request 09:40:47.216019 Got request: GET /verifiedserver HTTP/1.1 09:40:47.218277 Are-we-friendly question received 09:40:47.218673 Wrote request (93 bytes) input to log/41/server.input 09:40:47.218866 Identifying ourselves as friends 09:40:47.222820 Response sent (56 bytes) and written to log/41/server.response 09:40:47.222961 special request received, no persistency 09:40:47.223044 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35093... * Connected to 127.0.0.1 (127.0.0.1) port 35093 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35093 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73770 === End of file http_verify.out === Start of file server.cmd Testnum 461 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73770 === End of file server.response === Start of file valgrind461 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind461 test 0478...[.netrc with multiple accounts for same host] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind478 ../src/curl -q --output log/42/curl478.out --include --trace-ascii log/42/trace478 --trace-config all --trace-time --netrc --netrc-file log/42/netrc478 -x http://127.0.0.1:42819/ http://debbie@github.com/ > log/42/stdout478 2> log/42/stderr478 478: protocol FAILED! There was no content at all in the file log/42/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/42/ dir after test 478 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind478 ../src/curl -q --output log/42/curl478.out --include --trace-ascii log/42/trace478 --trace-config all --trace-time --netrc --netrc-file log/42/netrc478 -x http://127.0.0.1:42819/ http://debbie@github.com/ > log/42/stdout478 2> log/42/stderr478 === End of file commands.log === Start of file http_server.log 09:40:47.335820 ====> Client connect 09:40:47.336092 accept_connection 3 returned 4 09:40:47.336229 accept_connection 3 returned 0 09:40:47.336926 Read 93 bytes 09:40:47.337056 Process 93 bytes request 09:40:47.337134 Got request: GET /verifiedserver HTTP/1.1 09:40:47.337206 Are-we-friendly question received 09:40:47.337420 Wrote request (93 bytes) input to log/42/server.input 09:40:47.337706 Identifying ourselves as friends 09:40:47.338256 Response sent (56 bytes) and written to log/42/server.response 09:40:47.338418 special request received, no persistency 09:40:47.338602 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42819... * Connected to 127.0.0.1 (127.0.0.1) port 42819 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42819 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73768 === End of file http_verify.out === Start of file netrc478 machine github.com password weird password firstone login daniel machine github.com machine github.com login debbie machine github.com password weird password "second\r" login debbie === End of file netrc478 === Start of file server.cmd Testnum 478 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73768 === End of file server.response === Start of file valgrind478 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind478 test 0431...[Two -K uses with --next and then one on cmdline] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind431 ../src/curl -q --output log/46/curl431.out --include --trace-ascii log/46/trace431 --trace-config all --trace-time -K log/46/config431-a -K log/46/config431-b --next -d c 127.0.0.1:46523/4310003 -H "c: c" > log/46/stdout431 2> log/46/stderr431 431: protocol FAILED! There was no content at all in the file log/46/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/46/ dir after test 431 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind431 ../src/curl -q --output log/46/curl431.out --include --trace-ascii log/46/trace431 --trace-config all --trace-time -K log/46/config431-a -K log/46/config431-b --next -d c 127.0.0.1:46523/4310003 -H "c: c" > log/46/stdout431 2> log/46/stderr431 === End of file commands.log === Start of file config431-a --next url = 127.0.0.1:46523/4310001 header = "a: a" data = "a" === End of file config431-a === Start of file config431-b --next url = 127.0.0.1:46523/4310002 header = "b: b" data = "b" === End of file config431-b === Start of file http_server.log 09:40:46.754035 ====> Client connect 09:40:46.754681 accept_connection 3 returned 4 09:40:46.755062 accept_connection 3 returned 0 09:40:46.755285 Read 93 bytes 09:40:46.755383 Process 93 bytes request 09:40:46.755588 Got request: GET /verifiedserver HTTP/1.1 09:40:46.755706 Are-we-friendly question received 09:40:46.755965 Wrote request (93 bytes) input to log/46/server.input 09:40:46.756172 Identifying ourselves as friends 09:40:46.766525 Response sent (56 bytes) and written to log/46/server.response 09:40:46.766687 special request received, no persistency 09:40:46.766766 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46523... * Connected to 127.0.0.1 (127.0.0.1) port 46523 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46523 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 75714 === End of file http_verify.out === Start of file server.cmd Testnum 431 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 75714 === End of file server.response === Start of file valgrind431 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind431 test 0468...[set -w in config, then reset -w to blank on cmdline] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind468 ../src/curl -q --trace-ascii log/47/trace468 --trace-config all --trace-time http://127.0.0.1:41103/468 -K log/47/cmd468 -w "" > log/47/stdout468 2> log/47/stderr468 468: stdout FAILED: --- log/47/check-expected 2025-07-18 09:40:49.701584952 +0000 +++ log/47/check-generated 2025-07-18 09:40:49.700603633 +0000 @@ -1 +0,0 @@ --foo-[LF] == Contents of files in the log/47/ dir after test 468 === Start of file check-expected -foo-[LF] === End of file check-expected === Start of file cmd468 -w "output\n" === End of file cmd468 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind468 ../src/curl -q --trace-ascii log/47/trace468 --trace-config all --trace-time http://127.0.0.1:41103/468 -K log/47/cmd468 -w "" > log/47/stdout468 2> log/47/stderr468 === End of file commands.log === Start of file http_server.log 09:40:47.239849 ====> Client connect 09:40:47.240290 accept_connection 3 returned 4 09:40:47.240612 accept_connection 3 returned 0 09:40:47.240797 Read 93 bytes 09:40:47.240901 Process 93 bytes request 09:40:47.240993 Got request: GET /verifiedserver HTTP/1.1 09:40:47.241078 Are-we-friendly question received 09:40:47.241296 Wrote request (93 bytes) input to log/47/server.input 09:40:47.241666 Identifying ourselves as friends 09:40:47.245721 Response sent (56 bytes) and written to log/47/server.response 09:40:47.245845 special request received, no persistency 09:40:47.245918 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41103... * Connected to 127.0.0.1 (127.0.0.1) port 41103 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41103 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73762 === End of file http_verify.out === Start of file server.cmd Testnum 468 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73762 === End of file server.response === Start of file valgrind468 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind468 setenv FUNVALUE = contents setenv VALUE2 = curl setenv BLANK = test 0449...[Environment variables in config file w/o [expand]] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind449 ../src/curl -q --output log/48/curl449.out --include --trace-ascii log/48/trace449 --trace-config all --trace-time http://127.0.0.1:46339/449 -K log/48/cmd > log/48/stdout449 2> log/48/stderr449 449: protocol FAILED! There was no content at all in the file log/48/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/48/ dir after test 449 === Start of file cmd -d 1{{FUNVALUE}}2{{VALUE2}}3{{CURL_NOT_SET}}4{{BLANK}}5\{{verbatim}}6{{not.good}}7{{}} === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind449 ../src/curl -q --output log/48/curl449.out --include --trace-ascii log/48/trace449 --trace-config all --trace-time http://127.0.0.1:46339/449 -K log/48/cmd > log/48/stdout449 2> log/48/stderr449 === End of file commands.log === Start of file http_server.log 09:40:46.889808 ====> Client connect 09:40:46.890112 accept_connection 3 returned 4 09:40:46.890290 accept_connection 3 returned 0 09:40:46.890994 Read 93 bytes 09:40:46.891146 Process 93 bytes request 09:40:46.891254 Got request: GET /verifiedserver HTTP/1.1 09:40:46.891385 Are-we-friendly question received 09:40:46.891770 Wrote request (93 bytes) input to log/48/server.input 09:40:46.892002 Identifying ourselves as friends 09:40:46.892711 Response sent (56 bytes) and written to log/48/server.response 09:40:46.892833 special request received, no persistency 09:40:46.892914 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46339... * Connected to 127.0.0.1 (127.0.0.1) port 46339 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46339 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73764 === End of file http_verify.out === Start of file server.cmd Testnum 449 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73764 === End of file server.response === Start of file valgrind449 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind449 test 0430...[Three -K uses with --next and --data in each] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind430 ../src/curl -q --output log/49/curl430.out --include --trace-ascii log/49/trace430 --trace-config all --trace-time -K log/49/config430-a -K log/49/config430-b -K log/49/config430-c > log/49/stdout430 2> log/49/stderr430 430: protocol FAILED! There was no content at all in the file log/49/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/49/ dir after test 430 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind430 ../src/curl -q --output log/49/curl430.out --include --trace-ascii log/49/trace430 --trace-config all --trace-time -K log/49/config430-a -K log/49/config430-b -K log/49/config430-c > log/49/stdout430 2> log/49/stderr430 === End of file commands.log === Start of file config430-a --next url = 127.0.0.1:42667/4300001 header = "a: a" data = "a" === End of file config430-a === Start of file config430-b --next url = 127.0.0.1:42667/4300002 header = "b: b" data = "b" === End of file config430-b === Start of file config430-c --next url = 127.0.0.1:42667/4300003 header = "c: c" data = "c" === End of file config430-c === Start of file http_server.log 09:40:46.629894 ====> Client connect 09:40:46.630212 accept_connection 3 returned 4 09:40:46.630389 accept_connection 3 returned 0 09:40:46.630727 Read 93 bytes 09:40:46.630838 Process 93 bytes request 09:40:46.630927 Got request: GET /verifiedserver HTTP/1.1 09:40:46.631009 Are-we-friendly question received 09:40:46.631245 Wrote request (93 bytes) input to log/49/server.input 09:40:46.631571 Identifying ourselves as friends 09:40:46.635994 Response sent (56 bytes) and written to log/49/server.response 09:40:46.636131 special request received, no persistency 09:40:46.636221 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42667... * Connected to 127.0.0.1 (127.0.0.1) port 42667 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42667 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73760 === End of file http_verify.out === Start of file server.cmd Testnum 430 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73760 === End of file server.response === Start of file valgrind430 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind430 test 0441...[HSTS with no t-dot host name in URL but t-dot in file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind441 ../src/curl -q --include --trace-ascii log/51/trace441 --trace-config all --trace-time -x http://127.0.0.1:34903 http://this.hsts.example/441 --hsts log/51/input441 -w '%{url_effective}\n' > log/51/stdout441 2> log/51/stderr441 441: stdout FAILED: --- log/51/check-expected 2025-07-18 09:40:49.798414123 +0000 +++ log/51/check-generated 2025-07-18 09:40:49.797603584 +0000 @@ -1,8 +0,0 @@ -HTTP/1.1 403 not OK at all[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -Funny-head: yesyes[CR][LF] -[CR][LF] -https://this.hsts.example/441[LF] == Contents of files in the log/51/ dir after test 441 === Start of file check-expected HTTP/1.1 403 not OK at all[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] Funny-head: yesyes[CR][LF] [CR][LF] https://this.hsts.example/441[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind441 ../src/curl -q --include --trace-ascii log/51/trace441 --trace-config all --trace-time -x http://127.0.0.1:34903 http://this.hsts.example/441 --hsts log/51/input441 -w '%{url_effective}\n' > log/51/stdout441 2> log/51/stderr441 === End of file commands.log === Start of file http_server.log 09:40:46.981151 ====> Client connect 09:40:46.981577 accept_connection 3 returned 4 09:40:46.981768 accept_connection 3 returned 0 09:40:46.981901 Read 93 bytes 09:40:46.981998 Process 93 bytes request 09:40:46.982097 Got request: GET /verifiedserver HTTP/1.1 09:40:46.982178 Are-we-friendly question received 09:40:46.982394 Wrote request (93 bytes) input to log/51/server.input 09:40:46.982664 Identifying ourselves as friends 09:40:46.984405 Response sent (56 bytes) and written to log/51/server.response 09:40:46.987659 special request received, no persistency 09:40:46.987748 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34903... * Connected to 127.0.0.1 (127.0.0.1) port 34903 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34903 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73763 === End of file http_verify.out === Start of file input441 this.hsts.example. "99991001 04:47:41" === End of file input441 === Start of file server.cmd Testnum 441 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73763 === End of file server.response === Start of file valgrind441 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind441 test 0481...[--no-clobber with --continue-at] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind481 ../src/curl -q --trace-ascii log/52/trace481 --trace-config all --trace-time http://127.0.0.1:40089/481 --no-clobber -C 1 -o "log/52/481" > log/52/stdout481 2> log/52/stderr481 481: stderr FAILED: --- log/52/check-expected 2025-07-18 09:40:49.864232670 +0000 +++ log/52/check-generated 2025-07-18 09:40:49.862603551 +0000 @@ -1,3 +0,0 @@ -curl: --continue-at is mutually exclusive with --no-clobber[CR][LF] -curl: option -C: is badly used here[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/52/ dir after test 481 === Start of file 481 initial content === End of file 481 === Start of file check-expected curl: --continue-at is mutually exclusive with --no-clobber[CR][LF] curl: option -C: is badly used here[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind481 ../src/curl -q --trace-ascii log/52/trace481 --trace-config all --trace-time http://127.0.0.1:40089/481 --no-clobber -C 1 -o "log/52/481" > log/52/stdout481 2> log/52/stderr481 === End of file commands.log === Start of file http_server.log 09:40:47.501954 ====> Client connect 09:40:47.502335 accept_connection 3 returned 4 09:40:47.502689 accept_connection 3 returned 0 09:40:47.502854 Read 93 bytes 09:40:47.502952 Process 93 bytes request 09:40:47.503043 Got request: GET /verifiedserver HTTP/1.1 09:40:47.503133 Are-we-friendly question received 09:40:47.503357 Wrote request (93 bytes) input to log/52/server.input 09:40:47.503625 Identifying ourselves as friends 09:40:47.504376 Response sent (56 bytes) and written to log/52/server.response 09:40:47.504554 special request received, no persistency 09:40:47.504642 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40089... * Connected to 127.0.0.1 (127.0.0.1) port 40089 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40089 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73758 === End of file http_verify.out === Start of file server.cmd Testnum 481 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73758 === End of file server.response === Start of file valgrind481 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind481 setenv FUNVALUE = contents setenv VALUE2 = curl setenv BLANK = test 0448...[Environment variables within config file, unbalanced braces] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind448 ../src/curl -q --output log/55/curl448.out --include --trace-ascii log/55/trace448 --trace-config all --trace-time http://127.0.0.1:33071/448 -K log/55/cmd > log/55/stdout448 2> log/55/stderr448 448: protocol FAILED! There was no content at all in the file log/55/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/55/ dir after test 448 === Start of file cmd --variable %FUNVALUE --variable %VALUE2 --expand-data 1{{FUNVALUE}}2{{VALUE2}}3{{curl_NOT_SET}}4{{AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA}}5{{broken === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind448 ../src/curl -q --output log/55/curl448.out --include --trace-ascii log/55/trace448 --trace-config all --trace-time http://127.0.0.1:33071/448 -K log/55/cmd > log/55/stdout448 2> log/55/stderr448 === End of file commands.log === Start of file http_server.log 09:40:46.842837 ====> Client connect 09:40:46.843133 accept_connection 3 returned 4 09:40:46.843296 accept_connection 3 returned 0 09:40:46.844112 Read 93 bytes 09:40:46.844243 Process 93 bytes request 09:40:46.844329 Got request: GET /verifiedserver HTTP/1.1 09:40:46.844408 Are-we-friendly question received 09:40:46.844816 Wrote request (93 bytes) input to log/55/server.input 09:40:46.845012 Identifying ourselves as friends 09:40:46.850695 Response sent (56 bytes) and written to log/55/server.response 09:40:46.850808 special request received, no persistency 09:40:46.850881 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33071... * Connected to 127.0.0.1 (127.0.0.1) port 33071 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33071 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73757 === End of file http_verify.out === Start of file server.cmd Testnum 448 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73757 === End of file server.response === Start of file valgrind448 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind448 test 0443...[Cookie header in request no longer than 8K] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind443 ../src/curl -q --output log/59/curl443.out --include --trace-ascii log/59/trace443 --trace-config all --trace-time http://attack.invalid:43695/a/b/443 -b log/59/cookie443 --resolve attack.invalid:43695:127.0.0.1 -L > log/59/stdout443 2> log/59/stderr443 443: protocol FAILED! There was no content at all in the file log/59/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/59/ dir after test 443 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind443 ../src/curl -q --output log/59/curl443.out --include --trace-ascii log/59/trace443 --trace-config all --trace-time http://attack.invalid:43695/a/b/443 -b log/59/cookie443 --resolve attack.invalid:43695:127.0.0.1 -L > log/59/stdout443 2> log/59/stderr443 === End of file commands.log === Start of file cookie443 attack.invalid TRUE / FALSE 0 huge-1 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-1 attack.invalid TRUE / FALSE 0 huge-2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-2 attack.invalid TRUE / FALSE 0 huge-3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-3 attack.invalid TRUE / FALSE 0 huge-4 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-4 attack.invalid TRUE / FALSE 0 huge-5 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-5 attack.invalid TRUE / FALSE 0 huge-6 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-6 attack.invalid TRUE / FALSE 0 huge-7 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-7 attack.invalid TRUE / FALSE 0 huge-8 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-8 attack.invalid TRUE / FALSE 0 huge-9 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-9 attack.invalid TRUE / FALSE 0 huge-10 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-10 attack.invalid TRUE / FALSE 0 huge-11 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-11 attack.invalid TRUE / FALSE 0 huge-12 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-12 attack.invalid TRUE / FALSE 0 huge-13 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-13 attack.invalid TRUE / FALSE 0 huge-14 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-14 attack.invalid TRUE / FALSE 0 huge-15 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-15 attack.invalid TRUE / FALSE 0 huge-16 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-16 attack.invalid TRUE / FALSE 0 huge-17 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-17 attack.invalid TRUE / FALSE 0 huge-18 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-18 attack.invalid TRUE / FALSE 0 huge-19 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-19 attack.invalid TRUE / FALSE 0 huge-20 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20 === End of file cookie443 === Start of file http_server.log 09:40:47.091716 ====> Client connect 09:40:47.091983 accept_connection 3 returned 4 09:40:47.092123 accept_connection 3 returned 0 09:40:47.098570 Read 93 bytes 09:40:47.098725 Process 93 bytes request 09:40:47.098801 Got request: GET /verifiedserver HTTP/1.1 09:40:47.098863 Are-we-friendly question received 09:40:47.099074 Wrote request (93 bytes) input to log/59/server.input 09:40:47.099240 Identifying ourselves as friends 09:40:47.100201 Response sent (56 bytes) and written to log/59/server.response 09:40:47.100309 special request received, no persistency 09:40:47.100369 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43695... * Connected to 127.0.0.1 (127.0.0.1) port 43695 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43695 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73752 === End of file http_verify.out === Start of file server.cmd Testnum 443 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73752 === End of file server.response === Start of file valgrind443 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind443 test 0487...[Variable using 64dec with bad base64] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind487 ../src/curl -q --output log/60/curl487.out --include --trace-ascii log/60/trace487 --trace-config all --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:38843/{{what:64dec}}/487" -g > log/60/stdout487 2> log/60/stderr487 487: protocol FAILED! There was no content at all in the file log/60/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/60/ dir after test 487 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind487 ../src/curl -q --output log/60/curl487.out --include --trace-ascii log/60/trace487 --trace-config all --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:38843/{{what:64dec}}/487" -g > log/60/stdout487 2> log/60/stderr487 === End of file commands.log === Start of file http_server.log 09:40:47.435908 ====> Client connect 09:40:47.436191 accept_connection 3 returned 4 09:40:47.436340 accept_connection 3 returned 0 09:40:47.436590 Read 93 bytes 09:40:47.436764 Process 93 bytes request 09:40:47.436863 Got request: GET /verifiedserver HTTP/1.1 09:40:47.436940 Are-we-friendly question received 09:40:47.437160 Wrote request (93 bytes) input to log/60/server.input 09:40:47.437340 Identifying ourselves as friends 09:40:47.438217 Response sent (56 bytes) and written to log/60/server.response 09:40:47.438327 special request received, no persistency 09:40:47.438394 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38843... * Connected to 127.0.0.1 (127.0.0.1) port 38843 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38843 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73750 === End of file http_verify.out === Start of file server.cmd Testnum 487 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73750 === End of file server.response === Start of file valgrind487 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind487 test 0493...[HSTS and %{url_effective} after upgrade] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind493 ../src/curl -q --include --trace-ascii log/6/trace493 --trace-config all --trace-time -x http://127.0.0.1:37181 http://this.hsts.example/493 --hsts log/6/input493 -w '%{url_effective}\n' > log/6/stdout493 2> log/6/stderr493 493: stdout FAILED: --- log/6/check-expected 2025-07-18 09:40:49.961645521 +0000 +++ log/6/check-generated 2025-07-18 09:40:49.960603501 +0000 @@ -1,8 +0,0 @@ -HTTP/1.1 403 not OK at all[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -Funny-head: yesyes[CR][LF] -[CR][LF] -https://this.hsts.example/493[LF] == Contents of files in the log/6/ dir after test 493 === Start of file check-expected HTTP/1.1 403 not OK at all[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] Funny-head: yesyes[CR][LF] [CR][LF] https://this.hsts.example/493[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind493 ../src/curl -q --include --trace-ascii log/6/trace493 --trace-config all --trace-time -x http://127.0.0.1:37181 http://this.hsts.example/493 --hsts log/6/input493 -w '%{url_effective}\n' > log/6/stdout493 2> log/6/stderr493 === End of file commands.log === Start of file http_server.log 09:40:47.937630 ====> Client connect 09:40:47.937985 accept_connection 3 returned 4 09:40:47.938160 accept_connection 3 returned 0 09:40:47.938306 Read 93 bytes 09:40:47.938404 Process 93 bytes request 09:40:47.938605 Got request: GET /verifiedserver HTTP/1.1 09:40:47.938706 Are-we-friendly question received 09:40:47.938935 Wrote request (93 bytes) input to log/6/server.input 09:40:47.939121 Identifying ourselves as friends 09:40:47.941040 Response sent (56 bytes) and written to log/6/server.response 09:40:47.941162 special request received, no persistency 09:40:47.941228 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37181... * Connected to 127.0.0.1 (127.0.0.1) port 37181 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37181 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73803 === End of file http_verify.out === Start of file input493 .hsts.example "99991001 04:47:41" === End of file input493 === Start of file server.cmd Testnum 493 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73803 === End of file server.response === Start of file valgrind493 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind493 test 0494...[skip 'macdef' when parsing netrc] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind494 ../src/curl -q --output log/14/curl494.out --include --trace-ascii log/14/trace494 --trace-config all --trace-time --netrc --netrc-file log/14/netrc494 ftp://127.0.0.1:36271/494 > log/14/stdout494 2> log/14/stderr494 494: protocol FAILED! There was no content at all in the file log/14/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/14/ dir after test 494 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind494 ../src/curl -q --output log/14/curl494.out --include --trace-ascii log/14/trace494 --trace-config all --trace-time --netrc --netrc-file log/14/netrc494 ftp://127.0.0.1:36271/494 > log/14/stdout494 2> log/14/stderr494 === End of file commands.log === Start of file ftp_server.log 09:40:47.886317 ====> Client connect 09:40:47.887732 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:47.891603 < "USER anonymous" 09:40:47.893815 > "331 We are happy you popped in![CR][LF]" 09:40:47.896903 < "PASS ftp@example.com" 09:40:47.897355 > "230 Welcome you silly person[CR][LF]" 09:40:47.899674 < "PWD" 09:40:47.900218 > "257 "/" is current directory[CR][LF]" 09:40:47.902678 < "EPSV" 09:40:47.903085 ====> Passive DATA channel requested by client 09:40:47.903302 DATA sockfilt for passive data channel starting... 09:40:47.918520 DATA sockfilt for passive data channel started (pid 99105) 09:40:47.919502 DATA sockfilt for passive data channel listens on port 42557 09:40:47.920024 > "229 Entering Passive Mode (|||42557|)[LF]" 09:40:47.920246 Client has been notified that DATA conn will be accepted on port 42557 09:40:47.922211 Client connects to port 42557 09:40:47.922855 ====> Client established passive DATA connection on port 42557 09:40:47.923843 < "TYPE I" 09:40:47.924394 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:47.926424 < "SIZE verifiedserver" 09:40:47.927920 > "213 17[CR][LF]" 09:40:47.930224 < "RETR verifiedserver" 09:40:47.931051 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:47.931824 =====> Closing passive DATA connection... 09:40:47.932062 Server disconnects passive DATA connection 09:40:47.935972 Server disconnected passive DATA connection 09:40:47.936641 DATA sockfilt for passive data channel quits (pid 99105) 09:40:47.940340 DATA sockfilt for passive data channel quit (pid 99105) 09:40:47.940627 =====> Closed passive DATA connection 09:40:47.941038 > "226 File transfer complete[CR][LF]" 09:40:47.976587 < "QUIT" 09:40:47.977111 > "221 bye bye baby[CR][LF]" 09:40:47.982154 MAIN sockfilt said DISC 09:40:47.983149 ====> Client disconnected 09:40:47.983718 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:48.130040 ====> Client connect 09:40:48.141532 Received DATA (on stdin) 09:40:48.141723 > 160 bytes data, server => client 09:40:48.141828 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:48.141930 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:48.142010 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:48.145551 < 16 bytes data, client => server 09:40:48.145998 'USER anonymous\r\n' 09:40:48.146882 Received DATA (on stdin) 09:40:48.147041 > 33 bytes data, server => client 09:40:48.148046 '331 We are happy you popped in!\r\n' 09:40:48.149622 < 22 bytes data, client => server 09:40:48.149798 'PASS ftp@example.com\r\n' 09:40:48.151434 Received DATA (on stdin) 09:40:48.151658 > 30 bytes data, server => client 09:40:48.151791 '230 Welcome you silly person\r\n' 09:40:48.152523 < 5 bytes data, client => server 09:40:48.152683 'PWD\r\n' 09:40:48.154426 Received DATA (on stdin) 09:40:48.154679 > 30 bytes data, server => client 09:40:48.154785 '257 "/" is current directory\r\n' 09:40:48.155627 < 6 bytes data, client => server 09:40:48.155765 'EPSV\r\n' 09:40:48.173711 Received DATA (on stdin) 09:40:48.173884 > 38 bytes data, server => client 09:40:48.173968 '229 Entering Passive Mode (|||42557|)\n' 09:40:48.175578 < 8 bytes data, client => server 09:40:48.175696 'TYPE I\r\n' 09:40:48.178386 Received DATA (on stdin) 09:40:48.178607 > 33 bytes data, server => client 09:40:48.178713 '200 I modify TYPE as you wanted\r\n' 09:40:48.179340 < 21 bytes data, client => server 09:40:48.179546 'SIZE verifiedserver\r\n' 09:40:48.180562 Received DATA (on stdin) 09:40:48.180711 > 8 bytes data, server => client 09:40:48.180883 '213 17\r\n' 09:40:48.182319 < 21 bytes data, client => server 09:40:48.182553 'RETR verifiedserver\r\n' 09:40:48.184321 Received DATA (on stdin) 09:40:48.184526 > 29 bytes data, server => client 09:40:48.185978 '150 Binary junk (17 bytes).\r\n' 09:40:48.195259 Received DATA (on stdin) 09:40:48.195620 > 28 bytes data, server => client 09:40:48.195804 '226 File transfer complete\r\n' 09:40:48.228179 < 6 bytes data, client => server 09:40:48.228343 'QUIT\r\n' 09:40:48.231552 Received DATA (on stdin) 09:40:48.231768 > 18 bytes data, server => client 09:40:48.231865 '221 bye bye baby\r\n' 09:40:48.235556 ====> Client disconnect 09:40:48.236224 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:47.170889 Running IPv4 version 09:40:47.171374 Listening on port 42557 09:40:47.171814 Wrote pid 99105 to log/14/server/ftp_sockdata.pid 09:40:47.171973 Received PING (on stdin) 09:40:47.172729 Received PORT (on stdin) 09:40:47.175196 ====> Client connect 09:40:47.186419 Received DATA (on stdin) 09:40:47.186833 > 17 bytes data, server => client 09:40:47.186973 'WE ROOLZ: 79507\r\n' 09:40:47.187335 Received DISC (on stdin) 09:40:47.189006 ====> Client forcibly disconnected 09:40:47.190782 Received QUIT (on stdin) 09:40:47.191147 quits 09:40:47.192195 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc494 macdef testmacro bin cd default cd login put login.bin cd .. cd password put password.bin quit machine 127.0.0.1 login user1 password passwd1 === End of file netrc494 === Start of file server.cmd Testnum 494 === End of file server.cmd === Start of file valgrind494 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind494 test 0475...[FTP PASV upload ASCII file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind475 ../src/curl -q --output log/26/curl475.out --include --trace-ascii log/26/trace475 --trace-config all --trace-time "ftp://127.0.0.1:39753/475;type=a" -T log/26/test475.txt > log/26/stdout475 2> log/26/stderr475 475: protocol FAILED! There was no content at all in the file log/26/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/26/ dir after test 475 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind475 ../src/curl -q --output log/26/curl475.out --include --trace-ascii log/26/trace475 --trace-config all --trace-time "ftp://127.0.0.1:39753/475;type=a" -T log/26/test475.txt > log/26/stdout475 2> log/26/stderr475 === End of file commands.log === Start of file ftp_server.log 09:40:46.954464 ====> Client connect 09:40:46.958510 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:46.962428 < "USER anonymous" 09:40:46.962916 > "331 We are happy you popped in![CR][LF]" 09:40:46.965003 < "PASS ftp@example.com" 09:40:46.965732 > "230 Welcome you silly person[CR][LF]" 09:40:46.967644 < "PWD" 09:40:46.968630 > "257 "/" is current directory[CR][LF]" 09:40:46.970652 < "EPSV" 09:40:46.971067 ====> Passive DATA channel requested by client 09:40:46.971279 DATA sockfilt for passive data channel starting... 09:40:47.009502 DATA sockfilt for passive data channel started (pid 97146) 09:40:47.010545 DATA sockfilt for passive data channel listens on port 40447 09:40:47.011135 > "229 Entering Passive Mode (|||40447|)[LF]" 09:40:47.011404 Client has been notified that DATA conn will be accepted on port 40447 09:40:47.013476 Client connects to port 40447 09:40:47.013844 ====> Client established passive DATA connection on port 40447 09:40:47.014627 < "TYPE I" 09:40:47.015100 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:47.019668 < "SIZE verifiedserver" 09:40:47.020939 > "213 17[CR][LF]" 09:40:47.023288 < "RETR verifiedserver" 09:40:47.024865 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:47.026481 =====> Closing passive DATA connection... 09:40:47.026693 Server disconnects passive DATA connection 09:40:47.028090 Fancy that; client wants to DISC, too 09:40:47.029280 Server disconnected passive DATA connection 09:40:47.029571 DATA sockfilt for passive data channel quits (pid 97146) 09:40:47.031736 DATA sockfilt for passive data channel quit (pid 97146) 09:40:47.032061 =====> Closed passive DATA connection 09:40:47.032703 > "226 File transfer complete[CR][LF]" 09:40:47.068047 < "QUIT" 09:40:47.069237 > "221 bye bye baby[CR][LF]" 09:40:47.073240 MAIN sockfilt said DISC 09:40:47.073553 ====> Client disconnected 09:40:47.074207 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:47.207614 ====> Client connect 09:40:47.210821 Received DATA (on stdin) 09:40:47.211052 > 160 bytes data, server => client 09:40:47.211303 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:47.211434 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:47.211705 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:47.213536 < 16 bytes data, client => server 09:40:47.213680 'USER anonymous\r\n' 09:40:47.216947 Received DATA (on stdin) 09:40:47.217081 > 33 bytes data, server => client 09:40:47.217170 '331 We are happy you popped in!\r\n' 09:40:47.217806 < 22 bytes data, client => server 09:40:47.217948 'PASS ftp@example.com\r\n' 09:40:47.219071 Received DATA (on stdin) 09:40:47.219214 > 30 bytes data, server => client 09:40:47.219839 '230 Welcome you silly person\r\n' 09:40:47.220623 < 5 bytes data, client => server 09:40:47.220768 'PWD\r\n' 09:40:47.221927 Received DATA (on stdin) 09:40:47.222126 > 30 bytes data, server => client 09:40:47.222816 '257 "/" is current directory\r\n' 09:40:47.223616 < 6 bytes data, client => server 09:40:47.223776 'EPSV\r\n' 09:40:47.264847 Received DATA (on stdin) 09:40:47.265020 > 38 bytes data, server => client 09:40:47.265100 '229 Entering Passive Mode (|||40447|)\n' 09:40:47.266878 < 8 bytes data, client => server 09:40:47.267001 'TYPE I\r\n' 09:40:47.269096 Received DATA (on stdin) 09:40:47.269228 > 33 bytes data, server => client 09:40:47.269321 '200 I modify TYPE as you wanted\r\n' 09:40:47.272614 < 21 bytes data, client => server 09:40:47.272771 'SIZE verifiedserver\r\n' 09:40:47.273869 Received DATA (on stdin) 09:40:47.274015 > 8 bytes data, server => client 09:40:47.274181 '213 17\r\n' 09:40:47.275276 < 21 bytes data, client => server 09:40:47.275419 'RETR verifiedserver\r\n' 09:40:47.277385 Received DATA (on stdin) 09:40:47.277602 > 29 bytes data, server => client 09:40:47.277918 '150 Binary junk (17 bytes).\r\n' 09:40:47.286059 Received DATA (on stdin) 09:40:47.286200 > 28 bytes data, server => client 09:40:47.286789 '226 File transfer complete\r\n' 09:40:47.320781 < 6 bytes data, client => server 09:40:47.320998 'QUIT\r\n' 09:40:47.322136 Received DATA (on stdin) 09:40:47.322282 > 18 bytes data, server => client 09:40:47.322529 '221 bye bye baby\r\n' 09:40:47.326427 ====> Client disconnect 09:40:47.328196 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:47.261552 Running IPv4 version 09:40:47.262074 Listening on port 40447 09:40:47.262679 Wrote pid 97146 to log/26/server/ftp_sockdata.pid 09:40:47.262906 Received PING (on stdin) 09:40:47.263714 Received PORT (on stdin) 09:40:47.266567 ====> Client connect 09:40:47.279014 Received DATA (on stdin) 09:40:47.279176 > 17 bytes data, server => client 09:40:47.279333 'WE ROOLZ: 79344\r\n' 09:40:47.280980 ====> Client disconnect 09:40:47.281392 Received DISC (on stdin) 09:40:47.281616 Crikey! Client also wants to disconnect 09:40:47.282053 Received ACKD (on stdin) 09:40:47.283652 Received QUIT (on stdin) 09:40:47.283795 quits 09:40:47.284182 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 475 === End of file server.cmd === Start of file test475.txt a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === File too long: 349 lines omitted here a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this === End of file test475.txt === Start of file valgrind475 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind475 test 0479...[.netrc with redirect and default without password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind479 ../src/curl -q --output log/34/curl479.out --include --trace-ascii log/34/trace479 --trace-config all --trace-time --netrc --netrc-file log/34/netrc479 -L -x http://127.0.0.1:33117/ http://a.com/ > log/34/stdout479 2> log/34/stderr479 479: protocol FAILED! There was no content at all in the file log/34/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/34/ dir after test 479 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind479 ../src/curl -q --output log/34/curl479.out --include --trace-ascii log/34/trace479 --trace-config all --trace-time --netrc --netrc-file log/34/netrc479 -L -x http://127.0.0.1:33117/ http://a.com/ > log/34/stdout479 2> log/34/stderr479 === End of file commands.log === Start of file http_server.log 09:40:47.561604 ====> Client connect 09:40:47.561954 accept_connection 3 returned 4 09:40:47.562143 accept_connection 3 returned 0 09:40:47.562284 Read 93 bytes 09:40:47.562389 Process 93 bytes request 09:40:47.562569 Got request: GET /verifiedserver HTTP/1.1 09:40:47.562670 Are-we-friendly question received 09:40:47.562901 Wrote request (93 bytes) input to log/34/server.input 09:40:47.563095 Identifying ourselves as friends 09:40:47.565913 Response sent (56 bytes) and written to log/34/server.response 09:40:47.566047 special request received, no persistency 09:40:47.566124 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33117... * Connected to 127.0.0.1 (127.0.0.1) port 33117 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33117 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73777 === End of file http_verify.out === Start of file netrc479 machine a.com login alice password alicespassword default login bob === End of file netrc479 === Start of file server.cmd Testnum 479 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73777 === End of file server.response === Start of file valgrind479 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind479 test 0495...[user+password in URL with optional netrc] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind495 ../src/curl -q --output log/39/curl495.out --include --trace-ascii log/39/trace495 --trace-config all --trace-time http://foo%40bar:secret@127.0.0.1:42899/495 --netrc-optional > log/39/stdout495 2> log/39/stderr495 495: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 495 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind495 ../src/curl -q --output log/39/curl495.out --include --trace-ascii log/39/trace495 --trace-config all --trace-time http://foo%40bar:secret@127.0.0.1:42899/495 --netrc-optional > log/39/stdout495 2> log/39/stderr495 === End of file commands.log === Start of file http_server.log 09:40:48.271071 ====> Client connect 09:40:48.271608 accept_connection 3 returned 4 09:40:48.271842 accept_connection 3 returned 0 09:40:48.272017 Read 93 bytes 09:40:48.272142 Process 93 bytes request 09:40:48.272277 Got request: GET /verifiedserver HTTP/1.1 09:40:48.272397 Are-we-friendly question received 09:40:48.272758 Wrote request (93 bytes) input to log/39/server.input 09:40:48.272955 Identifying ourselves as friends 09:40:48.273814 Response sent (56 bytes) and written to log/39/server.response 09:40:48.273929 special request received, no persistency 09:40:48.274004 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 495 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind495 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind495 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/43/server/pop3_server.pid" --logfile "log/43/pop3_server.log" --logdir "log/43" --portfile "log/43/server/pop3_server.port" --srcdir "/build/curl/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 33889 (log/43/server/pop3_server.port) RUN: POP3 server is PID 96591 port 33889 * pid pop3 => 96591 96591 test 0480...[Reject .netrc with credentials using CRLF for POP3] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind480 ../src/curl -q --output log/43/curl480.out --include --trace-ascii log/43/trace480 --trace-config all --trace-time --netrc --netrc-file log/43/netrc480 pop3://127.0.0.1:33889/480 > log/43/stdout480 2> log/43/stderr480 curl returned 1, when expecting 26 480: exit FAILED == Contents of files in the log/43/ dir after test 480 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind480 ../src/curl -q --output log/43/curl480.out --include --trace-ascii log/43/trace480 --trace-config all --trace-time --netrc --netrc-file log/43/netrc480 pop3://127.0.0.1:33889/480 > log/43/stdout480 2> log/43/stderr480 === End of file commands.log === Start of file netrc480 machine 127.0.0.1 login alice password "password\r\ncommand" === End of file netrc480 === Start of file pop3_server.log 09:40:47.143885 POP3 server listens on port IPv4/33889 09:40:47.144940 logged pid 96591 in log/43/server/pop3_server.pid 09:40:47.145217 Awaiting input === End of file pop3_server.log === Start of file pop3_sockfilt.log 09:40:47.394939 Running IPv4 version 09:40:47.395598 Listening on port 33889 09:40:47.396155 Wrote pid 97455 to log/43/server/pop3_sockfilt.pid 09:40:47.396644 Wrote port 33889 to log/43/server/pop3_server.port 09:40:47.396855 Received PING (on stdin) === End of file pop3_sockfilt.log === Start of file server.cmd Testnum 480 === End of file server.cmd === Start of file valgrind480 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind480 test 0442...[Send capped huge number of matching cookies] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind442 ../src/curl -q --output log/56/curl442.out --include --trace-ascii log/56/trace442 --trace-config all --trace-time http://attack.invalid:43265/a/b/442 -b log/56/cookie442 --resolve attack.invalid:43265:127.0.0.1 -L > log/56/stdout442 2> log/56/stderr442 442: protocol FAILED! There was no content at all in the file log/56/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/56/ dir after test 442 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind442 ../src/curl -q --output log/56/curl442.out --include --trace-ascii log/56/trace442 --trace-config all --trace-time http://attack.invalid:43265/a/b/442 -b log/56/cookie442 --resolve attack.invalid:43265:127.0.0.1 -L > log/56/stdout442 2> log/56/stderr442 === End of file commands.log === Start of file cookie442 attack.invalid TRUE / FALSE 0 name1 could-be-large-1 attack.invalid TRUE / FALSE 0 name2 could-be-large-2 attack.invalid TRUE / FALSE 0 name3 could-be-large-3 attack.invalid TRUE / FALSE 0 name4 could-be-large-4 attack.invalid TRUE / FALSE 0 name5 could-be-large-5 attack.invalid TRUE / FALSE 0 name6 could-be-large-6 attack.invalid TRUE / FALSE 0 name7 could-be-large-7 attack.invalid TRUE / FALSE 0 name8 could-be-large-8 attack.invalid TRUE / FALSE 0 name9 could-be-large-9 attack.invalid TRUE / FALSE 0 name10 could-be-large-10 attack.invalid TRUE / FALSE 0 name11 could-be-large-11 attack.invalid TRUE / FALSE 0 name12 could-be-large-12 attack.invalid TRUE / FALSE 0 name13 could-be-large-13 attack.invalid TRUE / FALSE 0 name14 could-be-large-14 attack.invalid TRUE / FALSE 0 name15 could-be-large-15 attack.invalid TRUE / FALSE 0 name16 could-be-large-16 attack.invalid TRUE / FALSE 0 name17 could-be-large-17 attack.invalid TRUE / FALSE 0 name18 could-be-large-18 attack.invalid TRUE / FALSE 0 name19 could-be-large-19 attack.invalid TRUE / FALSE 0 name20 could-be-large-20 attack.invalid TRUE / FALSE 0 name21 could-be-large-21 attack.invalid TRUE / FALSE 0 name22 could-be-large-22 attack.invalid TRUE / FALSE 0 name23 could-be-large-23 attack.invalid TRUE / FALSE 0 name24 could-be-large-24 attack.invalid TRUE / FALSE 0 name25 could-be-large-25 attack.invalid TRUE / FALSE 0 name26 could-be-large-26 attack.invalid TRUE / FALSE 0 name27 could-be-large-27 attack.invalid TRUE / FALSE 0 name28 could-be-large-28 attack.invalid TRUE / FALSE 0 name29 could-be-large-29 attack.invalid TRUE / FALSE 0 name30 could-be-large-30 attack.invalid TRUE / FALSE 0 name31 could-be-large-31 attack.invalid TRUE / FALSE 0 name32 could-be-large-32 attack.invalid TRUE / FALSE 0 name33 could-be-large-33 attack.invalid TRUE / FALSE 0 name34 could-be-large-34 attack.invalid TRUE / FALSE 0 name35 could-be-large-35 attack.invalid TRUE / FALSE 0 name36 could-be-large-36 attack.invalid TRUE / FALSE 0 name37 could-be-large-37 attack.invalid TRUE / FALSE 0 name38 could-be-large-38 attack.invalid TRUE / FALSE 0 name39 could-be-large-39 attack.invalid TRUE / FALSE 0 name40 could-be-large-40 attack.invalid TRUE / FALSE 0 name41 could-be-large-41 attack.invalid TRUE / FALSE 0 name42 could-be-large-42 attack.invalid TRUE / FALSE 0 name43 could-be-large-43 attack.invalid TRUE / FALSE 0 name44 could-be-large-44 attack.invalid TRUE / FALSE 0 name45 could-be-large-45 attack.invalid TRUE / FALSE 0 name46 could-be-large-46 attack.invalid TRUE / FALSE 0 name47 could-be-large-47 attack.invalid TRUE / FALSE 0 name48 could-be-large-48 attack.invalid TRUE / FALSE 0 name49 could-be-large-49 attack.invalid TRUE / FALSE 0 name50 could-be-large-50 attack.invalid TRUE / FALSE 0 name51 could-be-large-51 attack.invalid TRUE / FALSE 0 name52 could-be-large-52 attack.invalid TRUE / FALSE 0 name53 could-be-large-53 attack.invalid TRUE / FALSE 0 name54 could-be-large-54 attack.invalid TRUE / FALSE 0 name55 could-be-large-55 attack.invalid TRUE / FALSE 0 name56 could-be-large-56 attack.invalid TRUE / FALSE 0 name57 could-be-large-57 attack.invalid TRUE / FALSE 0 name58 could-be-large-58 attack.invalid TRUE / FALSE 0 name59 could-be-large-59 attack.invalid TRUE / FALSE 0 name60 could-be-large-60 attack.invalid TRUE / FALSE 0 name61 could-be-large-61 attack.invalid TRUE / FALSE 0 name62 could-be-large-62 attack.invalid TRUE / FALSE 0 name63 could-be-large-63 attack.invalid TRUE / FALSE 0 name64 could-be-large-64 attack.invalid TRUE / FALSE 0 name65 could-be-large-65 attack.invalid TRUE / FALSE 0 name66 could-be-large-66 attack.invalid TRUE / FALSE 0 name67 could-be-large-67 attack.invalid TRUE / FALSE 0 name68 could-be-large-68 attack.invalid TRUE / FALSE 0 name69 could-be-large-69 attack.invalid TRUE / FALSE 0 name70 could-be-large-70 attack.invalid TRUE / FALSE 0 name71 could-be-large-71 attack.invalid TRUE / FALSE 0 name72 could-be-large-72 attack.invalid TRUE / FALSE 0 name73 could-be-large-73 attack.invalid TRUE / FALSE 0 name74 could-be-large-74 attack.invalid TRUE / FALSE 0 name75 could-be-large-75 attack.invalid TRUE / FALSE 0 name76 could-be-large-76 attack.invalid TRUE / FALSE 0 name77 could-be-large-77 attack.invalid TRUE / FALSE 0 name78 could-be-large-78 attack.invalid TRUE / FALSE 0 name79 could-be-large-79 attack.invalid TRUE / FALSE 0 name80 could-be-large-80 attack.invalid TRUE / FALSE 0 name81 could-be-large-81 attack.invalid TRUE / FALSE 0 name82 could-be-large-82 attack.invalid TRUE / FALSE 0 name83 could-be-large-83 attack.invalid TRUE / FALSE 0 name84 could-be-large-84 attack.invalid TRUE / FALSE 0 name85 could-be-large-85 attack.invalid TRUE / FALSE 0 name86 could-be-large-86 attack.invalid TRUE / FALSE 0 name87 could-be-large-87 attack.invalid TRUE / FALSE 0 name88 could-be-large-88 attack.invalid TRUE / FALSE 0 name89 could-be-large-89 attack.invalid TRUE / FALSE 0 name90 could-be-large-90 attack.invalid TRUE / FALSE 0 name91 could-be-large-91 attack.invalid TRUE / FALSE 0 name92 could-be-large-92 attack.invalid TRUE / FALSE 0 name93 could-be-large-93 attack.invalid TRUE / FALSE 0 name94 could-be-large-94 attack.invalid TRUE / FALSE 0 name95 could-be-large-95 attack.invalid TRUE / FALSE 0 name96 could-be-large-96 attack.invalid TRUE / FALSE 0 name97 could-be-large-97 attack.invalid TRUE / FALSE 0 name98 could-be-large-98 attack.invalid TRUE / FALSE 0 name99 could-be-large-99 attack.invalid TRUE / FALSE 0 name100 could-be-large-100 attack.invalid TRUE / FALSE 0 name101 could-be-large-101 attack.invalid TRUE / FALSE 0 name102 could-be-large-102 attack.invalid TRUE / FALSE 0 name103 could-be-large-103 attack.invalid TRUE / FALSE 0 name104 could-be-large-104 attack.invalid TRUE / FALSE 0 name105 could-be-large-105 attack.invalid TRUE / FALSE 0 name106 could-be-large-106 attack.invalid TRUE / FALSE 0 name107 could-be-large-107 attack.invalid TRUE / FALSE 0 name108 could-be-large-108 attack.invalid TRUE / FALSE 0 name109 could-be-large-109 attack.invalid TRUE / FALSE 0 name110 could-be-large-110 attack.invalid TRUE / FALSE 0 name111 could-be-large-111 attack.invalid TRUE / FALSE 0 name112 could-be-large-112 attack.invalid TRUE / FALSE 0 name113 could-be-large-113 attack.invalid TRUE / FALSE 0 name114 could-be-large-114 attack.invalid TRUE / FALSE 0 name115 could-be-large-115 attack.invalid TRUE / FALSE 0 name116 could-be-large-116 attack.invalid TRUE / FALSE 0 name117 could-be-large-117 attack.invalid TRUE / FALSE 0 name118 could-be-large-118 attack.invalid TRUE / FALSE 0 name119 could-be-large-119 attack.invalid TRUE / FALSE 0 name120 could-be-large-120 attack.invalid TRUE / FALSE 0 name121 could-be-large-121 attack.invalid TRUE / FALSE 0 name122 could-be-large-122 attack.invalid TRUE / FALSE 0 name123 could-be-large-123 attack.invalid TRUE / FALSE 0 name124 could-be-large-124 attack.invalid TRUE / FALSE 0 name125 could-be-large-125 attack.invalid TRUE / FALSE 0 name126 could-be-large-126 attack.invalid TRUE / FALSE 0 name127 could-be-large-127 attack.invalid TRUE / FALSE 0 name128 could-be-large-128 attack.invalid TRUE / FALSE 0 name129 could-be-large-129 attack.invalid TRUE / FALSE 0 name130 could-be-large-130 attack.invalid TRUE / FALSE 0 name131 could-be-large-131 attack.invalid TRUE / FALSE 0 name132 could-be-large-132 attack.invalid TRUE / FALSE 0 name133 could-be-large-133 attack.invalid TRUE / FALSE 0 name134 could-be-large-134 attack.invalid TRUE / FALSE 0 name135 could-be-large-135 attack.invalid TRUE / FALSE 0 name136 could-be-large-136 attack.invalid TRUE / FALSE 0 name137 could-be-large-137 attack.invalid TRUE / FALSE 0 name138 could-be-large-138 attack.invalid TRUE / FALSE 0 name139 could-be-large-139 attack.invalid TRUE / FALSE 0 name140 could-be-large-140 attack.invalid TRUE / FALSE 0 name141 could-be-large-141 attack.invalid TRUE / FALSE 0 name142 could-be-large-142 attack.invalid TRUE / FALSE 0 name143 could-be-large-143 attack.invalid TRUE / FALSE 0 name144 could-be-large-144 attack.invalid TRUE / FALSE 0 name145 could-be-large-145 attack.invalid TRUE / FALSE 0 name146 could-be-large-146 attack.invalid TRUE / FALSE 0 name147 could-be-large-147 attack.invalid TRUE / FALSE 0 name148 could-be-large-148 attack.invalid TRUE / FALSE 0 name149 could-be-large-149 attack.invalid TRUE / FALSE 0 name150 could-be-large-150 attack.invalid TRUE / FALSE 0 name151 could-be-large-151 === End of file cookie442 === Start of file http_server.log 09:40:47.057854 ====> Client connect 09:40:47.058149 accept_connection 3 returned 4 09:40:47.058309 accept_connection 3 returned 0 09:40:47.060583 Read 93 bytes 09:40:47.060747 Process 93 bytes request 09:40:47.060835 Got request: GET /verifiedserver HTTP/1.1 09:40:47.060915 Are-we-friendly question received 09:40:47.061146 Wrote request (93 bytes) input to log/56/server.input 09:40:47.061350 Identifying ourselves as friends 09:40:47.062166 Response sent (56 bytes) and written to log/56/server.response 09:40:47.062274 special request received, no persistency 09:40:47.062341 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43265... * Connected to 127.0.0.1 (127.0.0.1) port 43265 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43265 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73754 === End of file http_verify.out === Start of file server.cmd Testnum 442 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73754 === End of file server.response === Start of file valgrind442 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind442 test 0444...[Many Set-Cookie response headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind444 ../src/curl -q --output log/58/curl444.out --include --trace-ascii log/58/trace444 --trace-config all --trace-time http://attack.invalid:46727/a/b/444 -c log/58/cookie444 --resolve attack.invalid:46727:127.0.0.1 > log/58/stdout444 2> log/58/stderr444 444: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 444 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind444 ../src/curl -q --output log/58/curl444.out --include --trace-ascii log/58/trace444 --trace-config all --trace-time http://attack.invalid:46727/a/b/444 -c log/58/cookie444 --resolve attack.invalid:46727:127.0.0.1 > log/58/stdout444 2> log/58/stderr444 === End of file commands.log === Start of file http_server.log 09:40:47.218778 ====> Client connect 09:40:47.219051 accept_connection 3 returned 4 09:40:47.219236 accept_connection 3 returned 0 09:40:47.220223 Read 93 bytes 09:40:47.220348 Process 93 bytes request 09:40:47.220529 Got request: GET /verifiedserver HTTP/1.1 09:40:47.220656 Are-we-friendly question received 09:40:47.220909 Wrote request (93 bytes) input to log/58/server.input 09:40:47.221102 Identifying ourselves as friends 09:40:47.223040 Response sent (56 bytes) and written to log/58/server.response 09:40:47.223141 special request received, no persistency 09:40:47.223230 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46727... * Connected to 127.0.0.1 (127.0.0.1) port 46727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73755 === End of file http_verify.out === Start of file server.cmd Testnum 444 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73755 === End of file server.response === Start of file valgrind444 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind444 * starts no server test 0496...[parallel upload missing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind496 ../src/curl -q --output log/63/curl496.out --include --trace-ascii log/63/trace496 --trace-config all --trace-time 0 -Z -Tz > log/63/stdout496 2> log/63/stderr496 curl returned 1, when expecting 26 496: exit FAILED == Contents of files in the log/63/ dir after test 496 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind496 ../src/curl -q --output log/63/curl496.out --include --trace-ascii log/63/trace496 --trace-config all --trace-time 0 -Z -Tz > log/63/stdout496 2> log/63/stderr496 === End of file commands.log === Start of file server.cmd Testnum 496 === End of file server.cmd === Start of file valgrind496 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst proCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind497 ../src/curl -q --output log/50/curl497.out --include --trace-ascii log/50/trace497 --trace-config all --trace-time http://127.0.0.1:45651/497 > log/50/stdout497 2> log/50/stderr497 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind504 ./libtest/libtests lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/39/stdout504 2> log/39/stderr504 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind499 ../src/curl -q --output log/60/curl499.out --include --trace-ascii log/60/trace499 --trace-config all --trace-time http://127.0.0.1:38843/499 -I > log/60/stdout499 2> log/60/stderr499 cessing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind496 test 0497...[Reject too large accumulated HTTP response headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind497 ../src/curl -q --output log/50/curl497.out --include --trace-ascii log/50/trace497 --trace-config all --trace-time http://127.0.0.1:45651/497 > log/50/stdout497 2> log/50/stderr497 497: protocol FAILED! There was no content at all in the file log/50/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/50/ dir after test 497 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind497 ../src/curl -q --output log/50/curl497.out --include --trace-ascii log/50/trace497 --trace-config all --trace-time http://127.0.0.1:45651/497 > log/50/stdout497 2> log/50/stderr497 === End of file commands.log === Start of file http_server.log 09:40:48.708222 ====> Client connect 09:40:48.709014 accept_connection 3 returned 4 09:40:48.709172 accept_connection 3 returned 0 09:40:48.709407 Read 93 bytes 09:40:48.709699 Process 93 bytes request 09:40:48.709797 Got request: GET /verifiedserver HTTP/1.1 09:40:48.709866 Are-we-friendly question received 09:40:48.710125 Wrote request (93 bytes) input to log/50/server.input 09:40:48.710606 Identifying ourselves as friends 09:40:48.713008 Response sent (56 bytes) and written to log/50/server.response 09:40:48.713161 special request received, no persistency 09:40:48.713266 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45651... * Connected to 127.0.0.1 (127.0.0.1) port 45651 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45651 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73759 === End of file http_verify.out === Start of file server.cmd Testnum 497 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73759 === End of file server.response === Start of file valgrind497 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind497 * starts no server test 0504...[simple multi through local proxy without listener] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind504 ./libtest/libtests lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/39/stdout504 2> log/39/stderr504 libtests returned 1, when expecting 41 504: exit FAILED == Contents of files in the log/39/ dir after test 504 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind504 ./libtest/libtests lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/39/stdout504 2> log/39/stderr504 === End of file commands.log === Start of file server.cmd Testnum 504 === End of file server.cmd === Start of file valgrind504 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind504 prechecked ./libtest/lib518 check test 0518 SKIPPED: precheck command error test 0499...[HTTP HEAD to server still sending a body] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind499 ../src/curl -q --output log/60/curl499.out --include --trace-ascii log/60/trace499 --trace-config all --trace-time http://127.0.0.1:38843/499 -I > log/60/stdout499 2> log/60/stderr499 499: protocol FAILED! There was no content at all in the file log/60/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/60/ dir after test 499 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind499 ../src/curl -q --output log/60/curl499.out --include --trace-asciCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind501 ./libtest/libtests lib501 http://127.0.0.1:47/501 > log/58/stdout501 2> log/58/stderr501 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind502 ./libtest/libtests lib502 file:///build/curl/src/build-curl/tests/log/56/test502.txt > log/56/stdout502 2> log/56/stderr502 i log/60/trace499 --trace-config all --trace-time http://127.0.0.1:38843/499 -I > log/60/stdout499 2> log/60/stderr499 === End of file commands.log === Start of file http_server.log 09:40:50.400865 ====> Client connect 09:40:50.401203 accept_connection 3 returned 4 09:40:50.401377 accept_connection 3 returned 0 09:40:50.401673 Read 93 bytes 09:40:50.401998 Process 93 bytes request 09:40:50.402258 Got request: GET /verifiedserver HTTP/1.1 09:40:50.402402 Are-we-friendly question received 09:40:50.402797 Wrote request (93 bytes) input to log/60/server.input 09:40:50.403018 Identifying ourselves as friends 09:40:50.405099 Response sent (56 bytes) and written to log/60/server.response 09:40:50.405233 special request received, no persistency 09:40:50.405308 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38843... * Connected to 127.0.0.1 (127.0.0.1) port 38843 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38843 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73750 === End of file http_verify.out === Start of file server.cmd Testnum 499 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73750 === End of file server.response === Start of file valgrind499 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind499 * starts no server test 0501...[simple libcurl attempt operation without URL set] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind501 ./libtest/libtests lib501 http://127.0.0.1:47/501 > log/58/stdout501 2> log/58/stderr501 libtests returned 1, when expecting 3 501: exit FAILED == Contents of files in the log/58/ dir after test 501 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind501 ./libtest/libtests lib501 http://127.0.0.1:47/501 > log/58/stdout501 2> log/58/stderr501 === End of file commands.log === Start of file server.cmd Testnum 501 === End of file server.cmd === Start of file valgrind501 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind501 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind498 ../src/curl -q --output log/64/curl498.out --include --trace-ascii log/64/trace498 --trace-config all --trace-time http://127.0.0.1:33073/498 --max-redirs 400 --location > log/64/stdout498 2> log/64/stderr498 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind509 ./libtest/libtests lib509 nothing > log/6/stdout509 2> log/6/stderr509 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind517 ./libtest/libtests lib517 nothing > log/47/stdout517 2> log/47/stderr517 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind513 ./libtest/libtests lib513 http://127.0.0.1:34903/513 > log/51/stdout513 2> log/51/stderr513 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind507 ./libtest/libtests lib507 http://non-existing-host.haxx.se/ > log/26/stdout507 2> log/26/stderr507 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind508 ./libtest/libtests lib508 http://127.0.0.1:43309/508 > log/14/stdout508 2> log/14/stderr508 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind500 ./libtest/libtests lib500 http://127.0.0.1:38797/500 log/63/ip500 > log/63/stdout500 2> log/63/stderr500 test 0502...[simple multi file:// get] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind502 ./libtest/libtests lib502 file:///build/curl/src/build-curl/tests/log/56/test502.txt > log/56/stdout502 2> log/56/stderr502 502: data FAILED: --- log/56/check-expected 2025-07-18 09:40:51.453602745 +0000 +++ log/56/check-generated 2025-07-18 09:40:51.453308385 +0000 @@ -1,5 +0,0 @@ -foo[LF] - bar swsclose[LF] -bar[LF] - foo[LF] -moo[LF] == Contents of files in the log/56/ dir after test 502 === Start of file check-expected foo[LF] bar swsclose[LF] bar[LF] foo[LF] moo[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind502 ./libtest/libtests lib502 file:///build/curl/src/build-curl/tests/log/56/test502.txt > log/56/stdout502 2> log/56/stderr502 === End of file commands.log === Start of file server.cmd Testnum 502 === End of file server.cmd === Start of file test502.txt foo bar swsclose bar foo moo === End of file test502.txt === Start of file valgrind502 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind502 prechecked ./libtest/lib537 check test 0537 SKIPPED: precheck command error test 0498...[Reject too large HTTP response headers on endless redirects] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind498 ../src/curl -q --output log/64/curl498.out --include --trace-ascii log/64/trace498 --trace-config all --trace-time http://127.0.0.1:33073/498 --max-redirs 400 --location > log/64/stdout498 2> log/64/stderr498 curl returned 1, when expecting 56 498: exit FAILED == Contents of files in the log/64/ dir after test 498 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind498 ../src/curl -q --output log/64/curl498.out --include --trace-ascii log/64/trace498 --trace-config all --trace-time http://127.0.0.1:33073/498 --max-redirs 400 --location > log/64/stdout498 2> log/64/stderr498 === End of file commands.log === Start of file http_server.log 09:40:49.213025 ====> Client connect 09:40:49.213373 accept_connection 3 returned 4 09:40:49.213737 accept_connection 3 returned 0 09:40:49.213911 Read 93 bytes 09:40:49.214025 Process 93 bytes request 09:40:49.214128 Got request: GET /verifiedserver HTTP/1.1 09:40:49.214219 Are-we-friendly question received 09:40:49.214620 Wrote request (93 bytes) input to log/64/server.input 09:40:49.214884 Identifying ourselves as friends 09:40:49.215736 Response sent (56 bytes) and written to log/64/server.response 09:40:49.215848 special request received, no persistency 09:40:49.215920 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33073... * Connected to 127.0.0.1 (127.0.0.1) port 33073 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33073 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73748 === End of file http_verify.out === Start of file server.cmd Testnum 498 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73748 === End of file server.response === Start of file valgrind498 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind498 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind511 ./libtest/libtests lib511 ftp://127.0.0.1:40139/511 > log/55/stdout511 2> log/55/stderr511 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind515 ./libtest/libtests lib515 http://127.0.0.1:46339/515 > log/48/stdout515 2> log/48/stderr515 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind543 ./libtest/libtests lib543 - > log/5/stdout543 2> log/5/stderr543 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind519 ./libtest/libtests lib519 http://127.0.0.1:42819/519 > log/42/stdout519 2> log/42/stderr519 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind505 ./libtest/libtests lib505 ftp://127.0.0.1:33001/505 log/34/upload505 > log/34/stdout505 2> log/34/stderr505 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind510 ./libtest/libtests lib510 http://127.0.0.1:43695/510 > log/59/stdout510 2> log/59/stderr510 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind512 ./libtest/libtests lib512 http://127.0.0.1:40089/512 > log/52/stdout512 2> log/52/stderr512 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind521 ./libtest/libtests lib521 ftp://127.0.0.1/521/ 45501 > log/40/stdout521 2> log/40/stderr521 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind514 ./libtest/libtests lib514 http://127.0.0.1:42667/514 > log/49/stdout514 2> log/49/stderr514 * starts no server test 0509...[initialization with memory callbacks and actual usage] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind509 ./libtest/libtests lib509 nothing > log/6/stdout509 2> log/6/stderr509 509: stdout FAILED: --- log/6/check-expected 2025-07-18 09:40:51.980539819 +0000 +++ log/6/check-generated 2025-07-18 09:40:51.979602479 +0000 @@ -1 +0,0 @@ -Callbacks were invoked![LF] == Contents of files in the log/6/ dir after test 509 === Start of file check-expected Callbacks were invoked![LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind509 ./libtest/libtests lib509 nothing > log/6/stdout509 2> log/6/stderr509 === End of file commands.log === Start of file server.cmd Testnum 509 === End of file server.cmd === Start of file valgrind509 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind509 test 0508...[send HTTP POST using read callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind508 ./libtest/libtests lib508 http://127.0.0.1:43309/508 > log/14/stdout508 2> log/14/stderr508 508: protocol FAILED! There was no content at all in the file log/14/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/14/ dir after test 508 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/14/valgrind508 ./libtest/libtests lib508 http://127.0.0.1:43309/508 > log/14/stdout508 2> log/14/stderr508 === End of file commands.log === Start of file http_server.log 09:40:50.840868 ====> Client connect 09:40:50.841181 accept_connection 3 returned 4 09:40:50.841365 accept_connection 3 returned 0 09:40:50.841654 Read 93 bytes 09:40:50.841790 Process 93 bytes request 09:40:50.841890 Got request: GET /verifiedserver HTTP/1.1 09:40:50.841986 Are-we-friendly question received 09:40:50.842260 Wrote request (93 bytes) input to log/14/server.input 09:40:50.842657 Identifying ourselves as friends 09:40:50.843256 Response sent (56 bytes) and written to log/14/server.response 09:40:50.843376 special request received, no persistency 09:40:50.846586 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43309... * Connected to 127.0.0.1 (127.0.0.1) port 43309 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43309 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73795 === End of file http_verify.out === Start of file server.cmd Testnum 508 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73795 === End of file server.response === Start of file valgrind508 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind508 test 0507...[multi interface get with non-existing host name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind507 ./libtest/libtests lib507 http://non-existing-host.haxx.se/ > log/26/stdout507 2> log/26/stderr507 libtests returned 1, when expecting 6 507: exit FAILED == Contents of files in the log/26/ dir after test 507 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/26/valgrind507 ./libtest/libtests lib507 http://non-existing-host.haxx.se/ > log/26/stdout507 2> log/26/stderr507 === End of file commands.log === Start of file http_server.log 09:40:50.897316 ====> Client connect 09:40:50.897912 accept_connection 3 returned 4 09:40:50.898086 accept_connection 3 returned 0 09:40:50.898225 Read 93 bytes 09:40:50.898327 Process 93 bytes request 09:40:50.898423 Got request: GET /verifiedserver HTTP/1.1 09:40:50.898608 Are-we-friendly question received 09:40:50.898867 Wrote request (93 bytes) input to log/26/server.input 09:40:50.899063 Identifying ourselves as friends 09:40:50.902882 Response sent (56 bytes) and written to log/26/server.response 09:40:50.903020 special request received, no persistency 09:40:50.903117 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46481... * Connected to 127.0.0.1 (127.0.0.1) port 46481 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46481 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73780 === End of file http_verify.out === Start of file server.cmd Testnum 507 === End of file CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind516 ./libtest/libtests lib516 http://127.0.0.1:45651/516 > log/50/stdout516 2> log/50/stderr516 server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73780 === End of file server.response === Start of file valgrind507 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind507 * starts no server test 0517...[curl_getdate() testing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind517 ./libtest/libtests lib517 nothing > log/47/stdout517 2> log/47/stderr517 libtests returned 1, when expecting 0 517: exit FAILED == Contents of files in the log/47/ dir after test 517 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/47/valgrind517 ./libtest/libtests lib517 nothing > log/47/stdout517 2> log/47/stderr517 === End of file commands.log === Start of file server.cmd Testnum 517 === End of file server.cmd === Start of file valgrind517 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind517 test 0500...[simple libcurl HTTP GET tool] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind500 ./libtest/libtests lib500 http://127.0.0.1:38797/500 log/63/ip500 > log/63/stdout500 2> log/63/stderr500 500: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 500 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind500 ./libtest/libtests lib500 http://127.0.0.1:38797/500 log/63/ip500 > log/63/stdout500 2> log/63/stderr500 === End of file commands.log === Start of file http_server.log 09:40:50.832688 ====> Client connect 09:40:50.833054 accept_connection 3 returned 4 09:40:50.833246 accept_connection 3 returned 0 09:40:50.833388 Read 93 bytes 09:40:50.833579 Process 93 bytes request 09:40:50.833703 Got request: GET /verifiedserver HTTP/1.1 09:40:50.833796 Are-we-friendly question received 09:40:50.834034 Wrote request (93 bytes) input to log/63/server.input 09:40:50.834237 Identifying ourselves as friends 09:40:50.835050 Response sent (56 bytes) and written to log/63/server.response 09:40:50.835164 special request received, no persistency 09:40:50.835235 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38797... * Connected to 127.0.0.1 (127.0.0.1) port 38797 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38797 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73747 === End of file http_verify.out === Start of file server.cmd Testnum 500 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73747 === End of file server.response === Start of file valgrind500 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind500 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind557 ./libtest/libtests lib557 nothing > log/16/stdout557 2> log/16/stderr557 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind535 ./libtest/libtests lib533 http://127.0.0.1:34827/535 http://127.0.0.1:34827/5350001 > log/21/stdout535 2> log/21/stderr535 * starts no server test 0543...[curl_easy_escape] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind543 ./libtest/libtests lib543 - > log/5/stdout543 2> log/5/stderr543 543: stdout FAILED: --- log/5/check-expected 2025-07-18 09:40:52.238602348 +0000 +++ log/5/check-generated 2025-07-18 09:40:52.237602348 +0000 @@ -1,3 +0,0 @@ -%9C%26K%3DI%04%A1%01%E0%D8%7C%20%B7%EFS%29%FA%1DW%E1[LF] -IN: '' OUT: ''[LF] -IN: ' 12' OUT: '%2012'[LF] == Contents of files in the log/5/ dir after test 543 === Start of file check-expected %9C%26K%3DI%04%A1%01%E0%D8%7C%20%B7%EFS%29%FA%1DW%E1[LF] IN: '' OUT: ''[LF] IN: ' 12' OUT: '%2012'[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/5/valgrind543 ./libtest/libtests lib543 - > log/5/stdout543 2> log/5/stderr543 === End of file commands.log === Start of file server.cmd Testnum 543 === End of file server.cmd === Start of file valgrind543 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind543 test 0505...[FTP upload with rename after transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind505 ./libtest/libtests lib505 ftp://127.0.0.1:33001/505 log/34/upload505 > log/34/stdout505 2> log/34/stderr505 505: protocol FAILED! There was no content at all in the file log/34/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/34/ dir after test 505 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/34/valgrind505 ./libtest/libtests lib505 ftp://127.0.0.1:33001/505 log/34/upload505 > log/34/stdout505 2> log/34/stderr505 === End of file commands.log === Start of file ftp_server.log 09:40:50.630482 ====> Client connect 09:40:50.632569 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:50.643393 < "USER anonymous" 09:40:50.645922 > "331 We are happy you popped in![CR][LF]" 09:40:50.651584 < "PASS ftp@example.com" 09:40:50.656970 > "230 Welcome you silly person[CR][LF]" 09:40:50.664700 < "PWD" 09:40:50.665173 > "257 "/" is current directory[CR][LF]" 09:40:50.670567 < "EPSV" 09:40:50.670918 ====> Passive DATA channel requested by client 09:40:50.671101 DATA sockfilt for passive data channel starting... 09:40:50.699916 DATA sockfilt for passive data channel started (pid 100576) 09:40:50.701059 DATA sockfilt for passive data channel listens on port 38673 09:40:50.704340 > "229 Entering Passive Mode (|||38673|)[LF]" 09:40:50.704615 Client has been notified that DATA conn will be accepted on port 38673 09:40:50.705025 Client connects to port 38673 09:40:50.705461 ====> Client established passive DATA connection on port 38673 09:40:50.706312 < "TYPE I" 09:40:50.708117 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:50.708847 < "SIZE verifiedserver" 09:40:50.710619 > "213 17[CR][LF]" 09:40:50.711416 < "RETR verifiedserver" 09:40:50.712288 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:50.715240 =====> Closing passive DATA connection... 09:40:50.715468 Server disconnects passive DATA connection 09:40:50.715711 Fancy that; client wants to DISC, too 09:40:50.717008 Server disconnected passive DATA connection 09:40:50.717296 DATA sockfilt for passive data channel quits (pid 100576) 09:40:50.719373 DATA sockfilt for passive data channel quit (pid 100576) 09:40:50.719610 =====> Closed passive DATA connection 09:40:50.719952 > "226 File transfer complete[CR][LF]" 09:40:50.757719 < "QUIT" 09:40:50.758208 > "221 bye bye baby[CR][LF]" 09:40:50.793933 MAIN sockfilt said DISC 09:40:50.795192 ====> Client disconnected 09:40:50.795866 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:50.883630 ====> Client connect 09:40:50.889566 Received DATA (on stdin) 09:40:50.889707 > 160 bytes data, server => client 09:40:50.889797 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:50.889883 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:50.889967 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:50.895980 < 16 bytes data, client => server 09:40:50.896119 'USER anonymous\r\n' 09:40:50.897651 Received DATA (on stdin) 09:40:50.897791 > 33 bytes data, server => client 09:40:50.899935 '331 We are happy you popped in!\r\n' 09:40:50.904598 < 22 bytes data, client => server 09:40:50.904731 'PASS ftp@example.com\r\n' 09:40:50.905711 Received DATA (on stdin) 09:40:50.905845 > 30 bytes data, server => client 09:40:50.911021 '230 Welcome you silly person\r\n' 09:40:50.917613 < 5 bytes data, client => server 09:40:50.917764 'PWD\r\n' 09:40:50.919121 Received DATA (on stdin) 09:40:50.919244 > 30 bytes data, server => client 09:40:50.919327 '257 "/" is current directory\r\n' 09:40:50.923592 < 6 bytes data, client => server 09:40:50.923730 'EPSV\r\n' 09:40:50.955270 Received DATA (on stdin) 09:40:50.955431 > 38 bytes data, server => client 09:40:50.955780 '229 Entering Passive Mode (|||38673|)\n' 09:40:50.957652 < 8 bytes data, client => server 09:40:50.957794 'TYPE I\r\n' 09:40:50.960390 Received DATA (on stdin) 09:40:50.960604 > 33 bytes data, server => client 09:40:50.960792 '200 I modify TYPE as you wanted\r\n' 09:40:50.961394 < 21 bytes data, client => server 09:40:50.961606 'SIZE verifiedserver\r\n' 09:40:50.962976 Received DATA (on stdin) 09:40:50.963116 > 8 bytes data, server => client 09:40:50.963286 '213 17\r\n' 09:40:50.963983 < 21 bytes data, client => server 09:40:50.964116 'RETR verifiedserver\r\n' 09:40:50.965645 Received DATA (on stdin) 09:40:50.965785 > 29 bytes data, server => client 09:40:50.966713 '150 Binary junk (17 bytes).\r\n' 09:40:50.973957 Received DATA (on stdin) 09:40:50.974085 > 28 bytes data, server => client 09:40:50.974169 '226 File transfer complete\r\n' 09:40:51.010295 < 6 bytes data, client => server 09:40:51.010594 'QUIT\r\n' 09:40:51.039780 Received DATA (on stdin) 09:40:51.039918 > 18 bytes data, server => client 09:40:51.040010 '221 bye bye baby\r\n' 09:40:51.046753 ====> Client disconnect 09:40:51.048084 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:50.951903 Running IPv4 versiCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind528 ./libtest/libtests lib526 http://127.0.0.1:36877/path/528 > log/29/stdout528 2> log/29/stderr528 on 09:40:50.952734 Listening on port 38673 09:40:50.953127 Wrote pid 100576 to log/34/server/ftp_sockdata.pid 09:40:50.953293 Received PING (on stdin) 09:40:50.954081 Received PORT (on stdin) 09:40:50.957275 ====> Client connect 09:40:50.966329 Received DATA (on stdin) 09:40:50.966555 > 17 bytes data, server => client 09:40:50.967407 'WE ROOLZ: 80544\r\n' 09:40:50.968255 ====> Client disconnect 09:40:50.970007 Received DISC (on stdin) 09:40:50.970132 Crikey! Client also wants to disconnect 09:40:50.970230 Received ACKD (on stdin) 09:40:50.971246 Received QUIT (on stdin) 09:40:50.971369 quits 09:40:50.971909 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 505 === End of file server.cmd === Start of file upload505 Contents of a file to verify ftp upload works? === End of file upload505 === Start of file valgrind505 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind505 test 0521...[FTP dir list PASV with CURLOPT_PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind521 ./libtest/libtests lib521 ftp://127.0.0.1/521/ 45501 > log/40/stdout521 2> log/40/stderr521 521: protocol FAILED! There was no content at all in the file log/40/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/40/ dir after test 521 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/40/valgrind521 ./libtest/libtests lib521 ftp://127.0.0.1/521/ 45501 > log/40/stdout521 2> log/40/stderr521 === End of file commands.log === Start of file ftp_server.log 09:40:50.959971 ====> Client connect 09:40:50.966918 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:50.972159 < "USER anonymous" 09:40:50.972636 > "331 We are happy you popped in![CR][LF]" 09:40:50.975236 < "PASS ftp@example.com" 09:40:50.976703 > "230 Welcome you silly person[CR][LF]" 09:40:50.978095 < "PWD" 09:40:50.978509 > "257 "/" is current directory[CR][LF]" 09:40:50.982970 < "EPSV" 09:40:50.983314 ====> Passive DATA channel requested by client 09:40:50.983506 DATA sockfilt for passive data channel starting... 09:40:51.000908 DATA sockfilt for passive data channel started (pid 100915) 09:40:51.001976 DATA sockfilt for passive data channel listens on port 43607 09:40:51.002401 > "229 Entering Passive Mode (|||43607|)[LF]" 09:40:51.002640 Client has been notified that DATA conn will be accepted on port 43607 09:40:51.005190 Client connects to port 43607 09:40:51.005527 ====> Client established passive DATA connection on port 43607 09:40:51.006848 < "TYPE I" 09:40:51.008073 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.009820 < "SIZE verifiedserver" 09:40:51.010896 > "213 17[CR][LF]" 09:40:51.012476 < "RETR verifiedserver" 09:40:51.013403 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.014474 =====> Closing passive DATA connection... 09:40:51.014706 Server disconnects passive DATA connection 09:40:51.016598 Fancy that; client wants to DISC, too 09:40:51.017977 Server disconnected passive DATA connection 09:40:51.018272 DATA sockfilt for passive data channel quits (pid 100915) 09:40:51.020543 DATA sockfilt for passive data channel quit (pid 100915) 09:40:51.020892 =====> Closed passive DATA connection 09:40:51.021830 > "226 File transfer complete[CR][LF]" 09:40:51.057522 < "QUIT" 09:40:51.058304 > "221 bye bye baby[CR][LF]" 09:40:51.059879 MAIN sockfilt said DISC 09:40:51.060186 ====> Client disconnected 09:40:51.060631 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.212804 ====> Client connect 09:40:51.221109 Received DATA (on stdin) 09:40:51.221287 > 160 bytes data, server => client 09:40:51.221405 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:51.221721 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:51.221835 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:51.224235 < 16 bytes data, client => server 09:40:51.224409 'USER anonymous\r\n' 09:40:51.226799 Received DATA (on stdin) 09:40:51.226966 > 33 bytes data, server => client 09:40:51.227068 '331 We are happy you popped in!\r\n' 09:40:51.228065 < 22 bytes data, client => server 09:40:51.228226 'PASS ftp@example.com\r\n' 09:40:51.229312 Received DATA (on stdin) 09:40:51.229568 > 30 bytes data, server => client 09:40:51.229798 '230 Welcome you silly person\r\n' 09:40:51.230934 < 5 bytes data, client => server 09:40:51.231064 'PWD\r\n' 09:40:51.234631 Received DATA (on stdin) 09:40:51.234757 > 30 bytes data, server => client 09:40:51.234873 '257 "/" is current directory\r\n' 09:40:51.235682 < 6 bytes data, client => server 09:40:51.235852 'EPSV\r\n' 09:40:51.256875 Received DATA (on stdin) 09:40:51.257041 > 38 bytes data, server => client 09:40:51.257144 '229 Entering Passive Mode (|||43607|)\n' 09:40:51.259684 < 8 bytes data, client => server 09:40:51.259827 'TYPE I\r\n' 09:40:51.260953 Received DATA (on stdin) 09:40:51.261103 > 33 bytes data, server => client 09:40:51.261289 '200 I modify TYPE as you wanted\r\n' 09:40:51.262698 < 21 bytes data, client => server 09:40:51.262853 'SIZE verifiedserver\r\n' 09:40:51.263934 Received DATA (on stdin) 09:40:51.264113 > 8 bytes data, server => client 09:40:51.264279 '213 17\r\n' 09:40:51.265587 < 21 bytes data, client => server 09:40:51.265734 'RETR verifiedserver\r\n' 09:40:51.266638 Received DATA (on stdin) 09:40:51.266906 > 29 bytes data, server => client 09:40:51.268560 '150 Binary junk (17 bytes).\r\n' 09:40:51.274914 Received DATA (on stdin) 09:40:51.275024 > 28 bytes data, server => client 09:40:51.275190 '226 File transfer complete\r\n' 09:40:51.310365 < 6 bytes data, client => server 09:40:51.310602 'QUIT\r\n' 09:40:51.311668 Received DATA (on stdin) 09:40:51.311819 > 18 bytes data, server => client 09:40:51.312285 '221 bye bye baby\r\n' 09:40:51.312874 ====> Client disconnect 09:40:51.316541 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:50.252887 Running IPv4 version 09:40:50.253571 Listening on port 43607 09:40:50.254081 Wrote pid 100915 to log/40/server/ftp_sockdata.pid 09:40:50.254277 Received PING (on stdin) 09:40:50.255033 Received PORT (on stdin) 09:40:50.258204 ====> Client connect 09:40:50.267513 Received DATA (on stdin) 09:40:50.267649 > 17 bytes data, server => client 09:40:50.268908 'WE ROOLZ: 89681\r\n' 09:40:50.269798 ====> Client disconnect 09:40:50.270954 Received DISC (on stdin) 09:40:50.271098 Crikey! Client also wants to disconnect 09:40:50.271209 Received ACKD (on stdin) 09:40:50.272389 Received QUIT (on stdin) 09:40:50.272616 quits 09:40:50.273039 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 521 === End of file server.cmd === Start of file valgrind521 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind521 test 0519...[GET same URL twice with different users] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind519 ./libtest/libtests lib519 http://127.0.0.1:42819/519 > log/42/stdout519 2> log/42/stderr519 519: protocol FAILED! There was no content at all in the file log/42/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/42/ dir after test 519 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/42/valgrind519 ./libtest/libtests lib519 http://127.0.0.1:42819/519 > log/42/stdout519 2> log/42/stderr519 === End of file commands.log === Start of file http_server.log 09:40:51.219593 ====> Client connect 09:40:51.220403 accept_connection 3 returned 4 09:40:51.220692 accept_connection 3 returned 0 09:40:51.220885 Read 93 bytes 09:40:51.221013 Process 93 bytes request 09:40:51.221141 Got request: GET /verifiedserver HTTP/1.1 09:40:51.221238 Are-we-friendly question received 09:40:51.224651 Wrote request (93 bytes) input to log/42/server.input 09:40:51.224913 Identifying ourselves as friends 09:40:51.225854 Response sent (56 bytes) and written to log/42/server.response 09:40:51.225978 special request received, no persistency 09:40:51.226054 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42819... * Connected to 127.0.0.1 (127.0.0.1) port 42819 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42819 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73768 === End of file http_verify.out === Start of file server.cmd Testnum 519 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73768 === End of file server.response === Start of file valgrind519 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind519 test 0515...[make a POSTFIELDS set to NULL with POSTFIELDSIZE set to zero] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind515 ./libtest/libtests lib515 http://127.0.0.1:46339/515 > log/48/stdout515 2> log/48/stderr515 515: protocol FAILED! There was no content at all in the file log/48/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/48/ dir after test 515 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/48/valgrind515 ./libtest/libtests lib515 http://127.0.0.1:46339/515 > log/48/stdout515 2> log/48/stderr515 === End of file commands.log === Start of file http_server.log 09:40:50.933854 ====> Client connect 09:40:50.934178 accept_connection 3 returned 4 09:40:50.934369 accept_connection 3 returned 0 09:40:50.935287 Read 93 bytes 09:40:50.935536 Process 93 bytes request 09:40:50.935663 Got request: GET /verifiedserver HTTP/1.1 09:40:50.935759 Are-we-friendly question received 09:40:50.936028 Wrote request (93 bytes) input to log/48/server.input 09:40:50.936251 Identifying ourselves as friends 09:40:50.940778 Response sent (56 bytes) and written to log/48/server.response 09:40:50.940966 special request received, no persistency 09:40:50.941059 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46339... * Connected to 127.0.0.1 (127.0.0.1) port 46339 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46339 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73764 === End of file http_verify.out === Start of file server.cmd Testnum 515 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73764 === End of file server.response === Start of file valgrind515 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind531 ./libtest/libtests lib525 ftp://127.0.0.1:34069/path/531 log/25/upload531 > log/25/stdout531 2> log/25/stderr531 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind520 ./libtest/libtests lib520 ftp://127.0.0.1:41781/520 > log/41/stdout520 2> log/41/stderr520 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind523 ./libtest/libtests lib523 http://www.example.com:999/523 http://127.0.0.1:37551 > log/37/stdout523 2> log/37/stderr523 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind515 test 0516...[make an HTTPPOST set to NULL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind516 ./libtest/libtests lib516 http://127.0.0.1:45651/516 > log/50/stdout516 2> log/50/stderr516 516: protocol FAILED! There was no content at all in the file log/50/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/50/ dir after test 516 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/50/valgrind516 ./libtest/libtests lib516 http://127.0.0.1:45651/516 > log/50/stdout516 2> log/50/stderr516 === End of file commands.log === Start of file http_server.log 09:40:51.320656 ====> Client connect 09:40:51.320999 accept_connection 3 returned 4 09:40:51.321165 accept_connection 3 returned 0 09:40:51.321293 Read 93 bytes 09:40:51.321390 Process 93 bytes request 09:40:51.321587 Got request: GET /verifiedserver HTTP/1.1 09:40:51.321707 Are-we-friendly question received 09:40:51.321952 Wrote request (93 bytes) input to log/50/server.input 09:40:51.322145 Identifying ourselves as friends 09:40:51.322826 Response sent (56 bytes) and written to log/50/server.response 09:40:51.322936 special request received, no persistency 09:40:51.323007 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45651... * Connected to 127.0.0.1 (127.0.0.1) port 45651 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45651 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73759 === End of file http_verify.out === Start of file server.cmd Testnum 516 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73759 === End of file server.response === Start of file valgrind516 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind516 test 0512...[simple curl_easy_duplicate() test] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind512 ./libtest/libtests lib512 http://127.0.0.1:40089/512 > log/52/stdout512 2> log/52/stderr512 512: protocol FAILED! There was no content at all in the file log/52/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/52/ dir after test 512 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/52/valgrind512 ./libtest/libtests lib512 http://127.0.0.1:40089/512 > log/52/stdout512 2> log/52/stderr512 === End of file commands.log === Start of file http_server.log 09:40:50.912062 ====> Client connect 09:40:50.912383 accept_connection 3 returned 4 09:40:50.912718 accept_connection 3 returned 0 09:40:50.912861 Read 93 bytes 09:40:50.912952 Process 93 bytes request 09:40:50.913043 Got request: GET /verifiedserver HTTP/1.1 09:40:50.913125 Are-we-friendly question received 09:40:50.913350 Wrote request (93 bytes) input to log/52/server.input 09:40:50.913626 Identifying ourselves as friends 09:40:50.914655 Response sent (56 bytes) and written to log/52/server.response 09:40:50.914768 special request received, no persistency 09:40:50.914841 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:40089... * Connected to 127.0.0.1 (127.0.0.1) port 40089 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:40089 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73758 === End of file http_verify.out === Start of file server.cmd Testnum 512 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73758 === End of file server.response === Start of file valgrind512 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit deCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind530 ./libtest/libtests lib530 http://127.0.0.1:42323/file530 > log/27/stdout530 2> log/27/stderr530 buginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind512 test 0511...[FTP with FILETIME and NOBODY but missing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind511 ./libtest/libtests lib511 ftp://127.0.0.1:40139/511 > log/55/stdout511 2> log/55/stderr511 511: protocol FAILED! There was no content at all in the file log/55/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/55/ dir after test 511 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/55/valgrind511 ./libtest/libtests lib511 ftp://127.0.0.1:40139/511 > log/55/stdout511 2> log/55/stderr511 === End of file commands.log === Start of file ftp_server.log 09:40:50.715483 ====> Client connect 09:40:50.717050 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:50.719605 < "USER anonymous" 09:40:50.720089 > "331 We are happy you popped in![CR][LF]" 09:40:50.721628 < "PASS ftp@example.com" 09:40:50.722141 > "230 Welcome you silly person[CR][LF]" 09:40:50.725347 < "PWD" 09:40:50.726225 > "257 "/" is current directory[CR][LF]" 09:40:50.728169 < "EPSV" 09:40:50.728442 ====> Passive DATA channel requested by client 09:40:50.728634 DATA sockfilt for passive data channel starting... 09:40:50.743707 DATA sockfilt for passive data channel started (pid 100636) 09:40:50.744997 DATA sockfilt for passive data channel listens on port 42329 09:40:50.745517 > "229 Entering Passive Mode (|||42329|)[LF]" 09:40:50.745826 Client has been notified that DATA conn will be accepted on port 42329 09:40:50.748950 Client connects to port 42329 09:40:50.749225 ====> Client established passive DATA connection on port 42329 09:40:50.750087 < "TYPE I" 09:40:50.750550 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:50.752122 < "SIZE verifiedserver" 09:40:50.752603 > "213 17[CR][LF]" 09:40:50.754193 < "RETR verifiedserver" 09:40:50.754682 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:50.755447 =====> Closing passive DATA connection... 09:40:50.755674 Server disconnects passive DATA connection 09:40:50.757497 Server disconnected passive DATA connection 09:40:50.757923 DATA sockfilt for passive data channel quits (pid 100636) 09:40:50.765470 DATA sockfilt for passive data channel quit (pid 100636) 09:40:50.765824 =====> Closed passive DATA connection 09:40:50.766310 > "226 File transfer complete[CR][LF]" 09:40:50.798030 < "QUIT" 09:40:50.798506 > "221 bye bye baby[CR][LF]" 09:40:50.802244 MAIN sockfilt said DISC 09:40:50.802605 ====> Client disconnected 09:40:50.803177 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:50.968612 ====> Client connect 09:40:50.970748 Received DATA (on stdin) 09:40:50.970911 > 160 bytes data, server => client 09:40:50.971008 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:50.971097 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:50.971177 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:50.972356 < 16 bytes data, client => server 09:40:50.972597 'USER anonymous\r\n' 09:40:50.973819 Received DATA (on stdin) 09:40:50.973972 > 33 bytes data, server => client 09:40:50.974057 '331 We are happy you popped in!\r\n' 09:40:50.974753 < 22 bytes data, client => server 09:40:50.974889 'PASS ftp@example.com\r\n' 09:40:50.975870 Received DATA (on stdin) 09:40:50.976019 > 30 bytes data, server => client 09:40:50.976099 '230 Welcome you silly person\r\n' 09:40:50.976837 < 5 bytes data, client => server 09:40:50.976975 'PWD\r\n' 09:40:50.979538 Received DATA (on stdin) 09:40:50.979703 > 30 bytes data, server => client 09:40:50.980266 '257 "/" is current directory\r\n' 09:40:50.981052 < 6 bytes data, client => server 09:40:50.981203 'EPSV\r\n' 09:40:50.999184 Received DATA (on stdin) 09:40:50.999352 > 38 bytes data, server => client 09:40:50.999538 '229 Entering Passive Mode (|||42329|)\n' 09:40:51.002692 < 8 bytes data, client => server 09:40:51.002833 'TYPE I\r\n' 09:40:51.004243 Received DATA (on stdin) 09:40:51.004401 > 33 bytes data, server => client 09:40:51.004595 '200 I modify TYPE as you wanted\r\n' 09:40:51.005259 < 21 bytes data, client => server 09:40:51.005405 'SIZE verifiedserver\r\n' 09:40:51.006299 Received DATA (on stdin) 09:40:51.006535 > 8 bytes data, server => client 09:40:51.006642 '213 17\r\n' 09:40:51.007294 < 21 bytes data, client => server 09:40:51.007519 'RETR verifiedserver\r\n' 09:40:51.008383 Received DATA (on stdin) 09:40:51.008612 > 29 bytes data, server => client 09:40:51.008703 '150 Binary junk (17 bytes).\r\n' 09:40:51.020002 Received DATA (on stdin) 09:40:51.020216 > 28 bytes data, server => client 09:40:51.020380 '226 File transfer complete\r\n' 09:40:51.050820 < 6 bytes data, client => server 09:40:51.050997 'QUIT\r\n' 09:40:51.052214 Received DATA (on stdin) 09:40:51.052369 > 18 bytes data, server => client 09:40:51.052527 '221 bye bye baby\r\n' 09:40:51.055580 ====> Client disconnect 09:40:51.056328 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:50.995793 Running IPv4 version 09:40:50.996313 Listening on port 42329 09:40:50.996837 Wrote pid 100636 to log/55/server/ftp_sockdata.pid 09:40:50.997043 Received PING (on stdin) 09:40:50.998002 Received PORT (on stdin) 09:40:51.002325 ====> Client connect 09:40:51.009723 Received DATA (on stdin) 09:40:51.009853 > 17 bytes data, server => client 09:40:51.009938 'WE ROOLZ: 77586\r\n' 09:40:51.010318 Received DISC (on stdin) 09:40:51.010599 ====> Client forcibly disconnected 09:40:51.011905 Received QUIT (on stdin) 09:40:51.012031 quits 09:40:51.012540 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY MDTM 550 bluah you f00l REPLY SIZE 550 bluah you f00l Testnum 511 === End of file server.cmd === Start of file valgrind511 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind511 test 0510...[send HTTP POST using read callback, using chunked transfer-encoding] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind510 ./libtest/libtests lib510 http://127.0.0.1:43695/510 > log/59/stdout510 2> log/59/stderr510 510: protocolCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind522 ./libtest/libtests lib521 http://127.0.0.1/522 33511 > log/38/stdout522 2> log/38/stderr522 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind541 ./libtest/libtests lib541 ftp://127.0.0.1:39847/541 log/11/upload541 > log/11/stdout541 2> log/11/stderr541 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind503 ./libtest/libtests lib503 http://machine.503:41267/503 127.0.0.1:44417 > log/43/stdout503 2> log/43/stderr503 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind536 ./libtest/libtests lib536 http://127.0.0.1:45475 goingdirect.com:45475 goingdirect.com:45475:127.0.0.1 > log/20/stdout536 2> log/20/stderr536 FAILED! There was no content at all in the file log/59/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/59/ dir after test 510 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind510 ./libtest/libtests lib510 http://127.0.0.1:43695/510 > log/59/stdout510 2> log/59/stderr510 === End of file commands.log === Start of file http_server.log 09:40:50.938836 ====> Client connect 09:40:50.939136 accept_connection 3 returned 4 09:40:50.939296 accept_connection 3 returned 0 09:40:50.939515 Read 93 bytes 09:40:50.939641 Process 93 bytes request 09:40:50.939728 Got request: GET /verifiedserver HTTP/1.1 09:40:50.939815 Are-we-friendly question received 09:40:50.940069 Wrote request (93 bytes) input to log/59/server.input 09:40:50.940327 Identifying ourselves as friends 09:40:50.943191 Response sent (56 bytes) and written to log/59/server.response 09:40:50.943305 special request received, no persistency 09:40:50.943373 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43695... * Connected to 127.0.0.1 (127.0.0.1) port 43695 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43695 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73752 === End of file http_verify.out === Start of file server.cmd Testnum 510 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73752 === End of file server.response === Start of file valgrind510 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind510 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind534 ./libtest/libtests lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:41867/path/534 > log/22/stdout534 2> log/22/stderr534 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind544 ./libtest/libtests lib544 http://127.0.0.1:42107/544 > log/3/stdout544 2> log/3/stderr544 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind542 ./libtest/libtests lib542 ftp://127.0.0.1:32769/542 > log/8/stdout542 2> log/8/stderr542 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind546 ./libtest/libtests lib533 ftp://127.0.0.1:33417/path/546 ftp://127.0.0.1:33417/path/546 > log/1/stdout546 2> log/1/stderr546 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind540 ./libtest/libtests lib540 http://test.remote.example.com/path/540 http://127.0.0.1:45579 silly:person custom.set.host.name > log/12/stdout540 2> log/12/stderr540 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind524 ./libtest/libtests lib524 ftp://127.0.0.1:45965/path/to/ > log/36/stdout524 2> log/36/stderr524 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind532 ./libtest/libtests lib526 ftp://127.0.0.1:37935/path/532 > log/24/stdout532 2> log/24/stderr532 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind551 ./libtest/libtests lib547 http://test.remote.example.com/path/551 http://127.0.0.1:34239 s1lly:pers0n > log/45/stdout551 2> log/45/stderr551 * starts no server test 0557...[curl_mprintf() testing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind557 ./libtest/libtests lib557 nothing > log/16/stdout557 2> log/16/stderr557 557: stdout FAILED: --- log/16/check-expected 2025-07-18 09:40:52.548339231 +0000 +++ log/16/check-generated 2025-07-18 09:40:52.546602192 +0000 @@ -1,10 +0,0 @@ -All curl_mprintf() unsigned short tests OK![LF] -All curl_mprintf() signed short tests OK![LF] -All curl_mprintf() unsigned int tests OK![LF] -All curl_mprintf() signed int tests OK![LF] -All curl_mprintf() unsigned long tests OK![LF] -All curl_mprintf() signed long tests OK![LF] -All curl_mprintf() curl_off_t tests OK![LF] -All curl_mprintf() strings tests OK![LF] -All float strings tests OK![LF] -All curl_mprintf() octal & hexadecimal tests OK![LF] == Contents of files in the log/16/ dir after test 557 === Start of file check-expected All curl_mprintf() unsigned short tests OK![LF] All curl_mprintf() signed short tests OK![LF] All curl_mprintf() unsigned int tests OK![LF] All curl_mprintf() signed int tests OK![LF] All curl_mprintf() unsigned long tests OK![LF] All curl_mprintf() signed long tests OK![LF] All curl_mprintf() curl_off_t tests OK![LF] All curl_mprintf() strings tests OK![LF] All float strings tests OK![LF] All curl_mprintf() octal & hexadecimal tests OK![LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/16/valgrind557 ./libtest/libtests lib557 nothing > log/16/stdout557 2> log/16/stderr557 === End of file commands.log === Start of file server.cmd Testnum 557 === End of file server.cmd === Start of file valgrind557 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind557 test 0535...[HTTP GET multi two files with FAILONERROR] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind535 ./libtest/libtests lib533 http://127.0.0.1:34827/535 http://127.0.0.1:34827/5350001 > log/21/stdout535 2> log/21/stderr535 535: protocol FAILED! There was no content at all in the file log/21/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/21/ dir after test 535 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/21/valgrind535 ./libtest/libtests lib533 http://127.0.0.1:34827/535 http://127.0.0.1:34827/5350001 > log/21/stdout535 2> log/21/stderr535 === End of file commands.log === Start of file http_server.log 09:40:51.538198 ====> Client connect 09:40:51.538642 accept_connection 3 returned 4 09:40:51.538807 accept_connection 3 returned 0 09:40:51.538914 Read 93 bytes 09:40:51.538988 Process 93 bytes request 09:40:51.539059 Got request: GET /verifiedserver HTTP/1.1 09:40:51.539123 Are-we-friendly question received 09:40:51.539323 Wrote request (93 bytes) input to log/21/server.input 09:40:51.539569 Identifying ourselves as friends 09:40:51.540325 Response sent (56 bytes) and written to log/21/server.response 09:40:51.540430 special request received, no persistency 09:40:51.540600 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34827... * Connected to 127.0.0.1 (127.0.0.1) port 34827 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34827 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73789 === End of file http_verify.out === Start of file server.cmd Testnum 535 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73789 === End of file server.response === Start of file valgrind535 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind535 test 0531...[FTP PORT upload using multi interface and get 425 response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind531 ./libtest/libtests lib525 ftp://127.0.0.1:34069/path/531 log/25/upload531 > log/25/stdout531 2> log/25/stderr531 531: protocol FAILED! There was no content at all in the file log/25/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/25/ dir after test 531 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/25/valgrind531 ./libtest/libtests lib525 ftp://127.0.0.1:34069/path/531 log/25/upload531 > log/25/stdout531 2> log/25/stderr531 === End of file commands.log === Start of file ftp_server.log 09:40:51.336541 ====> Client connect 09:40:51.337870 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | |CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind533 ./libtest/libtests lib533 ftp://127.0.0.1:35595/path/533 ftp://127.0.0.1:35595/path/533 > log/23/stdout533 2> log/23/stderr533 |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.341339 < "USER anonymous" 09:40:51.342686 > "331 We are happy you popped in![CR][LF]" 09:40:51.346566 < "PASS ftp@example.com" 09:40:51.347862 > "230 Welcome you silly person[CR][LF]" 09:40:51.352097 < "PWD" 09:40:51.352493 > "257 "/" is current directory[CR][LF]" 09:40:51.361290 < "EPSV" 09:40:51.361610 ====> Passive DATA channel requested by client 09:40:51.362536 DATA sockfilt for passive data channel starting... 09:40:51.395528 DATA sockfilt for passive data channel started (pid 101588) 09:40:51.401298 DATA sockfilt for passive data channel listens on port 38955 09:40:51.402036 > "229 Entering Passive Mode (|||38955|)[LF]" 09:40:51.402320 Client has been notified that DATA conn will be accepted on port 38955 09:40:51.404407 Client connects to port 38955 09:40:51.404686 ====> Client established passive DATA connection on port 38955 09:40:51.405506 < "TYPE I" 09:40:51.407636 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.409279 < "SIZE verifiedserver" 09:40:51.409692 > "213 17[CR][LF]" 09:40:51.414865 < "RETR verifiedserver" 09:40:51.416702 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.417592 =====> Closing passive DATA connection... 09:40:51.421016 Server disconnects passive DATA connection 09:40:51.421367 Fancy that; client wants to DISC, too 09:40:51.422506 Server disconnected passive DATA connection 09:40:51.422897 DATA sockfilt for passive data channel quits (pid 101588) 09:40:51.428136 DATA sockfilt for passive data channel quit (pid 101588) 09:40:51.428395 =====> Closed passive DATA connection 09:40:51.429389 > "226 File transfer complete[CR][LF]" 09:40:51.459313 < "QUIT" 09:40:51.463912 > "221 bye bye baby[CR][LF]" 09:40:51.464644 MAIN sockfilt said DISC 09:40:51.465119 ====> Client disconnected 09:40:51.465674 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.589624 ====> Client connect 09:40:51.591916 Received DATA (on stdin) 09:40:51.592053 > 160 bytes data, server => client 09:40:51.592152 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:51.592246 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:51.592336 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:51.593185 < 16 bytes data, client => server 09:40:51.593335 'USER anonymous\r\n' 09:40:51.595722 Received DATA (on stdin) 09:40:51.595986 > 33 bytes data, server => client 09:40:51.597356 '331 We are happy you popped in!\r\n' 09:40:51.599250 < 22 bytes data, client => server 09:40:51.599526 'PASS ftp@example.com\r\n' 09:40:51.601092 Received DATA (on stdin) 09:40:51.601249 > 30 bytes data, server => client 09:40:51.601933 '230 Welcome you silly person\r\n' 09:40:51.602811 < 5 bytes data, client => server 09:40:51.602978 'PWD\r\n' 09:40:51.607887 Received DATA (on stdin) 09:40:51.608018 > 30 bytes data, server => client 09:40:51.608101 '257 "/" is current directory\r\n' 09:40:51.614125 < 6 bytes data, client => server 09:40:51.614279 'EPSV\r\n' 09:40:51.656352 Received DATA (on stdin) 09:40:51.656592 > 38 bytes data, server => client 09:40:51.656716 '229 Entering Passive Mode (|||38955|)\n' 09:40:51.658255 < 8 bytes data, client => server 09:40:51.658411 'TYPE I\r\n' 09:40:51.661369 Received DATA (on stdin) 09:40:51.661605 > 33 bytes data, server => client 09:40:51.661711 '200 I modify TYPE as you wanted\r\n' 09:40:51.662391 < 21 bytes data, client => server 09:40:51.662617 'SIZE verifiedserver\r\n' 09:40:51.663406 Received DATA (on stdin) 09:40:51.663662 > 8 bytes data, server => client 09:40:51.663762 '213 17\r\n' 09:40:51.667695 < 21 bytes data, client => server 09:40:51.667853 'RETR verifiedserver\r\n' 09:40:51.669135 Received DATA (on stdin) 09:40:51.669361 > 29 bytes data, server => client 09:40:51.669629 '150 Binary junk (17 bytes).\r\n' 09:40:51.682424 Received DATA (on stdin) 09:40:51.682642 > 28 bytes data, server => client 09:40:51.682835 '226 File transfer complete\r\n' 09:40:51.711909 < 6 bytes data, client => server 09:40:51.712107 'QUIT\r\n' 09:40:51.713380 Received DATA (on stdin) 09:40:51.713708 > 18 bytes data, server => client 09:40:51.713914 '221 bye bye baby\r\n' 09:40:51.718033 ====> Client disconnect 09:40:51.719820 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.644087 Running IPv4 version 09:40:51.648191 Listening on port 38955 09:40:51.648687 Wrote pid 101588 to log/25/server/ftp_sockdata.pid 09:40:51.648856 Received PING (on stdin) 09:40:51.650560 Received PORT (on stdin) 09:40:51.657833 ====> Client connect 09:40:51.670958 Received DATA (on stdin) 09:40:51.671106 > 17 bytes data, server => client 09:40:51.671187 'WE ROOLZ: 87701\r\n' 09:40:51.672073 ====> Client disconnect 09:40:51.675334 Received DISC (on stdin) 09:40:51.675602 Crikey! Client also wants to disconnect 09:40:51.675751 Received ACKD (on stdin) 09:40:51.676986 Received QUIT (on stdin) 09:40:51.677117 quits 09:40:51.677613 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY STOR 425 Permission Denied. File Exists. Testnum 531 === End of file server.cmd === Start of file upload531 Moooooooooooo don't upload this === End of file upload531 === Start of file valgrind531 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind531 test 0530...[multi_socket interface transfer with callbacks returning error] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind530 ./libtest/libtests lib530 http://127.0.0.1:42323/file530 > log/27/stdout530 2> log/27/stderr530 libtests returned 1, when expecting 0 530: exit FAILED == Contents of files in the log/27/ dir after test 530 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/27/valgrind530 ./libtest/libtests lib530 http://127.0.0.1:42323/file530 > log/27/stdout530 2> log/27/stderr530 === End of file commands.log === Start of file http_server.log 09:40:51.544993 ====> Client connect 09:40:51.545263 accept_connection 3 returned 4 09:40:51.545405 accept_connection 3 returned 0 09:40:51.545688 Read 93 bytes 09:40:51.545782 Process 93 bytes request 09:40:51.545867 Got request: GET /verifiedserver HTTP/1.1 09:40:51.545948 Are-we-friendly question received 09:40:51.546160 Wrote request (93 bytes) input to log/27/server.input 09:40:51.546337 Identifying ourselves as friends 09:40:51.547070 Response sent (56 bytes) and written to log/27/server.response 09:40:51.547177 special request received, no persistency 09:40:51.547241 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42323... * Connected to 127.0.0.1 (127.0.0.1) port 42323 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42323 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73783 === End of file http_verify.out === Start of file server.cmd Testnum 530 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73783 === End of file server.response === Start of file valgrind530 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind530 test 0528...[HTTP GET same file using different handles but same connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind528 ./libtest/libtests lib526 http://127.0.0.1:36877/path/528 > log/29/stdout528 2> log/29/stderr528 528: protocol FAILED! There was no content at all in the file log/29/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/29/ dir after test 528 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/29/valgrind528 ./libtest/libtests lib526 http://127.0.0.1:36877/path/528 > log/29/stdout528 2> log/29/stderr528 === End of file commands.log === Start of file http_server.log 09:40:51.518013 ====> Client connect 09:40:51.518367 accept_connection 3 returned 4 09:40:51.518608 accept_connection 3 returned 0 09:40:51.518760 Read 93 bytes 09:40:51.518850 Process 93 bytes request 09:40:51.518947 Got request: GET /verifiedserver HTTP/1.1 09:40:51.519035 Are-we-friendly question received 09:40:51.519282 Wrote request (93 bytes) input to log/29/server.input 09:40:51.519534 Identifying ourselves as friends 09:40:51.520262 Response sent (56 bytes) and written to log/29/server.response 09:40:51.520350 special request received, no persistency 09:40:51.520410 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36877... * Connected to 127.0.0.1 (127.0.0.1) port 36877 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36877 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73782 === End of file http_verify.out === Start of file server.cmd Testnum 528 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73782 === End of file server.response === Start of file valgrind528 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind528 test 0523...[HTTP GET with proxy and CURLOPT_PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind523 ./libtest/libtests lib523 http://www.example.com:999/523 http://127.0.0.1:37551 > log/37/stdout523 2> log/37/stderr523 523: stdout FAILED: --- log/37/check-expected 2025-07-18 09:40:52.729459959 +0000 +++ log/37/check-generated 2025-07-18 09:40:52.728602100 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/37/ dir after test 523 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/37/valgrind523 ./libtest/libtests lib523 http://www.example.com:999/523 http://127.0.0.1:37551 > log/37/stdout523 2> log/37/stderr523 === End of file commands.log === Start of file http_server.log 09:40:51.405858 ====> Client connect 09:40:51.406196 accept_connection 3 returned 4 09:40:51.406388 accept_connection 3 returned 0 09:40:51.406729 Read 93 bytes 09:40:51.406853 Process 93 bytes request 09:40:51.406949 Got request: GET /verifiedserver HTTP/1.1 09:40:51.407055 Are-we-friendly question received 09:40:51.407313 Wrote request (93 bytes) input to log/37/server.input 09:40:51.407597 Identifying ourselves as friends 09:40:51.411991 Response sent (56 bytes) and written to log/37/server.response 09:40:51.412164 special request received, no persistency 09:40:51.412271 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37551... * Connected to 127.0.0.1 (127.0.0.1) port 37551 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37551 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73772 === End of file http_verify.out === Start of file server.cmd Testnum 523 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73772 === End of file server.response === Start of file valgrind523 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind523 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind566 ./libtest/libtests lib566 http://127.0.0.1:45607/566 log/32/ip566 > log/32/stdout566 2> log/32/stderr566 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind538 ./libtest/libtests lib504 ftp://127.0.0.1:38699/538 > log/15/stdout538 2> log/15/stderr538 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind545 ./libtest/libtests lib544 http://127.0.0.1:39659/545 > log/2/stdout545 2> log/2/stderr545 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind529 ./libtest/libtests lib525 ftp://127.0.0.1:34373/path/529 log/28/upload529 > log/28/stdout529 2> log/28/stderr529 test 0522...[HTTP GET with CURLOPT_PORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind522 ./libtest/libtests lib521 http://127.0.0.1/522 33511 > log/38/stdout522 2> log/38/stderr522 522: stdout FAILED: --- log/38/check-expected 2025-07-18 09:40:52.808552539 +0000 +++ log/38/check-generated 2025-07-18 09:40:52.807602060 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/38/ dir after test 522 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/38/valgrind522 ./libtest/libtests lib521 http://127.0.0.1/522 33511 > log/38/stdout522 2> log/38/stderr522 === End of file commands.log === Start of file http_server.log 09:40:51.460226 ====> Client connect 09:40:51.460771 accept_connection 3 returned 4 09:40:51.460978 accept_connection 3 returned 0 09:40:51.461141 Read 93 bytes 09:40:51.461258 Process 93 bytes request 09:40:51.461355 Got request: GET /verifiedserver HTTP/1.1 09:40:51.461542 Are-we-friendly question received 09:40:51.461867 Wrote request (93 bytes) input to log/38/server.input 09:40:51.462091 Identifying ourselves as friends 09:40:51.472279 Response sent (56 bytes) and written to log/38/server.response 09:40:51.472428 special request received, no persistency 09:40:51.472648 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:33511... * Connected to 127.0.0.1 (127.0.0.1) port 33511 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:33511 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73775 === End of file http_verify.out === Start of file server.cmd Testnum 522 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73775 === End of file server.response === Start of file valgrind522 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind522 test 0520...[FTP RETR with FILETIME] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind520 ./libtest/libtests lib520 ftp://127.0.0.1:41781/520 > log/41/stdout520 2> log/41/stderr520 520: protocol FAILED! There was no content at all in the file log/41/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/41/ dir after test 520 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind520 ./libtest/libtests lib520 ftp://127.0.0.1:41781/520 > log/41/stdout520 2> log/41/stderr520 === End of file commands.log === Start of file ftp_server.log 09:40:50.975899 ====> Client connect 09:40:50.977208 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:50.979896 < "USER anonymous" 09:40:50.980275 > "331 We are happy you popped in![CR][LF]" 09:40:50.982496 < "PASS ftp@example.com" 09:40:50.986970 > "230 Welcome you silly person[CR][LF]" 09:40:50.989087 < "PWD" 09:40:50.989479 > "257 "/" is current directory[CR][LF]" 09:40:50.991294 < "EPSV" 09:40:50.991532 ====> Passive DATA channel requested by client 09:40:50.991692 DATA sockfilt for passive data channel starting... 09:40:51.009007 DATA sockfilt for passive data channel started (pid 100926) 09:40:51.010065 DATA sockfilt for passive data channel listens on port 37361 09:40:51.010535 > "229 Entering Passive Mode (|||37361|)[LF]" 09:40:51.010850 Client has been notified that DATA conn will be accepted on port 37361 09:40:51.012290 Client connects to port 37361 09:40:51.012610 ====> Client established passive DATA connection on port 37361 09:40:51.013577 < "TYPE I" 09:40:51.014077 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.016808 < "SIZE verifiedserver" 09:40:51.017451 > "213 17[CR][LF]" 09:40:51.020607 < "RETR verifiedserver" 09:40:51.021159 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.021933 =====> Closing passive DATA connection... 09:40:51.022167 Server disconnects passive DATA connection 09:40:51.023663 Server disconnected passive DATA connection 09:40:51.024337 DATA sockfilt for passive data channel quits (pid 100926) 09:40:51.026708 DATA sockfilt for passive data channel quit (pid 100926) 09:40:51.027052 =====> Closed passive DATA connection 09:40:51.027417 > "226 File transfer complete[CR][LF]" 09:40:51.064148 < "QUIT" 09:40:51.064551 > "221 bye bye baby[CR][LF]" 09:40:51.071347 MAIN sockfilt said DISC 09:40:51.072346 ====> Client disconnected 09:40:51.072922 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:50.228905 ====> Client connect 09:40:50.231235 Received DATA (on stdin) 09:40:50.231390 > 160 bytes data, server => client 09:40:50.231649 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:50.231761 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:50.231887 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:50.232771 < 16 bytes data, client => server 09:40:50.232933 'USER anonymous\r\n' 09:40:50.234292 Received DATA (on stdin) 09:40:50.234426 > 33 bytes data, server => client 09:40:50.234618 '331 We are happy you popped in!\r\n' 09:40:50.235230 < 22 bytes data, client => server 09:40:50.235377 'PASS ftp@example.com\r\n' 09:40:50.241017 Received DATA (on stdin) 09:40:50.241171 > 30 bytes data, server => client 09:40:50.241270 '230 Welcome you silly person\r\n' 09:40:50.241956 < 5 bytes data, client => server 09:40:50.242110 'PWD\r\n' 09:40:50.243551 Received DATA (on stdin) 09:40:50.243692 > 30 bytes data, server => client 09:40:50.243777 '257 "/" is current directory\r\n' 09:40:50.247559 < 6 bytes data, client => server 09:40:50.247724 'EPSV\r\n' 09:40:50.264252 Received DATA (on stdin) 09:40:50.264424 > 38 bytes data, server => client 09:40:50.264627 '229 Entering Passive Mode (|||37361|)\n' 09:40:50.266612 < 8 bytes data, client => server 09:40:50.266901 'TYPE I\r\n' 09:40:50.267776 Received DATA (on stdin) 09:40:50.267921 > 33 bytes data, server => clienCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind561 ./libtest/libtests lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:44647 ascii > log/7/stdout561 2> log/7/stderr561 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind562 ./libtest/libtests lib562 'ftp://127.0.0.1:23456/562;type=A' 41385 > log/60/stdout562 2> log/60/stderr562 t 09:40:50.268025 '200 I modify TYPE as you wanted\r\n' 09:40:50.269925 < 21 bytes data, client => server 09:40:50.270043 'SIZE verifiedserver\r\n' 09:40:50.271150 Received DATA (on stdin) 09:40:50.271285 > 8 bytes data, server => client 09:40:50.271376 '213 17\r\n' 09:40:50.273779 < 21 bytes data, client => server 09:40:50.273930 'RETR verifiedserver\r\n' 09:40:50.274870 Received DATA (on stdin) 09:40:50.275023 > 29 bytes data, server => client 09:40:50.275101 '150 Binary junk (17 bytes).\r\n' 09:40:50.281135 Received DATA (on stdin) 09:40:50.281319 > 28 bytes data, server => client 09:40:50.281417 '226 File transfer complete\r\n' 09:40:50.317207 < 6 bytes data, client => server 09:40:50.317373 'QUIT\r\n' 09:40:50.318247 Received DATA (on stdin) 09:40:50.318395 > 18 bytes data, server => client 09:40:50.318574 '221 bye bye baby\r\n' 09:40:50.324581 ====> Client disconnect 09:40:50.325568 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.260931 Running IPv4 version 09:40:51.261568 Listening on port 37361 09:40:51.262025 Wrote pid 100926 to log/41/server/ftp_sockdata.pid 09:40:51.262264 Received PING (on stdin) 09:40:51.263135 Received PORT (on stdin) 09:40:51.265697 ====> Client connect 09:40:51.276133 Received DATA (on stdin) 09:40:51.276270 > 17 bytes data, server => client 09:40:51.276352 'WE ROOLZ: 77417\r\n' 09:40:51.276764 Received DISC (on stdin) 09:40:51.276920 ====> Client forcibly disconnected 09:40:51.278303 Received QUIT (on stdin) 09:40:51.278426 quits 09:40:51.279010 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY MDTM 213 20030405060708 Testnum 520 === End of file server.cmd === Start of file valgrind520 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind520 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind555 ./libtest/libtests lib555 http://test.remote.example.com/path/555 http://127.0.0.1:41285 testuser:testpass > log/18/stdout555 2> log/18/stderr555 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind539 ./libtest/libtests lib539 ftp://127.0.0.1:34087/path/to/the/file/539 ftp://127.0.0.1:34087/path/to/the/file/5390001 > log/13/stdout539 2> log/13/stderr539 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind526 ./libtest/libtests lib526 ftp://127.0.0.1:36895/path/526 > log/33/stdout526 2> log/33/stderr526 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind527 ./libtest/libtests lib526 ftp://127.0.0.1:40969/path/527 > log/31/stdout527 2> log/31/stderr527 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind554 ./libtest/libtests lib554 http://127.0.0.1:42899/554 > log/39/stdout554 2> log/39/stderr554 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind549 ./libtest/libtests lib549 ftp://www.example.com/moo/549 http://127.0.0.1:35945 > log/57/stdout549 2> log/57/stderr549 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind556 ./libtest/libtests lib556 http://127.0.0.1:44383 > log/17/stdout556 2> log/17/stderr556 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind553 ./libtest/libtests lib553 http://127.0.0.1:43913/path/553 > log/30/stdout553 2> log/30/stderr553 test 0546...[FTP RETR a non-existing file then a found one using the multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind546 ./libtest/libtests lib533 ftp://127.0.0.1:33417/path/546 ftp://127.0.0.1:33417/path/546 > log/1/stdout546 2> log/1/stderr546 546: stdout FAILED: --- log/1/check-expected 2025-07-18 09:40:52.921438462 +0000 +++ log/1/check-generated 2025-07-18 09:40:52.919602003 +0000 @@ -1,6 +0,0 @@ -data[LF] - to[LF] - see[LF] -that FTP[LF] -works[LF] - so does it?[LF] == Contents of files in the log/1/ dir after test 546 === Start of file check-expected data[LF] to[LF] see[LF] that FTP[LF] works[LF] so does it?[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind546 ./libtest/libtests lib533 ftp://127.0.0.1:33417/path/546 ftp://127.0.0.1:33417/path/546 > log/1/stdout546 2> log/1/stderr546 === End of file commands.log === Start of file ftp_server.log 09:40:51.392716 ====> Client connect 09:40:51.394132 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.396812 < "USER anonymous" 09:40:51.397181 > "331 We are happy you popped in![CR][LF]" 09:40:51.399581 < "PASS ftp@example.com" 09:40:51.400536 > "230 Welcome you silly person[CR][LF]" 09:40:51.402498 < "PWD" 09:40:51.402925 > "257 "/" is current directory[CR][LF]" 09:40:51.404872 < "EPSV" 09:40:51.405143 ====> Passive DATA channel requested by client 09:40:51.405321 DATA sockfilt for passive data channel starting... 09:40:51.417917 DATA sockfilt for passive data channel started (pid 101649) 09:40:51.420062 DATA sockfilt for passive data channel listens on port 36485 09:40:51.420463 > "229 Entering Passive Mode (|||36485|)[LF]" 09:40:51.420687 Client has been notified that DATA conn will be accepted on port 36485 09:40:51.426387 Client connects to port 36485 09:40:51.426685 ====> Client established passive DATA connection on port 36485 09:40:51.427541 < "TYPE I" 09:40:51.429265 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.430021 < "SIZE verifiedserver" 09:40:51.431382 > "213 17[CR][LF]" 09:40:51.432590 < "RETR verifiedserver" 09:40:51.433370 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.436347 =====> Closing passive DATA connection... 09:40:51.436578 Server disconnects passive DATA connection 09:40:51.436899 Fancy that; client wants to DISC, too 09:40:51.437925 Server disconnected passive DATA connection 09:40:51.438168 DATA sockfilt for passive data channel quits (pid 101649) 09:40:51.440343 DATA sockfilt for passive data channel quit (pid 101649) 09:40:51.440707 =====> Closed passive DATA connection 09:40:51.441121 > "226 File transfer complete[CR][LF]" 09:40:51.479724 < "QUIT" 09:40:51.482807 > "221 bye bye baby[CR][LF]" 09:40:51.486168 MAIN sockfilt said DISC 09:40:51.488394 ====> Client disconnected 09:40:51.488997 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:50.645979 ====> Client connect 09:40:50.648161 Received DATA (on stdin) 09:40:50.648284 > 160 bytes data, server => client 09:40:50.648386 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:50.648600 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:50.648725 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:50.649524 < 16 bytes data, client => server 09:40:50.649662 'USER anonymous\r\n' 09:40:50.651302 Received DATA (on stdin) 09:40:50.651505 > 33 bytes data, server => client 09:40:50.651597 '331 We are happy you popped in!\r\n' 09:40:50.652107 < 22 bytes data, client => server 09:40:50.652232 'PASS ftp@example.com\r\n' 09:40:50.653706 Received DATA (on stdin) 09:40:50.653832 > 30 bytes data, server => client 09:40:50.654557 '230 Welcome you silly person\r\n' 09:40:50.655394 < 5 bytes data, client => server 09:40:50.655610 'PWD\r\n' 09:40:50.656910 Received DATA (on stdin) 09:40:50.657037 > 30 bytes data, server => client 09:40:50.657118 '257 "/" is current directory\r\n' 09:40:50.657815 < 6 bytes data, client => server 09:40:50.657933 'EPSV\r\n' 09:40:50.674761 Received DATA (on stdin) 09:40:50.674889 > 38 bytes data, server => client 09:40:50.674968 '229 Entering Passive Mode (|||36485|)\n' 09:40:50.679770 < 8 bytes data, client => server 09:40:50.679897 'TYPE I\r\n' 09:40:50.681669 Received DATA (on stdin) 09:40:50.681814 > 33 bytes data, server => client 09:40:50.681984 '200 I modify TYPE as you wanted\r\n' 09:40:50.682610 < 21 bytes data, client => server 09:40:50.682756 'SIZE verifiedserver\r\n' 09:40:50.684113 Received DATA (on stdin) 09:40:50.684250 > 8 bytes data, server => client 09:40:50.684425 '213 17\r\n' 09:40:50.685583 < 21 bytes data, client => server 09:40:50.685722 'RETR verifiedserver\r\n' 09:40:50.686742 Received DATA (on stdin) 09:40:50.686876 > 29 bytes data, server => client 09:40:50.687760 '150 Binary junk (17 bytes).\r\n' 09:40:50.695184 Received DATA (on stdin) 09:40:50.695323 > 28 bytes data, server => client 09:40:50.695412 '226 File transfer complete\r\n' 09:40:50.731515 < 6 bytes data, client => server 09:40:50.731743 'QUIT\r\n' 09:40:50.735543 Received DATA (on stdin) 09:40:50.735699 > 18 bytes data, server => client 09:40:50.735899 '221 bye bye baby\r\n' 09:40:50.739605 ====> Client disconnect 09:40:50.741548 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.669324 Running IPv4 version 09:40:51.669927 Listening on port 36485 09:40:51.670322 Wrote pid 101649 to log/1/server/ftp_sockdata.pid 09:40:51.670564 Received PING (on stdin) 09:40:51.672017 Received PORT (on stdin) 09:40:51.679508 ====> Client connect 09:40:51.687435 Received DATA (on stdin) 09:40:51.687637 > 17 bytes data, server => client 09:40:51.688373 'WE ROOLZ: 77379\r\n' 09:40:51.689221 ====> Client disconnect 09:40:51.690887 Received DISC (on stdin) 09:40:51.691038 Crikey! Client also wants to disconnect 09:40:51.691146 Received ACKD (on stdin) 09:40:51.692097 Received QUIT (on stdin) 09:40:51.692221 quits 09:40:51.692761 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY RETR 550 the file doesn't exist COUNT RETR 1 REPLY SIZE 500 Can't check for file existence COUNT SIZE 1 Testnum 546 === End of file server.cmd === Start of file valgrind546 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind550 ./libtest/libtests lib549 ftp://www.example.com/moo/550 http://127.0.0.1:34639 ascii > log/53/stdout550 2> log/53/stderr550 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind565 ./libtest/libtests lib510 http://127.0.0.1:46607/565 > log/9/stdout565 2> log/9/stderr565 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind547 ./libtest/libtests lib547 http://test.remote.example.com/path/547 http://127.0.0.1:38899 testuser:testpass > log/62/stdout547 2> log/62/stderr547 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind559 ./libtest/libtests lib559 http://127.0.0.1:36913/559 > log/10/stdout559 2> log/10/stderr559 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind548 ./libtest/libtests lib547 http://test.remote.example.com/path/548 http://127.0.0.1:44381 testuser:testpass > log/61/stdout548 2> log/61/stderr548 file valgrind546 test 0545...[HTTP POST binary with embedded zero and no trailing zero] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind545 ./libtest/libtests lib544 http://127.0.0.1:39659/545 > log/2/stdout545 2> log/2/stderr545 545: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 545 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind545 ./libtest/libtests lib544 http://127.0.0.1:39659/545 > log/2/stdout545 2> log/2/stderr545 === End of file commands.log === Start of file http_server.log 09:40:51.689933 ====> Client connect 09:40:51.690275 accept_connection 3 returned 4 09:40:51.690536 accept_connection 3 returned 0 09:40:51.690739 Read 93 bytes 09:40:51.690878 Process 93 bytes request 09:40:51.690985 Got request: GET /verifiedserver HTTP/1.1 09:40:51.691075 Are-we-friendly question received 09:40:51.691316 Wrote request (93 bytes) input to log/2/server.input 09:40:51.691646 Identifying ourselves as friends 09:40:51.692635 Response sent (56 bytes) and written to log/2/server.response 09:40:51.692769 special request received, no persistency 09:40:51.692850 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39659... * Connected to 127.0.0.1 (127.0.0.1) port 39659 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39659 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73807 === End of file http_verify.out === Start of file server.cmd Testnum 545 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73807 === End of file server.response === Start of file valgrind545 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind545 test 0544...[HTTP POST text data using CURLOPT_COPYPOSTFIELDS] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind544 ./libtest/libtests lib544 http://127.0.0.1:42107/544 > log/3/stdout544 2> log/3/stderr544 544: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 544 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind544 ./libtest/libtests lib544 http://127.0.0.1:42107/544 > log/3/stdout544 2> log/3/stderr544 === End of file commands.log === Start of file http_server.log 09:40:51.651198 ====> Client connect 09:40:51.651652 accept_connection 3 returned 4 09:40:51.651861 accept_connection 3 returned 0 09:40:51.651988 Read 93 bytes 09:40:51.652115 Process 93 bytes request 09:40:51.652228 Got request: GET /verifiedserver HTTP/1.1 09:40:51.652404 Are-we-friendly question received 09:40:51.652979 Wrote request (93 bytes) input to log/3/server.input 09:40:51.653187 Identifying ourselves as friends 09:40:51.654156 Response sent (56 bytes) and written to log/3/server.response 09:40:51.654296 special request received, no persistency 09:40:51.654366 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42107... * Connected to 127.0.0.1 (127.0.0.1) port 42107 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42107 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73802 === End of file http_verify.out === Start of file server.cmd Testnum 544 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73802 === End of file server.response === Start of file valgrind544 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind544 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind552 ./libtest/libtests lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:34655/ > log/44/stdout552 2> log/44/stderr552 test 0561...[FTP RETR with CURLOPT_PROXY_TRANSFER_MODE, ASCII transfer and type=i] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind561 ./libtest/libtests lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:44647 ascii > log/7/stdout561 2> log/7/stderr561 561: stdout FAILED: --- log/7/check-expected 2025-07-18 09:40:53.023585450 +0000 +++ log/7/check-generated 2025-07-18 09:40:53.022601951 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/7/ dir after test 561 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/7/valgrind561 ./libtest/libtests lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:44647 ascii > log/7/stdout561 2> log/7/stderr561 === End of file commands.log === Start of file http_server.log 09:40:51.787034 ====> Client connect 09:40:51.787336 accept_connection 3 returned 4 09:40:51.787651 accept_connection 3 returned 0 09:40:51.788263 Read 93 bytes 09:40:51.788428 Process 93 bytes request 09:40:51.788617 Got request: GET /verifiedserver HTTP/1.1 09:40:51.788711 Are-we-friendly question received 09:40:51.788946 Wrote request (93 bytes) input to log/7/server.input 09:40:51.789122 Identifying ourselves as friends 09:40:51.793930 Response sent (56 bytes) and written to log/7/server.response 09:40:51.794044 special request received, no persistency 09:40:51.794118 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44647... * Connected to 127.0.0.1 (127.0.0.1) port 44647 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44647 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK * Request completely sent off < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73801 === End of file http_verify.out === Start of file server.cmd Testnum 561 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73801 === End of file server.response === Start of file valgrind561 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind561 test 0542...[FTP a file with NOBODY yes and HEADER no] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind542 ./libtest/libtests lib542 ftp://127.0.0.1:32769/542 > log/8/stdout542 2> log/8/stderr542 542: protocol FAILED! There was no content at all in the file log/8/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/8/ dir after test 542 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/8/valgrind542 ./libtest/libtests lib542 ftp://127.0.0.1:32769/542 > log/8/stdout542 2> log/8/stderr542 === End of file commands.log === Start of file ftp_server.log 09:40:51.357162 ====> Client connect 09:40:51.362019 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.363819 < "USER anonymous" 09:40:51.364236 > "331 We are happy you popped in![CR][LF]" 09:40:51.367609 < "PASS ftp@example.com" 09:40:51.368088 > "230 Welcome you silly person[CR][LF]" 09:40:51.371489 < "PWD" 09:40:51.371978 > "257 "/" is current directory[CR][LF]" 09:40:51.375619 < "EPSV" 09:40:51.375999 ====> Passive DATA channel requested by client 09:40:51.376223 DATA sockfilt for passive data channel starting... 09:40:51.393465 DATA sockfilt for passive data channel started (pid 101608) 09:40:51.394486 DATA sockfilt for passive data channel listens on port 37367 09:40:51.395090 > "229 Entering Passive Mode (|||37367|)[LF]" 09:40:51.395324 Client has been notified that DATA conn will be accepted on port 37367 09:40:51.396512 Client connects to port 37367 09:40:51.396873 ====> Client established passive DATA connection on port 37367 09:40:51.397632 < "TYPE I" 09:40:51.398079 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.404854 < "SIZE verifiedserver" 09:40:51.406009 > "213 17[CR][LF]" 09:40:51.408242 < "RETR verifiedserver" 09:40:51.408697 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.409446 =====> Closing passive DATA connection... 09:40:51.409699 Server disconnects passive DATA connection 09:40:51.411373 Server disconnected passive DATA connection 09:40:51.411648 DATA sockfilt for passive data channel quits (pid 101608) 09:40:51.413692 DATA sockfilt for passive data channel quit (pid 101608) 09:40:51.414035 =====> Closed passive DATA connection 09:40:51.414405 > "226 File transfer complete[CR][LF]" 09:40:51.452826 < "QUIT" 09:40:51.453950 > "221 bye bye baby[CR][LF]" 09:40:51.458128 MAIN sockfilt said DISC 09:40:51.459211 ====> Client disconnected 09:40:51.459836 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.610198 ====> Client connect 09:40:51.612107 Received DATA (on stdin) 09:40:51.612252 > 160 bytes data, server => client 09:40:51.612684 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:51.612821 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:51.612894 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:51.616368 < 16 bytes data, client => server 09:40:51.616610 'USER anonymous\r\n' 09:40:51.619564 Received DATA (on stdin) 09:40:51.619734 > 33 bytes data, server => client 09:40:51.619823 '331 We are happy you popped in!\r\n' 09:40:51.620527 < 22 bytes data, client => server 09:40:51.620675 'PASS ftp@example.com\r\n' 09:40:51.623560 Received DATA (on stdin) 09:40:51.623708 > 30 bytes data, server => client 09:40:51.623800 '230 Welcome you silly person\r\n' 09:40:51.624352 < 5 bytes data, client => server 09:40:51.624568 'PWD\r\n' 09:40:51.627569 Received DATA (on stdin) 09:40:51.627729 > 30 bytes data, server => client 09:40:51.627810 '257 "/" is current directory\r\n' 09:40:51.628603 < 6 bytes data, client => server 09:40:51.628744 'EPSV\r\n' 09:40:51.648742 Received DATA (on stdin) 09:40:51.648868 > 38 bytes data, server => client 09:40:51.648954 '229 Entering Passive Mode (|||37367|)\n' 09:40:51.650711 < 8 bytes data, client => server 09:40:51.650819 'TYPE I\r\n' 09:40:51.655572 Received DATA (on stdin) 09:40:51.655710 > 33 bytes data, server => client 09:40:51.655789 '200 I modify TYPE as you wanted\r\n' 09:40:51.657943 < 21 bytes data, client => server 09:40:51.658097 'SIZE verifiedserver\r\n' 09:40:51.659007 Received DATA (on stdin) 09:40:51.659152 > 8 bytes data, server => client 09:40:51.659303 '213 17\r\n' 09:40:51.661349 < 21 bytes data, client => server 09:40:51.661554 'RETR verifiedserver\r\n' 09:40:51.662354 Received DATA (on stdin) 09:40:51.662556 > 29 bytes data, server => client 09:40:51.662651 '150 Binary junk (17 bytes).\r\n' 09:40:51.668115 Received DATA (on stdin) 09:40:51.668274 > 28 bytes data, server => client 09:40:51.668368 '226 File transfer complete\r\n' 09:40:51.705850 < 6 bytes data, client => server 09:40:51.706026 'QUIT\r\n' 09:40:51.706877 Received DATA (on stdin) 09:40:51.707029 > 18 bytes data, server => client 09:40:51.707185 '221 bye bye baby\r\n' 09:40:51.711419 ====> Client disconnect 09:40:51.712262 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.645814 Running IPv4 version 09:40:51.646320 Listening on port 37367 09:40:51.646765 Wrote pid 101608 to log/8/server/ftp_sockdata.pid 09:40:51.646916 Received PING (on stdin) 09:40:51.647641 Received PORT (on stdin) 09:40:51.649946 ====> Client connect 09:40:51.663853 Received DATA (on stdin) 09:40:51.663972 > 17 bytes data, server => client 09:40:51.664052 'WE ROOLZ: 77502\r\n' 09:40:51.664419 Received DISC (on stdin) 09:40:51.664645 ====> Client forcibly disconnected 09:40:51.665674 Received QUIT (on stdin) 09:40:51.665794 quits 09:40:51.666225 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 542 === End of file server.cmd === Start of file valgrind542 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind542 test 0541...[FTP upload and upload same file again without rewind] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind541 ./libtest/libtests lib541 ftp://127.0.0.1:39847/541 log/11/upload541 > log/11/stdout541 2> log/11/stderr541 541: protocol FAILED! There was no content at all in the file log/11/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/11/ dir after test 541 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/11/valgrind541 ./libtest/libtests lib541 ftp://127.0.0.1:39847/541 log/11/upload541 > log/11/stdout541 2> log/11/stderr541 === End of file commands.log === Start of file ftp_server.log 09:40:51.402553 ====> Client connect 09:40:51.404290 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.407101 < "USER anonymous" 09:40:51.408555 > "331 We are happy you popped in![CR][LF]" 09:40:51.409265 < "PASS ftp@example.com" 09:40:51.410004 > "230 Welcome you silly person[CR][LF]" 09:40:51.411544 < "PWD" 09:40:51.411970 > "257 "/" is current directory[CR][LF]" 09:40:51.413962 < "EPSV" 09:40:51.414236 ====> Passive DATA channel requested by client 09:40:51.414401 DATA sockfilt for passive data channel starting... 09:40:51.426369 DATA sockfilt for passive data channel started (pid 101665) 09:40:51.427447 DATA sockfilt for passive data channel listens on port 40649 09:40:51.427926 > "229 Entering Passive Mode (|||40649|)[LF]" 09:40:51.428132 Client has been notified that DATA conn will be accepted on port 40649 09:40:51.429676 Client connects to port 40649 09:40:51.430040 ====> Client established passive DATA connection on port 40649 09:40:51.431566 < "TYPE I" 09:40:51.432335 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.434005 < "SIZE verifiedserver" 09:40:51.435095 > "213 17[CR][LF]" 09:40:51.436510 < "RETR verifiedserver" 09:40:51.437214 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.437960 =====> Closing passive DATA connection... 09:40:51.438184 Server disconnects passive DATA connection 09:40:51.440657 Server disconnected passive DATA connection 09:40:51.440995 DATA sockfilt for passive data channel quits (pid 101665) 09:40:51.442831 DATA sockfilt for passive data channel quit (pid 101665) 09:40:51.443060 =====> Closed passive DATA connection 09:40:51.443943 > "226 File transfer complete[CR][LF]" 09:40:51.482310 < "QUIT" 09:40:51.483171 > "221 bye bye baby[CR][LF]" 09:40:51.491143 MAIN sockfilt said DISC 09:40:51.492041 ====> Client disconnected 09:40:51.492541 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.655754 ====> Client connect 09:40:51.657621 Received DATA (on stdin) 09:40:51.657768 > 160 bytes data, server => client 09:40:51.658297 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:51.658428 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:51.658682 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:51.659497 < 16 bytes data, client => server 09:40:51.659647 'USER anonymous\r\n' 09:40:51.661128 Received DATA (on stdin) 09:40:51.661254 > 33 bytes data, server => client 09:40:51.661414 '331 We are happy you popped in!\r\n' 09:40:51.661956 < 22 bytes data, client => server 09:40:51.662079 'PASS ftp@example.com\r\n' 09:40:51.663259 Received DATA (on stdin) 09:40:51.663403 > 30 bytes data, server => client 09:40:51.663960 '230 Welcome you silly person\r\n' 09:40:51.664563 < 5 bytes data, client => server 09:40:51.664700 'PWD\r\n' 09:40:51.665950 Received DATA (on stdin) 09:40:51.666103 > 30 bytes data, server => client 09:40:51.666183 '257 "/" is current directory\r\n' 09:40:51.666845 < 6 bytes data, client => server 09:40:51.666968 'EPSV\r\n' 09:40:51.682080 Received DATA (on stdin) 09:40:51.682207 > 38 bytes data, server => client 09:40:51.682291 '229 Entering Passive Mode (|||40649|)\n' 09:40:51.684421 < 8 bytes data, client => server 09:40:51.684642 'TYPE I\r\n' 09:40:51.685705 Received DATA (on stdin) 09:40:51.685838 > 33 bytes data, server => client 09:40:51.686345 '200 I modify TYPE as you wanted\r\n' 09:40:51.686974 < 21 bytes data, client => server 09:40:51.687100 'SIZE verifiedserver\r\n' 09:40:51.688054 Received DATA (on stdin) 09:40:51.688207 > 8 bytes data, server => client 09:40:51.688374 '213 17\r\n' 09:40:51.689427 < 21 bytes data, client => server 09:40:51.689655 'RETR verifiedserver\r\n' 09:40:51.690607 Received DATA (on stdin) 09:40:51.690741 > 29 bytes data, server => client 09:40:51.692102 '150 Binary junk (17 bytes).\r\n' 09:40:51.697066 Received DATA (on stdin) 09:40:51.697199 > 28 bytes data, server => client 09:40:51.697336 '226 File transfer complete\r\n' 09:40:51.734142 < 6 bytes data, client => server 09:40:51.734292 'QUIT\r\n' 09:40:51.740556 Received DATA (on stdin) 09:40:51.740708 > 18 bytes data, server => client 09:40:51.740792 '221 bye bye baby\r\n' 09:40:51.744379 ====> Client disconnect 09:40:51.745232 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.678373 Running IPv4 version 09:40:51.679069 Listening on port 40649 09:40:51.679556 Wrote pid 101665 to log/11/server/ftp_sockdata.pid 09:40:51.679733 Received PING (on stdin) 09:40:51.680591 Received PORT (on stdin) 09:40:51.683151 ====> Client connect 09:40:51.692419 Received DATA (on stdin) 09:40:51.692626 > 17 bytes data, server => client 09:40:51.692707 'WE ROOLZ: 77498\r\n' 09:40:51.692947 Received DISC (on stdin) 09:40:51.693097 ====> Client forcibly disconnected 09:40:51.695031 Received QUIT (on stdin) 09:40:51.695158 quits 09:40:51.695568 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 541 === End of file server.cmd === Start of file upload541 Contents of a file to verify ftp upload works? === End of file upload541 === Start of file valgrind541 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind541 test 0540...[HTTP proxy auth Digest multi API re-using connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind540 ./libtest/libtests lib540 http://test.remote.example.com/path/540 http://127.0.0.1:45579 silly:person custom.set.host.name > log/12/stdout540 2> log/12/stderr540 540: protocol FAILED! There was no content at all in the file log/12/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/12/ dir after test 540 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/12/valgrind540 ./libtest/libtests lib540 http://test.remote.example.com/path/540 http://127.0.0.1:45579 silly:person custom.set.host.name > log/12/stdout540 2> log/12/stderr540 === End of file commands.log === Start of file http_server.log 09:40:51.647178 ====> Client connect 09:40:51.647619 accept_connection 3 returned 4 09:40:51.647796 accept_connection 3 returned 0 09:40:51.647921 Read 93 bytes 09:40:51.648015 Process 93 bytes request 09:40:51.648106 Got request: GET /verifiedserver HTTP/1.1 09:40:51.648178 Are-we-friendly question received 09:40:51.648395 Wrote request (93 bytes) input to log/12/server.input 09:40:51.648658 Identifying ourselves as friends 09:40:51.654694 Response sent (56 bytes) and written to log/12/server.response 09:40:51.654964 special request received, no persistency 09:40:51.655211 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45579... * Connected to 127.0.0.1 (127.0.0.1) port 45579 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45579 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73799 === End of file http_verify.out === Start of file server.cmd connection-monitor Testnum 540 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73799 === End of file server.response === Start of file valgrind540 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind540 test 0538...[FTP multi-interface download, failed login: PASS not valid] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind538 ./libtest/libtests lib504 ftp://127.0.0.1:38699/538 > log/15/stdout538 2> log/15/stderr538 538: protocol FAILED! There was no content at all in the file log/15/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/15/ dir after test 538 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/15/valgrind538 ./libtest/libtests lib504 ftp://127.0.0.1:38699/538 > log/15/stdout538 2> log/15/stderr538 === End of file commands.log === Start of file ftp_server.log 09:40:51.448129 ====> Client connect 09:40:51.452662 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.455616 < "USER anonymous" 09:40:51.456061 > "331 We are happy you popped in![CR][LF]" 09:40:51.460252 < "PASS ftp@example.com" 09:40:51.460547 > "230 Welcome you silly person[CR][LF]" 09:40:51.462567 < "PWD" 09:40:51.463003 > "257 "/" is current directory[CR][LF]" 09:40:51.466702 < "EPSV" 09:40:51.467091 ====> Passive DATA channel requested by client 09:40:51.467258 DATA sockfilt for passive data channel starting... 09:40:51.481508 DATA sockfilt for passive data channel started (pid 101765) 09:40:51.482806 DATA sockfilt for passive data channel listens on port 34713 09:40:51.484192 > "229 Entering Passive Mode (|||34713|)[LF]" 09:40:51.484432 Client has been notified that DATA conn will be accepted on port 34713 09:40:51.486675 Client connects to port 34713 09:40:51.487063 ====> Client established passive DATA connection on port 34713 09:40:51.488242 < "TYPE I" 09:40:51.488685 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.497058 < "SIZE verifiedserver" 09:40:51.500939 > "213 17[CR][LF]" 09:40:51.505858 < "RETR verifiedserver" 09:40:51.506965 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.512633 =====> Closing passive DATA connection... 09:40:51.514514 Server disconnects passive DATA connection 09:40:51.515284 Fancy that; client wants to DISC, too 09:40:51.516048 Server disconnected passive DATA connection 09:40:51.516296 DATA sockfilt for passive data channel quits (pid 101765) 09:40:51.521356 DATA sockfilt for passive data channel quit (pid 101765) 09:40:51.521601 =====> Closed passive DATA connection 09:40:51.521945 > "226 File transfer complete[CR][LF]" 09:40:51.554534 < "QUIT" 09:40:51.554985 > "221 bye bye baby[CR][LF]" 09:40:51.561277 MAIN sockfilt said DISC 09:40:51.562272 ====> Client disconnected 09:40:51.562867 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.701205 ====> Client connect 09:40:51.706747 Received DATA (on stdin) 09:40:51.706875 > 160 bytes data, server => client 09:40:51.706966 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:51.707036 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:51.707103 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:51.707846 < 16 bytes data, client => server 09:40:51.708001 'USER anonymous\r\n' 09:40:51.710837 Received DATA (on stdin) 09:40:51.710994 > 33 bytes data, server => client 09:40:51.711105 '331 We are happy you popped in!\r\n' 09:40:51.711765 < 22 bytes data, client => server 09:40:51.711907 'PASS ftp@example.com\r\n' 09:40:51.714657 Received DATA (on stdin) 09:40:51.714788 > 30 bytes data, server => client 09:40:51.714866 '230 Welcome you silly person\r\n' 09:40:51.715609 < 5 bytes data, client => server 09:40:51.715736 'PWD\r\n' 09:40:51.718575 Received DATA (on stdin) 09:40:51.718738 > 30 bytes data, server => client 09:40:51.718818 '257 "/" is current directory\r\n' 09:40:51.719690 < 6 bytes data, client => server 09:40:51.719834 'EPSV\r\n' 09:40:51.737399 Received DATA (on stdin) 09:40:51.737668 > 38 bytes data, server => client 09:40:51.738397 '229 Entering Passive Mode (|||34713|)\n' 09:40:51.740065 < 8 bytes data, client => server 09:40:51.740183 'TYPE I\r\n' 09:40:51.747106 Received DATA (on stdin) 09:40:51.747387 > 33 bytes data, server => client 09:40:51.747542 '200 I modify TYPE as you wanted\r\n' 09:40:51.748578 < 21 bytes data, client => server 09:40:51.748894 'SIZE verifiedserver\r\n' 09:40:51.751940 Received DATA (on stdin) 09:40:51.752077 > 8 bytes data, server => client 09:40:51.755646 '213 17\r\n' 09:40:51.758078 < 21 bytes data, client => server 09:40:51.758389 'RETR verifiedserver\r\n' 09:40:51.764552 Received DATA (on stdin) 09:40:51.764801 > 29 bytes data, server => client 09:40:51.765019 '150 Binary junk (17 bytes).\r\n' 09:40:51.775955 Received DATA (on stdin) 09:40:51.776083 > 28 bytes data, server => client 09:40:51.776174 '226 File transfer complete\r\n' 09:40:51.807238 < 6 bytes data, client => server 09:40:51.807387 'QUIT\r\n' 09:40:51.809073 Received DATA (on stdin) 09:40:51.809211 > 18 bytes data, server => client 09:40:51.809285 '221 bye bye baby\r\n' 09:40:51.814628 ====> Client disconnect 09:40:51.815336 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.733737 Running IPv4 version 09:40:51.734275 Listening on port 34713 09:40:51.734736 Wrote pid 101765 to log/15/server/ftp_sockdata.pid 09:40:51.734888 Received PING (on stdin) 09:40:51.735710 Received PORT (on stdin) 09:40:51.739754 ====> Client connect 09:40:51.766556 Received DATA (on stdin) 09:40:51.766696 > 17 bytes data, server => client 09:40:51.766797 'WE ROOLZ: 90579\r\n' 09:40:51.767787 ====> Client disconnect 09:40:51.768710 Received DISC (on stdin) 09:40:51.768839 Crikey! Client also wants to disconnect 09:40:51.769236 Received ACKD (on stdin) 09:40:51.770223 Received QUIT (on stdin) 09:40:51.770328 quits 09:40:51.770795 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 314 bluah you f00l Testnum 538 === End of file server.cmd === Start of file valgrind538 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind538 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind563 ./libtest/libtests lib562 "ftp://127.0.0.1:23456/563;type=A" 38901 > log/58/stdout563 2> log/58/stderr563 test 0536...[CURLINFO_USED_PROXY] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind536 ./libtest/libtests lib536 http://127.0.0.1:45475 goingdirect.com:45475 goingdirect.com:45475:127.0.0.1 > log/20/stdout536 2> log/20/stderr536 536: stdout FAILED: --- log/20/check-expected 2025-07-18 09:40:53.126143639 +0000 +++ log/20/check-generated 2025-07-18 09:40:53.125151039 +0000 @@ -1,4 +0,0 @@ -hello[CR][LF] -This used the proxy[CR][LF] -hello[CR][LF] -This DID NOT use the proxy[CR][LF] == Contents of files in the log/20/ dir after test 536 === Start of file check-expected hello[CR][LF] This used the proxy[CR][LF] hello[CR][LF] This DID NOT use the proxy[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/20/valgrind536 ./libtest/libtests lib536 http://127.0.0.1:45475 goingdirect.com:45475 goingdirect.com:45475:127.0.0.1 > log/20/stdout536 2> log/20/stderr536 === End of file commands.log === Start of file http_server.log 09:40:51.544904 ====> Client connect 09:40:51.545189 accept_connection 3 returned 4 09:40:51.545342 accept_connection 3 returned 0 09:40:51.546939 Read 93 bytes 09:40:51.547087 Process 93 bytes request 09:40:51.547165 Got request: GET /verifiedserver HTTP/1.1 09:40:51.547232 Are-we-friendly question received 09:40:51.547524 Wrote request (93 bytes) input to log/20/server.input 09:40:51.547736 Identifying ourselves as friends 09:40:51.549726 Response sent (56 bytes) and written to log/20/server.response 09:40:51.549853 special request received, no persistency 09:40:51.549924 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45475... * Connected to 127.0.0.1 (127.0.0.1) port 45475 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45475 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73786 === End of file http_verify.out === Start of file server.cmd Testnum 536 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73786 === End of file server.response === Start of file valgrind536 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind536 test 0534...[FTP RETR twice using multi: non-existing host and non-existing file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind534 ./libtest/libtests lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:41867/path/534 > log/22/stdout534 2> log/22/stderr534 534: protocol FAILED! There was no content at all in the file log/22/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/22/ dir after test 534 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/22/valgrind534 ./libtest/libtests lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:41867/path/534 > log/22/stdout534 2> log/22/stderr534 === End of file commands.log === Start of file ftp_server.log 09:40:51.312351 ====> Client connect 09:40:51.313607 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.318347 < "USER anonymous" 09:40:51.320643 > "331 We are happy you popped in![CR][LF]" 09:40:51.325168 < "PASS ftp@example.com" 09:40:51.326947 > "230 Welcome you silly person[CR][LF]" 09:40:51.329213 < "PWD" 09:40:51.329586 > "257 "/" is current directory[CR][LF]" 09:40:51.334267 < "EPSV" 09:40:51.334546 ====> Passive DATA channel requested by client 09:40:51.334853 DATA sockfilt for passive data channel starting... 09:40:51.360058 DATA sockfilt for passive data channel started (pid 101545) 09:40:51.361095 DATA sockfilt for passive data channel listens on port 42445 09:40:51.361964 > "229 Entering Passive Mode (|||42445|)[LF]" 09:40:51.362222 Client has been notified that DATA conn will be accepted on port 42445 09:40:51.364714 Client connects to port 42445 09:40:51.365080 ====> Client established passive DATA connection on port 42445 09:40:51.366023 < "TYPE I" 09:40:51.366829 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.368562 < "SIZE verifiedserver" 09:40:51.369618 > "213 17[CR][LF]" 09:40:51.371473 < "RETR verifiedserver" 09:40:51.372272 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.373634 =====> Closing passive DATA connection... 09:40:51.374063 Server disconnects passive DATA connection 09:40:51.376327 Server disconnected passive DATA connection 09:40:51.376542 DATA sockfilt for passive data channel quits (pid 101545) 09:40:51.378557 DATA sockfilt for passive data channel quit (pid 101545) 09:40:51.378892 =====> Closed passive DATA connection 09:40:51.379248 > "226 File transfer complete[CR][LF]" 09:40:51.415964 < "QUIT" 09:40:51.417111 > "221 bye bye baby[CR][LF]" 09:40:51.422870 MAIN sockfilt said DISC 09:40:51.423256 ====> Client disconnected 09:40:51.423728 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.565314 ====> Client connect 09:40:51.569520 Received DATA (on stdin) 09:40:51.569688 > 160 bytes data, server => client 09:40:51.569799 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:51.569892 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:51.569973 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:51.570747 < 16 bytes data, client => server 09:40:51.570907 'USER anonymous\r\n' 09:40:51.573899 Received DATA (on stdin) 09:40:51.574078 > 33 bytes data, server => client 09:40:51.574750 '331 We are happy you popped in!\r\n' 09:40:51.577873 < 22 bytes data, client => server 09:40:51.578054 'PASS ftp@example.com\r\n' 09:40:51.581046 Received DATA (on stdin) 09:40:51.581210 > 30 bytes data, server => client 09:40:51.581316 '230 Welcome you silly person\r\n' 09:40:51.582090 < 5 bytes data, client => server 09:40:51.582244 'PWD\r\n' 09:40:51.586041 Received DATA (on stdin) 09:40:51.586207 > 30 bytes data, server => client 09:40:51.586305 '257 "/" is current directory\r\n' 09:40:51.587127 < 6 bytes data, client => server 09:40:51.587265 'EPSV\r\n' 09:40:51.615200 Received DATA (on stdin) 09:40:51.615336 > 38 bytes data, server => client 09:40:51.616191 '229 Entering Passive Mode (|||42445|)\n' 09:40:51.618037 < 8 bytes data, client => server 09:40:51.618181 'TYPE I\r\n' 09:40:51.620101 Received DATA (on stdin) 09:40:51.620246 > 33 bytes data, server => client 09:40:51.620841 '200 I modify TYPE as you wanted\r\n' 09:40:51.621566 < 21 bytes data, client => server 09:40:51.621708 'SIZE verifiedserver\r\n' 09:40:51.622786 Received DATA (on stdin) 09:40:51.623127 > 8 bytes data, server => client 09:40:51.623712 '213 17\r\n' 09:40:51.624338 < 21 bytes data, client => server 09:40:51.624551 'RETR verifiedserver\r\n' 09:40:51.625634 Received DATA (on stdin) 09:40:51.625788 > 29 bytes data, server => client 09:40:51.626359 '150 Binary junk (17 bytes).\r\n' 09:40:51.633317 Received DATA (on stdin) 09:40:51.633530 > 28 bytes data, server => client 09:40:51.633627 '226 File transfer complete\r\n' 09:40:51.668348 < 6 bytes data, client => server 09:40:51.668633 'QUIT\r\n' 09:40:51.670022 Received DATA (on stdin) 09:40:51.670168 > 18 bytes data, server => client 09:40:51.670351 '221 bye bye baby\r\n' 09:40:51.673593 ====> Client disconnect 09:40:51.676965 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.608330 Running IPv4 version 09:40:51.612819 Listening on port 42445 09:40:51.613239 Wrote pid 101545 to log/22/server/ftp_sockdata.pid 09:40:51.613409 Received PING (on stdin) 09:40:51.614157 Received PORT (on stdin) 09:40:51.617740 ====> Client connect 09:40:51.628104 Received DATA (on stdin) 09:40:51.628241 > 17 bytes data, server => client 09:40:51.628327 'WE ROOLZ: 77494\r\n' 09:40:51.628662 Received DISC (on stdin) 09:40:51.628804 ====> Client forcibly disconnected 09:40:51.630591 Received QUIT (on stdin) 09:40:51.630717 quits 09:40:51.631111 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY RETR 550 the file doesn't exist REPLY SIZE 500 Can't check for file existence Testnum 534 === End of file server.cmd === Start of file valgrind534 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind534 test 0533...[FTP RETR a non-existing file twice using the multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind533 ./libtest/libtests lib533 ftp://127.0.0.1:35595/path/533 ftp://127.0.0.1:35595/path/533 > log/23/stdout533 2> log/23/stderr533 533: protocol FAILED! There was no content at all in the file log/23/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/23/ dir after test 533 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/23/valgrind533 ./libtest/libtests lib533 ftp://127.0.0.1:35595/path/533 ftp://127.0.0.1:35595/path/533 > log/23/stdout533 2> log/23/stderr533 === End of file commands.log === Start of file ftp_server.log 09:40:51.313137 ====> Client connect 09:40:51.318346 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.329184 < "USER anonymous" 09:40:51.329588 > "331 We are happy you popped in![CR][LF]" 09:40:51.333649 < "PASS ftp@example.com" 09:40:51.335664 > "230 Welcome you silly person[CR][LF]" 09:40:51.340929 < "PWD" 09:40:51.341508 > "257 "/" is current directory[CR][LF]" 09:40:51.347312 < "EPSV" 09:40:51.347697 ====> Passive DATA channel requested by client 09:40:51.348031 DATA sockfilt for passive data channel starting... 09:40:51.374459 DATA sockfilt for passive data channel started (pid 101568) 09:40:51.375500 DATA sockfilt for passive data channel listens on port 41041 09:40:51.376069 > "229 Entering Passive Mode (|||41041|)[LF]" 09:40:51.376325 Client has been notified that DATA conn will be accepted on port 41041 09:40:51.380508 Client connects to port 41041 09:40:51.380906 ====> Client established passive DATA connection on port 41041 09:40:51.382940 < "TYPE I" 09:40:51.384666 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.385542 < "SIZE verifiedserver" 09:40:51.389608 > "213 17[CR][LF]" 09:40:51.393522 < "RETR verifiedserver" 09:40:51.394155 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.394985 =====> Closing passive DATA connection... 09:40:51.395216 Server disconnects passive DATA connection 09:40:51.400227 Server disconnected passive DATA connection 09:40:51.400618 DATA sockfilt for passive data channel quits (pid 101568) 09:40:51.403698 DATA sockfilt for passive data channel quit (pid 101568) 09:40:51.404041 =====> Closed passive DATA connection 09:40:51.404376 > "226 File transfer complete[CR][LF]" 09:40:51.444862 < "QUIT" 09:40:51.445307 > "221 bye bye baby[CR][LF]" 09:40:51.454254 MAIN sockfilt said DISC 09:40:51.454641 ====> Client disconnected 09:40:51.455361 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.566184 ====> Client connect 09:40:51.575246 Received DATA (on stdin) 09:40:51.575414 > 160 bytes data, server => client 09:40:51.575724 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:51.575823 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:51.575906 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:51.581657 < 16 bytes data, client => server 09:40:51.581831 'USER anonymous\r\n' 09:40:51.584702 Received DATA (on stdin) 09:40:51.584873 > 33 bytes data, server => client 09:40:51.584961 '331 We are happy you popped in!\r\n' 09:40:51.586593 < 22 bytes data, client => server 09:40:51.586754 'PASS ftp@example.com\r\n' 09:40:51.587790 Received DATA (on stdin) 09:40:51.587919 > 30 bytes data, server => client 09:40:51.589756 '230 Welcome you silly person\r\n' 09:40:51.590394 < 5 bytes data, client => server 09:40:51.590608 'PWD\r\n' 09:40:51.595992 Received DATA (on stdin) 09:40:51.596283 > 30 bytes data, server => client 09:40:51.596382 '257 "/" is current directory\r\n' 09:40:51.600127 < 6 bytes data, client => server 09:40:51.600301 'EPSV\r\n' 09:40:51.631571 Received DATA (on stdin) 09:40:51.631761 > 38 bytes data, server => client 09:40:51.631861 '229 Entering Passive Mode (|||41041|)\n' 09:40:51.635719 < 8 bytes data, client => server 09:40:51.635845 'TYPE I\r\n' 09:40:51.637007 Received DATA (on stdin) 09:40:51.637137 > 33 bytes data, server => client 09:40:51CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind525 ./libtest/libtests lib525 ftp://127.0.0.1:39447/path/525 log/35/upload525 > log/35/stdout525 2> log/35/stderr525 .637294 '200 I modify TYPE as you wanted\r\n' 09:40:51.637966 < 21 bytes data, client => server 09:40:51.638102 'SIZE verifiedserver\r\n' 09:40:51.643838 Received DATA (on stdin) 09:40:51.643984 > 8 bytes data, server => client 09:40:51.644064 '213 17\r\n' 09:40:51.644860 < 21 bytes data, client => server 09:40:51.645009 'RETR verifiedserver\r\n' 09:40:51.649152 Received DATA (on stdin) 09:40:51.649294 > 29 bytes data, server => client 09:40:51.649395 '150 Binary junk (17 bytes).\r\n' 09:40:51.658436 Received DATA (on stdin) 09:40:51.658664 > 28 bytes data, server => client 09:40:51.658770 '226 File transfer complete\r\n' 09:40:51.697620 < 6 bytes data, client => server 09:40:51.697798 'QUIT\r\n' 09:40:51.700558 Received DATA (on stdin) 09:40:51.700715 > 18 bytes data, server => client 09:40:51.700799 '221 bye bye baby\r\n' 09:40:51.704770 ====> Client disconnect 09:40:51.709363 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.626333 Running IPv4 version 09:40:51.627076 Listening on port 41041 09:40:51.627666 Wrote pid 101568 to log/23/server/ftp_sockdata.pid 09:40:51.627869 Received PING (on stdin) 09:40:51.628662 Received PORT (on stdin) 09:40:51.633907 ====> Client connect 09:40:51.649859 Received DATA (on stdin) 09:40:51.650000 > 17 bytes data, server => client 09:40:51.650089 'WE ROOLZ: 77500\r\n' 09:40:51.650347 Received DISC (on stdin) 09:40:51.650592 ====> Client forcibly disconnected 09:40:51.655853 Received QUIT (on stdin) 09:40:51.656006 quits 09:40:51.656396 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY RETR 550 the file doesn't exist REPLY SIZE 500 Can't check for file existence Testnum 533 === End of file server.cmd === Start of file valgrind533 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind533 test 0532...[FTP RETR same file using reset handles between each transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind532 ./libtest/libtests lib526 ftp://127.0.0.1:37935/path/532 > log/24/stdout532 2> log/24/stderr532 532: protocol FAILED! There was no content at all in the file log/24/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/24/ dir after test 532 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/24/valgrind532 ./libtest/libtests lib526 ftp://127.0.0.1:37935/path/532 > log/24/stdout532 2> log/24/stderr532 === End of file commands.log === Start of file ftp_server.log 09:40:51.256265 ====> Client connect 09:40:51.258995 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.261296 < "USER anonymous" 09:40:51.263503 > "331 We are happy you popped in![CR][LF]" 09:40:51.264542 < "PASS ftp@example.com" 09:40:51.265414 > "230 Welcome you silly person[CR][LF]" 09:40:51.267587 < "PWD" 09:40:51.268065 > "257 "/" is current directory[CR][LF]" 09:40:51.270196 < "EPSV" 09:40:51.270466 ====> Passive DATA channel requested by client 09:40:51.270634 DATA sockfilt for passive data channel starting... 09:40:51.286475 DATA sockfilt for passive data channel started (pid 101444) 09:40:51.287660 DATA sockfilt for passive data channel listens on port 37365 09:40:51.288201 > "229 Entering Passive Mode (|||37365|)[LF]" 09:40:51.288459 Client has been notified that DATA conn will be accepted on port 37365 09:40:51.294929 Client connects to port 37365 09:40:51.295338 ====> Client established passive DATA connection on port 37365 09:40:51.296286 < "TYPE I" 09:40:51.296809 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.300090 < "SIZE verifiedserver" 09:40:51.300994 > "213 17[CR][LF]" 09:40:51.307200 < "RETR verifiedserver" 09:40:51.311922 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.312691 =====> Closing passive DATA connection... 09:40:51.313051 Server disconnects passive DATA connection 09:40:51.314710 Server disconnected passive DATA connection 09:40:51.315089 DATA sockfilt for passive data channel quits (pid 101444) 09:40:51.319159 DATA sockfilt for passive data channel quit (pid 101444) 09:40:51.319533 =====> Closed passive DATA connection 09:40:51.320196 > "226 File transfer complete[CR][LF]" 09:40:51.351558 < "QUIT" 09:40:51.353851 > "221 bye bye baby[CR][LF]" 09:40:51.358602 MAIN sockfilt said DISC 09:40:51.359014 ====> Client disconnected 09:40:51.359513 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.509139 ====> Client connect 09:40:51.511610 Received DATA (on stdin) 09:40:51.511765 > 160 bytes data, server => client 09:40:51.511956 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:51.512077 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:51.512158 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:51.514012 < 16 bytes data, client => server 09:40:51.514182 'USER anonymous\r\n' 09:40:51.515532 Received DATA (on stdin) 09:40:51.515814 > 33 bytes data, server => client 09:40:51.516005 '331 We are happy you popped in!\r\n' 09:40:51.516831 < 22 bytes data, client => server 09:40:51.516977 'PASS ftp@example.com\r\n' 09:40:51.518753 Received DATA (on stdin) 09:40:51.518909 > 30 bytes data, server => client 09:40:51.519416 '230 Welcome you silly person\r\n' 09:40:51.520156 < 5 bytes data, client => server 09:40:51.520290 'PWD\r\n' 09:40:51.522152 Received DATA (on stdin) 09:40:51.522297 > 30 bytes data, server => client 09:40:51.522380 '257 "/" is current directory\r\n' 09:40:51.523088 < 6 bytes data, client => server 09:40:51.523229 'EPSV\r\n' 09:40:51.542568 Received DATA (on stdin) 09:40:51.542725 > 38 bytes data, server => client 09:40:51.542814 '229 Entering Passive Mode (|||37365|)\n' 09:40:51.544888 < 8 bytes data, client => server 09:40:51.545062 'TYPE I\r\n' 09:40:51.550881 Received DATA (on stdin) 09:40:51.551027 > 33 bytes data, server => client 09:40:51.551122 '200 I modify TYPE as you wanted\r\n' 09:40:51.552675 < 21 bytes data, client => server 09:40:51.552840 'SIZE verifiedserver\r\n' 09:40:51.558631 Received DATA (on stdin) 09:40:51.558816 > 8 bytes data, server => client 09:40:51.558925 '213 17\r\n' 09:40:51.559678 < 21 bytes data, client => server 09:40:51.559835 'RETR verifiedserver\r\n' 09:40:51.561352 Received DATA (on stdin) 09:40:51.561583 > 29 bytes data, server => client 09:40:51.561785 '150 Binary junk (17 bytes).\r\n' 09:40:51.576596 Received DATA (on stdin) 09:40:51.576770 > 28 bytes data, server => client 09:40:51.576887 '226 File transfer complete\r\n' 09:40:51.604306 < 6 bytes data, client => server 09:40:51.604540 'QUIT\r\n' 09:40:51.606740 Received DATA (on stdin) 09:40:51.606907 > 18 bytes data, server => client 09:40:51.607098 '221 bye bye baby\r\n' 09:40:51.611592 ====> Client disconnect 09:40:51.613563 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.538531 Running IPv4 version 09:40:51.539125 Listening on port 37365 09:40:51.539607 Wrote pid 101444 to log/24/server/ftp_sockdata.pid 09:40:51.539849 Received PING (on stdin) 09:40:51.540729 Received PORT (on stdin) 09:40:51.545278 ====> Client connect 09:40:51.567019 Received DATA (on stdin) 09:40:51.567163 > 17 bytes data, server => client 09:40:51.567254 'WE ROOLZ: 77469\r\n' 09:40:51.567870 Received DISC (on stdin) 09:40:51.568055 ====> Client forcibly disconnected 09:40:51.569119 Received QUIT (on stdin) 09:40:51.569256 quits 09:40:51.569749 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 532 === End of file server.cmd === Start of file valgrind532 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind532 test 0529...[FTP PORT upload using multi interface (weird cleanup function sequence)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind529 ./libtest/libtests lib525 ftp://127.0.0.1:34373/path/529 log/28/upload529 > log/28/stdout529 2> log/28/stderr529 529: protocol FAILED! There was no content at all in the file log/28/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/28/ dir after test 529 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/28/valgrind529 ./libtest/libtests lib525 ftp://127.0.0.1:34373/path/529 log/28/upload529 > log/28/stdout529 2> log/28/stderr529 === End of file commands.log === Start of file ftp_server.log 09:40:51.450898 ====> Client connect 09:40:51.454980 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.457628 < "USER anonymous" 09:40:51.458484 > "331 We are happy you popped in![CR][LF]" 09:40:51.463111 < "PASS ftp@example.com" 09:40:51.465944 > "230 Welcome you silly person[CR][LF]" 09:40:51.468015 < "PWD" 09:40:51.468441 > "257 "/" is current directory[CR][LF]" 09:40:51.471661 < "EPSV" 09:40:51.472065 ====> Passive DATA channel requested by client 09:40:51.472287 DATA sockfilt for passive data channel starting... 09:40:51.500209 DATA sockfilt for passive data channel started (pid 101777) 09:40:51.501384 DATA sockfilt for passive data channel listens on port 45801 09:40:51.501991 > "229 Entering Passive Mode (|||45801|)[LF]" 09:40:51.502267 Client has been notified that DATA conn will be accepted on port 45801 09:40:51.505347 Client connects to port 45801 09:40:51.505664 ====> Client established passive DATA connection on port 45801 09:40:51.507655 < "TYPE I" 09:40:51.509945 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.513223 < "SIZE verifiedserver" 09:40:51.516010 > "213 17[CR][LF]" 09:40:51.517270 < "RETR verifiedserver" 09:40:51.517627 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.518370 =====> Closing passive DATA connection... 09:40:51.518577 Server disconnects passive DATA connection 09:40:51.521680 Server disconnected passive DATA connection 09:40:51.522049 DATA sockfilt for passive data channel quits (pid 101777) 09:40:51.525641 DATA sockfilt for passive data channel quit (pid 101777) 09:40:51.526056 =====> Closed passive DATA connection 09:40:51.527000 > "226 File transfer complete[CR][LF]" 09:40:51.563680 < "QUIT" 09:40:51.564180 > "221 bye bye baby[CR][LF]" 09:40:51.569379 MAIN sockfilt said DISC 09:40:51.573876 ====> Client disconnected 09:40:51.574435 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:50.703830 ====> Client connect 09:40:50.706961 Received DATA (on stdin) 09:40:50.707122 > 160 bytes data, server => client 09:40:50.709038 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:50.709180 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:50.709274 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:50.710191 < 16 bytes data, client => server 09:40:50.710341 'USER anonymous\r\n' 09:40:50.714706 Received DATA (on stdin) 09:40:50.714872 > 33 bytes data, server => client 09:40:50.714963 '331 We are happy you popped in!\r\n' 09:40:50.715959 < 22 bytes data, client => server 09:40:50.716100 'PASS ftp@example.com\r\n' 09:40:50.717214 Received DATA (on stdin) 09:40:50.717365 > 30 bytes data, server => client 09:40:50.720013 '230 Welcome you silly person\r\n' 09:40:50.721023 < 5 bytes data, client => server 09:40:50.721169 'PWD\r\n' 09:40:50.723551 Received DATA (on stdin) 09:40:50.723714 > 30 bytes data, server => client 09:40:50.723820 '257 "/" is current directory\r\n' 09:40:50.724612 < 6 bytes data, client => server 09:40:50.724763 'EPSV\r\n' 09:40:50.756571 Received DATA (on stdin) 09:40:50.756745 > 38 bytes data, server => client 09:40:50.756852 '229 Entering Passive Mode (|||45801|)\n' 09:40:50.758432 < 8 bytes data, client => server 09:40:50.758664 'TYPE I\r\n' 09:40:50.763989 Received DATA (on stdin) 09:40:50.764130 > 33 bytes data, server => client 09:40:50.764221 '200 I modify TYPE as you wanted\r\n' 09:40:50.766076 < 21 bytes data, client => server 09:40:50.766224 'SIZE verifiedserver\r\n' 09:40:50.768584 Received DATA (on stdin) 09:40:50.768748 > 8 bytes data, server => client 09:40:50.768940 '213 17\r\n' 09:40:50.770212 < 21 bytes data, client => server 09:40:50.770344 'RETR verifiedserver\r\n' 09:40:50.773404 Received DATA (on stdin) 09:40:50.773635 > 29 bytes data, server => client 09:40:50.773752 '150 Binary junk (17 bytes).\r\n' 09:40:50.780046 Received DATA (on stdin) 09:40:50.780187 > 28 bytes data, server => client 09:40:50.780375 '226 File transfer complete\r\n' 09:40:50.816611 < 6 bytes data, client => server 09:40:50.816770 'QUIT\r\n' 09:40:50.818683 Received DATA (on stdin) 09:40:50.818914 > 18 bytes data, server => client 09:40:50.819005 '221 bye bye baby\r\n' 09:40:50.822759 ====> Client disconnect 09:40:50.823419 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.749643 Running IPv4 version 09:40:51.750371 Listening on port 45801 09:40:51.753108 Wrote pid 101777 to log/28/server/ftp_sockdata.pid 09:40:51.753279 Received PING (on stdin) 09:40:51.754404 Received PORT (on stdin) 09:40:51.758751 ====> Client connect 09:40:51.772554 Received DATA (on stdin) 09:40:51.772725 > 17 bytes data, server => client 09:40:51.772825 'WE ROOLZ: 77437\r\n' 09:40:51.773127 Received DISC (on stdin) 09:40:51.773332 ====> Client forcibly disconnected 09:40:51.777657 Received QUIT (on stdin) 09:40:51.777819 quits 09:40:51.778214 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 529 === End of file server.cmd === Start of file upload529 Moooooooooooo upload this === End of file upload529 === Start of file valgrind529 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind529 test 0566...[HTTP GET with CURLINFO_CONTENT_LENGTH_DOWNLOAD and 0 bytes transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind566 ./libtest/libtests lib566 http://127.0.0.1:45607/566 log/32/ip566 > log/32/stdout566 2> log/32/stderr566 566: protocol FAILED! There was no content at all in the file log/32/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/32/ dir after test 566 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/32/valgrind566 ./libtest/libtests lib566 http://127.0.0.1:45607/566 log/32/ip566 > log/32/stdout566 2> log/32/stderr566 === End of file commands.log === Start of file http_server.log 09:40:51.952000 ====> Client connect 09:40:51.952297 accept_connection 3 returned 4 09:40:51.952605 accept_connection 3 returned 0 09:40:51.953572 Read 93 bytes 09:40:51.953708 Process 93 bytes request 09:40:51.953795 Got request: GET /verifiedserver HTTP/1.1 09:40:51.953875 Are-we-friendly question received 09:40:51.954091 Wrote request (93 bytes) input to log/32/server.input 09:40:51.954271 Identifying ourselves as friends 09:40:51.961578 Response sent (56 bytes) and written to log/32/server.response 09:40:51.961750 special request received, no persistency 09:40:51.961842 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45607... * Connected to 127.0.0.1 (127.0.0.1) port 45607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45607 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73778 === End of file http_verify.out === Start of file server.cmd Testnum 566 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73778 === End of file server.response === Start of file valgrind566 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind566 test 0524...[FTP upload with target URL ending with slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind524 ./libtest/libtests lib524 ftp://127.0.0.1:45965/path/to/ > log/36/stdout524 2> log/36/stderr524 524: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 524 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind524 ./libtest/libtests lib524 ftp://127.0.0.1:45965/path/to/ > log/36/stdout524 2> log/36/stderr524 === End of file commands.log === Start of file ftp_server.log 09:40:51.123244 ====> Client connect 09:40:51.131399 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.135441 < "USER anonymous" 09:40:51.136291 > "331 We are happy you popped in![CR][LF]" 09:40:51.138286 < "PASS ftp@example.com" 09:40:51.138707 > "230 Welcome you silly person[CR][LF]" 09:40:51.140713 < "PWD" 09:40:51.142268 > "257 "/" is current directory[CR][LF]" 09:40:51.144008 < "EPSV" 09:40:51.144323 ====> Passive DATA channel requested by client 09:40:51.144517 DATA sockfilt for passive data channel starting... 09:40:51.201971 DATA sockfilt for passive data channel started (pid 101160) 09:40:51.205569 DATA sockfilt for passive data channel listens on port 33665 09:40:51.207215 > "229 Entering Passive Mode (|||33665|)[LF]" 09:40:51.207477 Client has been notified that DATA conn will be accepted on port 33665 09:40:51.209484 Client connects to port 33665 09:40:51.209888 ====> Client established passive DATA connection on port 33665 09:40:51.210836 < "TYPE I" 09:40:51.211278 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.214343 < "SIZE verifiedserver" 09:40:51.214857 > "213 17[CR][LF]" 09:40:51.217603 < "RETR verifiedserver" 09:40:51.218138 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.220195 =====> Closing passive DATA connection... 09:40:51.220422 Server disconnects passive DATA connection 09:40:51.221859 Server disconnected passive DATA connection 09:40:51.222118 DATA sockfilt for passive data channel quits (pid 101160) 09:40:51.224121 DATA sockfilt for passive data channel quit (pid 101160) 09:40:51.224441 =====> Closed passive DATA connection 09:40:51.224855 > "226 File transfer complete[CR][LF]" 09:40:51.263495 < "QUIT" 09:40:51.266077 > "221 bye bye baby[CR][LF]" 09:40:51.274097 MAIN sockfilt said DISC 09:40:51.274410 ====> Client disconnected 09:40:51.274946 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.375626 ====> Client connect 09:40:51.379089 Received DATA (on stdin) 09:40:51.379252 > 160 bytes data, server => client 09:40:51.386060 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:51.386336 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:51.386629 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:51.387851 < 16 bytes data, client => server 09:40:51.388165 'USER anonymous\r\n' 09:40:51.389613 Received DATA (on stdin) 09:40:51.389771 > 33 bytes data, server => client 09:40:51.390294 '331 We are happy you popped in!\r\n' 09:40:51.391136 < 22 bytes data, client => server 09:40:51.391280 'PASS ftp@example.com\r\n' 09:40:51.392880 Received DATA (on stdin) 09:40:51.393028 > 30 bytes data, server => client 09:40:51.393119 '230 Welcome you silly person\r\n' 09:40:51.393735 < 5 bytes data, client => server 09:40:51.393863 'PWD\r\n' 09:40:51.394876 Received DATA (on stdin) 09:40:51.395007 > 30 bytes data, server => client 09:40:51.395167 '257 "/" is current directory\r\n' 09:40:51.396837 < 6 bytes data, client => server 09:40:51.396980 'EPSV\r\n' 09:40:51.460376 Received DATA (on stdin) 09:40:51.460624 > 38 bytes data, server => client 09:40:51.461529 '229 Entering Passive Mode (|||33665|)\n' 09:40:51.463051 < 8 bytes data, client => server 09:40:51.463188 'TYPE I\r\n' 09:40:51.465016 Received DATA (on stdin) 09:40:51.465167 > 33 bytes data, server => client 09:40:51.465257 '200 I modify TYPE as you wanted\r\n' 09:40:51.465867 < 21 bytes data, client => server 09:40:51.466003 'SIZE verifiedserver\r\n' 09:40:51.469692 Received DATA (on stdin) 09:40:51.469833 > 8 bytes data, server => client 09:40:51.469907 '213 17\r\n' 09:40:51.470485 < 21 bytes data, client => server 09:40:51.470616 'RETR verifiedserver\r\n' 09:40:51.472537 Received DATA (on stdin) 09:40:51.472671 > 29 bytes data, server => client 09:40:51.472766 '150 Binary junk (17 bytes).\r\n' 09:40:51.478867 Received DATA (on stdin) 09:40:51.478982 > 28 bytes data, server => client 09:40:51.479059 '226 File transfer complete\r\n' 09:40:51.515324 < 6 bytes data, client => server 09:40:51.515617 'QUIT\r\n' 09:40:51.520135 Received DATA (on stdin) 09:40:51.520267 > 18 bytes data, server => client 09:40:51.520356 '221 bye bye baby\r\n' 09:40:51.523826 ====> Client disconnect 09:40:51.528942 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.454065 Running IPv4 version 09:40:51.454694 Listening on port 33665 09:40:51.455094 Wrote pid 101160 to log/36/server/ftp_sockdata.pid 09:40:51.455285 Received PING (on stdin) 09:40:51.458621 Received PORT (on stdin) 09:40:51.462833 ====> Client connect 09:40:51.472192 Received DATA (on stdin) 09:40:51.472332 > 17 bytes data, server => client 09:40:51.473094 'WE ROOLZ: 82698\r\n' 09:40:51.474368 Received DISC (on stdin) 09:40:51.474584 ====> Client forcibly disconnected 09:40:51.476092 Received QUIT (on stdin) 09:40:51.476215 quits 09:40:51.476725 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 524 === End of file server.cmd === Start of file valgrind524 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind524 test 0503...[simple multi http:// through proxytunnel with authentication info] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind503 ./libtest/libtests lib503 http://machine.503:41267/503 127.0.0.1:44417 > log/43/stdout503 2> log/43/stderr503 503: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 503 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind503 ./libtest/libtests lib503 http://machine.503:41267/503 127.0.0.1:44417 > log/43/stdout503 2> log/43/stderr503 === End of file commands.log === Start of file http2_server.log 09:40:51.299842 ====> Client connect 09:40:51.300237 accept_connection 3 returned 4 09:40:51.303401 accept_connection 3 returned 0 09:40:51.303693 Read 93 bytes 09:40:51.303810 Process 93 bytes request 09:40:51.303916 Got request: GET /verifiedserver HTTP/1.1 09:40:51.304010 Are-we-friendly question received 09:40:51.304264 Wrote request (93 bytes) input to log/43/proxy.input 09:40:51.304596 Identifying ourselves as friends 09:40:51.305434 Response sent (56 bytes) and written to log/43/proxy.response 09:40:51.308702 special request received, no persistency 09:40:51.308789 ====> Client disconnect 0 === End of file http2_server.log === Start of file http2_verify.log * Trying 127.0.0.1:44417... * Connected to 127.0.0.1 (127.0.0.1) port 44417 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44417 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http2_verify.log === Start of file http2_verify.out WE ROOLZ: 77906 === End of file http2_verify.out === Start of file http_server.log 09:40:50.847117 ====> Client connect 09:40:50.847636 accept_connection 3 returned 4 09:40:50.847850 accept_connection 3 returned 0 09:40:50.847987 Read 93 bytes 09:40:50.848099 Process 93 bytes request 09:40:50.848199 Got request: GET /verifiedserver HTTP/1.1 09:40:50.848302 Are-we-friendly question received 09:40:50.848661 Wrote request (93 bytes) input to log/43/server.input 09:40:50.848976 Identifying ourselves as friends 09:40:50.857152 Response sent (56 bytes) and written to log/43/server.response 09:40:50.857302 special request received, no persistency 09:40:50.857394 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file proxy.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 77906 === End of file proxy.response === Start of file server.cmd connection-monitor Testnum 503 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file test503.txt foo bar bar foo moo === End of file test503.txt === Start of file valgrind503 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind503 test 0551...[HTTP proxy auth Digest with POST data from read callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind551 ./libtest/libtests lib547 http://test.remote.example.com/path/551 http://127.0.0.1:34239 s1lly:pers0n > log/45/stdout551 2> log/45/stderr551 551: protocol FAILED! There was no content at all in the file log/45/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/45/ dir after test 551 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind551 ./libtest/libtests lib547 http://test.remote.example.com/path/551 http://127.0.0.1:34239 s1lly:pers0n > log/45/stdout551 2> log/45/stderr551 === End of file commands.log === Start of file http_server.log 09:40:50.674887 ====> Client connect 09:40:50.675142 accept_connection 3 returned 4 09:40:50.675299 accept_connection 3 returned 0 09:40:50.675428 Read 93 bytes 09:40:50.675653 Process 93 bytes request 09:40:50.675739 Got request: GET /verifiedserver HTTP/1.1 09:40:50.675816 Are-we-friendly question received 09:40:50.676046 Wrote request (93 bytes) input to log/45/server.input 09:40:50.676244 Identifying ourselves as friends 09:40:50.676836 Response sent (56 bytes) and written to log/45/server.response 09:40:50.676949 special request received, no persistency 09:40:50.677019 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34239... * Connected to 127.0.0.1 (127.0.0.1) port 34239 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34239 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 75108 === End of file http_verify.out === Start of file server.cmd Testnum 551 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 75108 === End of file server.response === Start of file valgrind551 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind551 test 0513...[send HTTP POST using read callback that returns CURL_READFUNC_ABORT] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind513 ./libtest/libtests lib513 http://127.0.0.1:34903/513 > log/51/stdout513 2> log/51/stderr513 libtests returned 1, when expecting 42 513: exit FAILED == Contents of files in the log/51/ dir after test 513 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind513 ./libtest/libtests lib513 http://127.0.0.1:34903/513 > log/51/stdout513 2> log/51/stderr513 === End of file commands.log === Start of file http_server.log 09:40:50.883676 ====> Client connect 09:40:50.884007 accept_connection 3 returned 4 09:40:50.884183 accept_connection 3 returned 0 09:40:50.885118 Read 93 bytes 09:40:50.885271 Process 93 bytes request 09:40:50.885416 Got request: GET /verifiedserver HTTP/1.1 09:40:50.885810 Are-we-friendly question received 09:40:50.886321 Wrote request (93 bytes) input to log/51/server.input 09:40:50.886713 Identifying ourselves as friends 09:40:50.888524 Response sent (56 bytes) and written to log/51/server.response 09:40:50.888655 special request received, no persistency 09:40:50.888732 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34903... * Connected to 127.0.0.1 (127.0.0.1) port 34903 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34903 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73763 === End of file http_verify.out === Start of file server.cmd Testnum 513 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73763 === End of file server.response === Start of file valgrind513 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind513 test 0565...[send HTTP POST using read callback, chunked transfer-encoding and Digest] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind565 ./libtest/libtests lib510 http://127.0.0.1:46607/565 > log/9/stdout565 2> log/9/stderr565 565: protocol FAILED! There was no content at all in the file log/9/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/9/ dir after test 565 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind565 ./libtest/libtests lib510 http://127.0.0.1:46607/565 > log/9/stdout565 2> log/9/stderr565 === End of file commands.log === Start of file http_server.log 09:40:52.065126 ====> Client connect 09:40:52.065873 accept_connection 3 returned 4 09:40:52.066063 accept_connection 3 returned 0 09:40:52.066217 Read 93 bytes 09:40:52.066325 Process 93 bytes request 09:40:52.066432 Got request: GET /verifiedserver HTTP/1.1 09:40:52.066611 Are-we-friendly question received 09:40:52.066847 Wrote request (93 bytes) input to log/9/server.input 09:40:52.067028 Identifying ourselves as friends 09:40:52.067898 Response sent (56 bytes) and written to log/9/server.response 09:40:52.068028 special request received, no persistency 09:40:52.068133 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46607... * Connected to 127.0.0.1 (127.0.0.1) port 46607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46607 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73797 === End of file http_verify.out === Start of file server.cmd Testnum 565 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73797 === End of file server.response === Start of file valgrind565 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind565 test 0559...[use tiny CURLOPT_BUFFERSIZE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind559 ./libtest/libtests lib559 http://127.0.0.1:36913/559 > log/10/stdout559 2> log/10/stderr559 559: data FAILED: --- log/10/check-expected 2025-07-18 09:40:53.341630409 +0000 +++ log/10/check-generated 2025-07-18 09:40:53.340601790 +0000 @@ -1,12 +0,0 @@ -HTTP/1.1 200 OK[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Server: test-server/fake[LF] -Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[LF] -ETag: "21025-dc7-39462498"[LF] -Accept-Ranges: bytes[LF] -Content-Length: 2049[LF] -Connection: close[LF] -Content-Type: text/html[LF] -Silly-header: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF] -[LF] -ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF] == Contents of files in the log/10/ dir after test 559 === Start of file check-expected HTTP/1.1 200 OK[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Server: test-server/fake[LF] Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[LF] ETag: "21025-dc7-39462498"[LF] Accept-Ranges: bytes[LF] Content-Length: 2049[LF] Connection: close[LF] Content-Type: text/html[LF] Silly-header: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF] [LF] ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind559 ./libtest/libtests lib559 http://127.0.0.1:36913/559 > log/10/stdout559 2> log/10/stderr559 === End of file commands.log === Start of file http_server.log 09:40:51.887877 ====> Client connect 09:40:51.888227 accept_connection 3 returned 4 09:40:51.888436 accept_connection 3 returned 0 09:40:51.888750 Read 93 bytes 09:40:51.888862 Process 93 bytes request 09:40:51.888956 Got request: GET /verifiedserver HTTP/1.1 09:40:51.889043 Are-we-friendly question received 09:40:51.889272 Wrote request (93 bytes) input to log/10/server.input 09:40:51.893652 Identifying ourselves as friends 09:40:51.894645 Response sent (56 bytes) and written to log/10/server.response 09:40:51.894776 special request received, no persistency 09:40:51.894861 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36913... * Connected to 127.0.0.1 (127.0.0.1) port 36913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36913 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73804 === End of file http_verify.out === Start of file server.cmd Testnum 559 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73804 === End of file server.response === Start of file valgrind559 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind559 test 0539...[Two FTP fetches using different CURLOPT_FTP_FILEMETHOD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind539 ./libtest/libtests lib539 ftp://127.0.0.1:34087/path/to/the/file/539 ftp://127.0.0.1:34087/path/to/the/file/5390001 > log/13/stdout539 2> log/13/stderr539 539: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 539 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind539 ./libtest/libtests lib539 ftp://127.0.0.1:34087/path/to/the/file/539 ftp://127.0.0.1:34087/path/to/the/file/5390001 > log/13/stdout539 2> log/13/stderr539 === End of file commands.log === Start of file ftp_server.log 09:40:51.394397 ====> Client connect 09:40:51.395629 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.404695 < "USER anonymous" 09:40:51.405165 > "331 We are happy you popped in![CR][LF]" 09:40:51.410218 < "PASS ftp@example.com" 09:40:51.410581 > "230 Welcome you silly person[CR][LF]" 09:40:51.412390 < "PWD" 09:40:51.412901 > "257 "/" is current directory[CR][LF]" 09:40:51.415832 < "EPSV" 09:40:51.416138 ====> Passive DATA channel requested by client 09:40:51.416311 DATA sockfilt for passive data channel starting... 09:40:51.448880 DATA sockfilt for passive data channel started (pid 101668) 09:40:51.450010 DATA sockfilt for passive data channel listens on port 40297 09:40:51.450452 > "229 Entering Passive Mode (|||40297|)[LF]" 09:40:51.450716 Client has been notified that DATA conn will be accepted on port 40297 09:40:51.460531 Client connects to port 40297 09:40:51.460931 ====> Client established passive DATA connection on port 40297 09:40:51.465999 < "TYPE I" 09:40:51.466439 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.471859 < "SIZE verifiedserver" 09:40:51.475957 > "213 17[CR][LF]" 09:40:51.480658 < "RETR verifiedserver" 09:40:51.482204 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.488596 =====> Closing passive DATA connection... 09:40:51.488944 Server disconnects passive DATA connection 09:40:51.495641 Server disconnected passive DATA connection 09:40:51.496394 DATA sockfilt for passive data channel quits (pid 101668) 09:40:51.506972 DATA sockfilt for passive data channel quit (pid 101668) 09:40:51.507236 =====> Closed passive DATA connection 09:40:51.507544 > "226 File transfer complete[CR][LF]" 09:40:51.529484 < "QUIT" 09:40:51.530574 > "221 bye bye baby[CR][LF]" 09:40:51.541885 MAIN sockfilt said DISC 09:40:51.542242 ====> Client disconnected 09:40:51.542970 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:50.647647 ====> Client connect 09:40:50.652608 Received DATA (on stdin) 09:40:50.652805 > 160 bytes data, server => client 09:40:50.653019 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:50.653114 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:50.653199 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:50.660548 < 16 bytes data, client => server 09:40:50.660717 'USER anonymous\r\n' 09:40:50.660810 Received DATA (on stdin) 09:40:50.660883 > 33 bytes data, server => client 09:40:50.660964 '331 We are happy you popped in!\r\n' 09:40:50.661624 < 22 bytes data, client => server 09:40:50.661760 'PASS ftp@example.com\r\n' 09:40:50.664696 Received DATA (on stdin) 09:40:50.664821 > 30 bytes data, server => client 09:40:50.664901 '230 Welcome you silly person\r\n' 09:40:50.666896 < 5 bytes data, client => server 09:40:50.667027 'PWD\r\n' 09:40:50.667122 Received DATA (on stdin) 09:40:50.667203 > 30 bytes data, server => client 09:40:50.667277 '257 "/" is current directory\r\n' 09:40:50.667974 < 6 bytes data, client => server 09:40:50.668114 'EPSV\r\n' 09:40:50.707564 Received DATA (on stdin) 09:40:50.707746 > 38 bytes data, server => client 09:40:50.707838 '229 Entering Passive Mode (|||40297|)\n' 09:40:50.713596 < 8 bytes data, client => server 09:40:50.713751 'TYPE I\r\n' 09:40:50.723564 Received DATA (on stdin) 09:40:50.723751 > 33 bytes data, server => client 09:40:50.723852 '200 I modify TYPE as you wanted\r\n' 09:40:50.724718 < 21 bytes data, client => server 09:40:50.724873 'SIZE verifiedserver\r\n' 09:40:50.725995 Received DATA (on stdin) 09:40:50.726141 > 8 bytes data, server => client 09:40:50.729999 '213 17\r\n' 09:40:50.733615 < 21 bytes data, client => server 09:40:50.733776 'RETR verifiedserver\r\n' 09:40:50.734857 Received DATA (on stdin) 09:40:50.735002 > 29 bytes data, server => client 09:40:50.735180 '150 Binary junk (17 bytes).\r\n' 09:40:50.761648 Received DATA (on stdin) 09:40:50.761790 > 28 bytes data, server => client 09:40:50.761875 '226 File transfer complete\r\n' 09:40:50.782225 < 6 bytes data, client => server 09:40:50.782392 'QUIT\r\n' 09:40:50.783929 Received DATA (on stdin) 09:40:50.784071 > 18 bytes data, server => client 09:40:50.786540 '221 bye bye baby\r\n' 09:40:50.790326 ====> Client disconnect 09:40:50.797020 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.701079 Running IPv4 version 09:40:51.701710 Listening on port 40297 09:40:51.702069 Wrote pid 101668 to log/13/server/ftp_sockdata.pid 09:40:51.702224 Received PING (on stdin) 09:40:51.703018 Received PORT (on stdin) 09:40:51.713952 ====> Client connect 09:40:51.736559 Received DATA (on stdin) 09:40:51.736793 > 17 bytes data, server => client 09:40:51.746632 'WE ROOLZ: 79551\r\n' 09:40:51.747328 Received DISC (on stdin) 09:40:51.747575 ====> Client forcibly disconnected 09:40:51.754701 Received QUIT (on stdin) 09:40:51.755101 quits 09:40:51.755813 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 539 === End of file server.cmd === Start of file valgrind539 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind539 test 0556...[send and recv HTTP] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind556 ./libtest/libtests lib556 http://127.0.0.1:44383 > log/17/stdout556 2> log/17/stderr556 556: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 556 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind556 ./libtest/libtests lib556 http://127.0.0.1:44383 > log/17/stdout556 2> log/17/stderr556 === End of file commands.log === Start of file http_server.log 09:40:51.915808 ====> Client connect 09:40:51.916115 accept_connection 3 returned 4 09:40:51.916286 accept_connection 3 returned 0 09:40:51.917207 Read 93 bytes 09:40:51.917348 Process 93 bytes request 09:40:51.917504 Got request: GET /verifiedserver HTTP/1.1 09:40:51.917600 Are-we-friendly question received 09:40:51.917849 Wrote request (93 bytes) input to log/17/server.input 09:40:51.918032 Identifying ourselves as friends 09:40:51.919799 Response sent (56 bytes) and written to log/17/server.response 09:40:51.919914 special request received, no persistency 09:40:51.919980 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44383... * Connected to 127.0.0.1 (127.0.0.1) port 44383 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44383 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73792 === End of file http_verify.out === Start of file server.cmd Testnum 556 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73792 === End of file server.response === Start of file valgrind556 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind556 test 0555...[HTTP proxy auth NTLM with POST data from read callback multi-if] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind555 ./libtest/libtests lib555 http://test.remote.example.com/path/555 http://127.0.0.1:41285 testuser:testpass > log/18/stdout555 2> log/18/stderr555 555: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 555 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind555 ./libtest/libtests lib555 http://test.remote.example.com/path/555 http://127.0.0.1:41285 testuser:testpass > log/18/stdout555 2> log/18/stderr555 === End of file commands.log === Start of file http_server.log 09:40:51.819048 ====> Client connect 09:40:51.819374 accept_connection 3 returned 4 09:40:51.819706 accept_connection 3 returned 0 09:40:51.821073 Read 93 bytes 09:40:51.821309 Process 93 bytes request 09:40:51.821414 Got request: GET /verifiedserver HTTP/1.1 09:40:51.821578 Are-we-friendly question received 09:40:51.821872 Wrote request (93 bytes) input to log/18/server.input 09:40:51.822153 Identifying ourselves as friends 09:40:51.822809 Response sent (56 bytes) and written to log/18/server.response 09:40:51.822910 special request received, no persistency 09:40:51.822975 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41285... * Connected to 127.0.0.1 (127.0.0.1) port 41285 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41285 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73790 === End of file http_verify.out === Start of file server.cmd Testnum 555 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73790 === End of file server.response === Start of file valgrind555 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: vCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind567 ./libtest/libtests lib567 rtsp://127.0.0.1:33305/567 > log/4/stdout567 2> log/4/stderr567 algrind: Cannot continue -- exiting now. Sorry. === End of file valgrind555 test 0553...[HTTP post with huge request headers and post data from callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind553 ./libtest/libtests lib553 http://127.0.0.1:43913/path/553 > log/30/stdout553 2> log/30/stderr553 553: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 553 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind553 ./libtest/libtests lib553 http://127.0.0.1:43913/path/553 > log/30/stdout553 2> log/30/stderr553 === End of file commands.log === Start of file http_server.log 09:40:51.884144 ====> Client connect 09:40:51.884628 accept_connection 3 returned 4 09:40:51.884834 accept_connection 3 returned 0 09:40:51.884983 Read 93 bytes 09:40:51.885097 Process 93 bytes request 09:40:51.885207 Got request: GET /verifiedserver HTTP/1.1 09:40:51.885302 Are-we-friendly question received 09:40:51.885649 Wrote request (93 bytes) input to log/30/server.input 09:40:51.885897 Identifying ourselves as friends 09:40:51.886799 Response sent (56 bytes) and written to log/30/server.response 09:40:51.886947 special request received, no persistency 09:40:51.887058 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43913... * Connected to 127.0.0.1 (127.0.0.1) port 43913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43913 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73779 === End of file http_verify.out === Start of file server.cmd Testnum 553 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73779 === End of file server.response === Start of file valgrind553 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind553 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/31/server/ftp_server.pid" --logfile "log/31/ftp_server.log" --logdir "log/31" --portfile "log/31/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 40969 (log/31/server/ftp_server.port) RUN: FTP server is PID 100730 port 40969 * pid ftp => 100730 100730 test 0527...[FTP RETR same file using different handles but same connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind527 ./libtest/libtests lib526 ftp://127.0.0.1:40969/path/527 > log/31/stdout527 2> log/31/stderr527 527: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 527 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind527 ./libtest/libtests lib526 ftp://127.0.0.1:40969/path/527 > log/31/stdout527 2> log/31/stderr527 === End of file commands.log === Start of file ftp_server.log 09:40:51.294016 FTP server listens on port IPv4/40969 09:40:51.298043 logged pid 100730 in log/31/server/ftp_server.pid 09:40:51.298335 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.537425 Running IPv4 version 09:40:51.545112 Listening on port 40969 09:40:51.545711 Wrote pid 101433 to log/31/server/ftp_sockctrl.pid 09:40:51.546064 Wrote port 40969 to log/31/server/ftp_server.port 09:40:51.546223 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 527 === End of file server.cmd === Start of file valgrind527 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind527 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/33/server/ftp_server.pid" --logfile "log/33/ftp_server.log" --logdir "log/33" --portfile "log/33/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 36895 (log/33/server/ftp_server.port) RUN: FTP server is PID 100684 port 36895 * pid ftp => 100684 100684 test 0526...[FTP RETR same file using different handles but same connection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind526 ./libtest/libtests lib526 ftp://127.0.0.1:36895/path/526 > log/33/stdout526 2> log/33/stderr526 526: protocol FAILED! There was no content at all in the file log/33/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/33/ dir after test 526 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind526 ./libtest/libtests lib526 ftp://127.0.0.1:36895/path/526 > log/33/stdout526 2> log/33/stderr526 === End of file commands.log === Start of file ftp_server.log 09:40:51.338302 FTP server listens on port IPv4/36895 09:40:51.339363 logged pid 100684 in log/33/server/ftp_server.pid 09:40:51.339619 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.585666 Running IPv4 version 09:40:51.586243 Listening on port 36895 09:40:51.590806 Wrote pid 101498 to log/33/server/ftp_sockctrl.pid 09:40:51.591129 Wrote port 36895 to log/33/server/ftp_server.port 09:40:51.591302 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 526 === End of file server.cmd === Start of file valgrind526 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind526 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/35/server/ftp_server.pid" --logfile "log/35/ftp_server.log" --logdir "log/35" --portfile "log/35/server/ftp_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 39447 (log/35/server/ftp_server.port) RUN: FTP server is PID 100686 port 39447 * pid ftp => 100686 100686 test 0525...[FTP PORT upload using multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind525 ./libtest/libtests lib525 ftp://127.0.0.1:39447/path/525 log/35/upload525 > log/35/stdout525 2> log/35/stderr525 525: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 525 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind525 ./libtest/libtests lib525 ftp://127.0.0.1:39447/path/525 log/35/upload525 > log/35/stdout525 2> log/35/stderr525 === End of file commands.log === Start of file ftp_server.log 09:40:51.486157 FTP server listens on port IPv4/39447 09:40:51.487071 logged pid 100686 in log/35/server/ftp_server.pid 09:40:51.487319 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.737771 Running IPv4 version 09:40:51.738293 Listening on port 39447 09:40:51.738785 Wrote pid 101771 to log/35/server/ftp_sockctrl.pid 09:40:51.739085 Wrote port 39447 to log/35/server/ftp_server.port 09:40:51.739219 Received PING (on stdin) === End of file ftp_sockctrl.log === Start of file server.cmd Testnum 525 === End of file server.cmd === Start of file upload525 Moooooooooooo upload this === End of file upload525 === Start of file valgrind525 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind525 test 0554...[HTTP multi-part formpost using read callback for the file part] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind554 ./libtest/libtests lib554 http://127.0.0.1:42899/554 > log/39/stdout554 2> log/39/stderr554 554: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 554 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind554 ./libtest/libtests lib554 http://127.0.0.1:42899/554 > log/39/stdout554 2> log/39/stderr554 === End of file commands.log === Start of file http_server.log 09:40:51.856129 ====> Client connect 09:40:51.856400 accept_connection 3 returned 4 09:40:51.856710 accept_connection 3 returned 0 09:40:51.856847 Read 93 bytes 09:40:51.856923 Process 93 bytes request 09:40:51.857061 Got request: GET /verifiedserver HTTP/1.1 09:40:51.857198 Are-we-friendly question received 09:40:51.857665 Wrote request (93 bytes) input to log/39/server.input 09:40:51.857852 Identifying ourselves as friends 09:40:51.858608 Response sent (56 bytes) and written to log/39/server.response 09:40:51.858713 special request received, no persistency 09:40:51.858775 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 554 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind554 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind554 test 0552...[HTTP proxy auth Digest with 70K POST data from read callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind552 ./libtest/libtests lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:34655/ > log/44/stdout552 2> log/44/stderr552 552: protocol FAILED! There was no content at all in the file log/44/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/44/ dir after test 552 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/44/valgrind552 ./libtest/libtests lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:34655/ > log/44/stdout552 2> log/44/stderr552 === End of file commands.log === Start of file http_server.log 09:40:51.681246 ====> Client connect 09:40:51.681725 accept_connection 3 returned 4 09:40:51.683102 accept_connection 3 returned 0 09:40:51.683260 Read 93 bytes 09:40:51.683358 Process 93 bytes request 09:40:51.683552 Got request: GET /verifiedserver HTTP/1.1 09:40:51.683664 Are-we-friendly question received 09:40:51.683904 Wrote request (93 bytes) input to log/44/server.input 09:40:51.684093 Identifying ourselves as friends 09:40:51.684893 Response sent (56 bytes) and written to log/44/server.response 09:40:51.685013 special request received, no persistency 09:40:51.685090 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34655... * Connected to 127.0.0.1 (127.0.0.1) port 34655 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34655 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73766 === End of file http_verify.out === Start of file server.cmd Testnum 552 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73766 === End of file server.response === Start of file valgrind552 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind552 test 0514...[First set options to POST and then to make HEAD] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind514 ./libtest/libtests lib514 http://127.0.0.1:42667/514 > log/49/stdout514 2> log/49/stderr514 514: protocol FAILED! There was no content at all in the file log/49/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/49/ dir after test 514 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/49/valgrind514 ./libtest/libtests lib514 http://127.0.0.1:42667/514 > log/49/stdout514 2> log/49/stderr514 === End of file commands.log === Start of file http_server.log 09:40:51.018731 ====> Client connect 09:40:51.019105 accept_connection 3 returned 4 09:40:51.019289 accept_connection 3 returned 0 09:40:51.019433 Read 93 bytes 09:40:51.019645 Process 93 bytes request 09:40:51.019747 Got request: GET /verifiedserver HTTP/1.1 09:40:51.019834 Are-we-friendly question received 09:40:51.020111 Wrote request (93 bytes) input to log/49/server.input 09:40:51.020376 Identifying ourselves as friends 09:40:51.025763 Response sent (56 bytes) and written to log/49/server.response 09:40:51.025905 special request received, no persistency 09:40:51.026020 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42667... * Connected to 127.0.0.1 (127.0.0.1) port 42667 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42667 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73760 === End of file http_verify.out === Start of file server.cmd Testnum 514 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73760 === End of file server.response === Start of file valgrind514 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind514 test 0550...[FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE and ASCII transfer] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind550 ./libtest/libtests lib549 ftp://www.example.com/moo/550 http://127.0.0.1:34639 ascii > log/53/stdout550 2> log/53/stderr550 550: stdout FAILED: --- log/53/check-expected 2025-07-18 09:40:53.555490961 +0000 +++ log/53/check-generated 2025-07-18 09:40:53.554601682 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/53/ dir after test 550 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind550 ./libtest/libtests lib549 ftp://www.example.com/moo/550 http://127.0.0.1:34639 ascii > log/53/stdout550 2> log/53/stderr550 === End of file commands.log === Start of file http_server.log 09:40:51.685403 ====> Client connect 09:40:51.685858 accept_connection 3 returned 4 09:40:51.686042 accept_connection 3 returned 0 09:40:51.686752 Read 93 bytes 09:40:51.686899 Process 93 bytes request 09:40:51.686983 Got request: GET /verifiedserver HTTP/1.1 09:40:51.687076 Are-we-friendly question received 09:40:51.687326 Wrote request (93 bytes) input to log/53/server.input 09:40:51.687612 Identifying ourselves as friends 09:40:51.688159 Response sent (56 bytes) and written to log/53/server.response 09:40:51.688288 special request received, no persistency 09:40:51.688354 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34639... * Connected to 127.0.0.1 (127.0.0.1) port 34639 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34639 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73761 === End of file http_verify.out === Start of file server.cmd Testnum 550 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73761 === End of file server.response === Start of file valgrind550 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind550 test 0549...[FTP RETR over proxy with CURLOPT_PROXY_TRANSFER_MODE] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind549 ./libtest/libtests lib549 ftp://www.example.com/moo/549 http://127.0.0.1:35945 > log/57/stdout549 2> log/57/stderr549 549: stdout FAILED: --- log/57/check-expected 2025-07-18 09:40:53.608704074 +0000 +++ log/57/check-generated 2025-07-18 09:40:53.607601655 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/57/ dir after test 549 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind549 ./libtest/libtests lib549 ftp://www.example.com/moo/549 http://127.0.0.1:35945 > log/57/stdout549 2> log/57/stderr549 === End of file commands.log === Start of file http_server.log 09:40:51.813030 ====> Client connect 09:40:51.813390 accept_connection 3 returned 4 09:40:51.813758 accept_connection 3 returned 0 09:40:51.813924 Read 93 bytes 09:40:51.814032 Process 93 bytes request 09:40:51.814150 Got request: GET /verifiedserver HTTP/1.1 09:40:51.814251 Are-we-friendly question received 09:40:51.814621 Wrote request (93 bytes) input to log/57/server.input 09:40:51.814855 Identifying ourselves as friends 09:40:51.822762 Response sent (56 bytes) and written to log/57/server.response 09:40:51.822912 special request received, no persistency 09:40:51.823005 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35945... * Connected to 127.0.0.1 (127.0.0.1) port 35945 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35945 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73753 === End of file http_verify.out === Start of file server.cmd Testnum 549 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73753 === End of file server.response === Start of file valgrind549 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind549 setenv ftp_proxy = http://127.0.0.1:46727/ test 0563...[FTP type=A URL and CURLOPT_PORT set and proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind563 ./libtest/libtests lib562 "ftp://127.0.0.1:23456/563;type=A" 38901 > log/58/stdout563 2> log/58/stderr563 563: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 563 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind563 ./libtest/libtests lib562 "ftp://127.0.0.1:23456/563;type=A" 38901 > log/58/stdout563 2> log/58/stderr563 === End of file commands.log === Start of file ftp_server.log 09:40:51.976404 ====> Client connect 09:40:51.978237 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.981969 < "USER anonymous" 09:40:51.983512 > "331 We are happy you popped in![CR][LF]" 09:40:51.985118 < "PASS ftp@example.com" 09:40:51.985867 > "230 Welcome you silly person[CR][LF]" 09:40:51.987815 < "PWD" 09:40:51.988997 > "257 "/" is current directory[CR][LF]" 09:40:51.990885 < "EPSV" 09:40:51.991193 ====> Passive DATA channel requested by client 09:40:51.991388 DATA sockfilt for passive data channel starting... 09:40:52.005382 DATA sockfilt for passive data channel started (pid 102611) 09:40:52.006590 DATA sockfilt for passive data channel listens on port 43553 09:40:52.007162 > "229 Entering Passive Mode (|||43553|)[LF]" 09:40:52.007436 Client has been notified that DATA conn will be accepted on port 43553 09:40:52.009949 Client connects to port 43553 09:40:52.010277 ====> Client established passive DATA connection on port 43553 09:40:52.011659 < "TYPE I" 09:40:52.012679 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:52.015148 < "SIZE verifiedserver" 09:40:52.016614 > "213 17[CR][LF]" 09:40:52.018724 < "RETR verifiedserver" 09:40:52.019371 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:52.021899 =====> Closing passive DATA connection... 09:40:52.022614 Server disconnects passive DATA connection 09:40:52.025324 Fancy that; client wants to DISC, too 09:40:52.026910 Server disconnected passive DATA connection 09:40:52.027544 DATA sockfilt for passive data channel quits (pid 102611) 09:40:52.031815 DATA sockfilt for passive data channel quit (pid 102611) 09:40:52.032467 =====> Closed passive DATA connection 09:40:52.032929 > "226 File transfer complete[CR][LF]" 09:40:52.064006 < "QUIT" 09:40:52.065195 > "221 bye bye baby[CR][LF]" 09:40:52.069193 MAIN sockfilt said DISC 09:40:52.070332 ====> Client disconnected 09:40:52.070967 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:52.229299 ====> Client connect 09:40:52.232824 Received DATA (on stdin) 09:40:52.232974 > 160 bytes data, server => client 09:40:52.233073 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:52.233156 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:52.233243 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:52.234539 < 16 bytes data, client => server 09:40:52.234881 'USER anonymous\r\n' 09:40:52.236092 Received DATA (on stdin) 09:40:52.236245 > 33 bytes data, server => client 09:40:52.236551 '331 We are happy you popped in!\r\n' 09:40:52.237957 < 22 bytes data, client => server 09:40:52.238092 'PASS ftp@example.com\r\n' 09:40:52.239169 Received DATA (on stdin) 09:40:52.239311 > 30 bytes data, server => client 09:40:52.239888 '230 Welcome you silly person\r\n' 09:40:52.240566 < 5 bytes data, client => server 09:40:52.240704 'PWD\r\n' 09:40:52.241953 Received DATA (on stdin) 09:40:52.242087 > 30 bytes data, server => client 09:40:52.242256 '257 "/" is current directory\r\n' 09:40:52.243831 < 6 bytes data, client => server 09:40:52.244006 'EPSV\r\n' 09:40:52.261419 Received DATA (on stdin) 09:40:52.261657 > 38 bytes data, server => client 09:40:52.261752 '229 Entering Passive Mode (|||43553|)\n' 09:40:52.264341 < 8 bytes data, client => server 09:40:52.264546 'TYPE I\r\n' 09:40:52.265909 Received DATA (on stdin) 09:40:52.266115 > 33 bytes data, server => client 09:40:52.266813 '200 I modify TYPE as you wanted\r\n' 09:40:52.267719 < 21 bytes data, client => server 09:40:52.267938 'SIZE verifiedserver\r\n' 09:40:52.269315 Received DATA (on stdin) 09:40:52.269600 > 8 bytes data, server => client 09:40:52.269868 '213 17\r\n' 09:40:52.271659 < 21 bytes data, client => server 09:40:52.271918 'RETR verifiedserver\r\n' 09:40:52.273603 Received DATA (on stdin) 09:40:52.273753 > 29 bytes data, server => client 09:40:52.273825 '150 Binary junk (17 bytes).\r\n' 09:40:52.287044 Received DATA (on stdin) 09:40:52.287191 > 28 bytes data, server => client 09:40:52.287280 '226 File transfer complete\r\n' 09:40:52.316519 < 6 bytes data, client => server 09:40:52.316704 'QUIT\r\n' 09:40:52.318082 Received DATA (on stdin) 09:40:52.318224 > 18 bytes data, server => client 09:40:52.318403 '221 bye bye baby\r\n' 09:40:52.322564 ====> Client disconnect 09:40:52.323296 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:52.256958 Running IPv4 version 09:40:52.257714 Listening on port 43553 09:40:52.258386 Wrote pid 102611 to log/58/server/ftp_sockdata.pid 09:40:52.258744 Received PING (on stdin) 09:40:52.259613 Received PORT (on stdin) 09:40:52.262944 ====> Client connect 09:40:52.274155 Received DATA (on stdin) 09:40:52.274316 > 17 bytes data, server => client 09:40:52.276651 'WE ROOLZ: 77973\r\n' 09:40:52.277663 ====> Client disconnect 09:40:52.278510 Received DISC (on stdin) 09:40:52.278683 Crikey! Client also wants to disconnect 09:40:52.279985 Received ACKD (on stdin) 09:40:52.282709 Received QUIT (on stdin) 09:40:52.282836 quits 09:40:52.283637 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file http_server.log 09:40:51.935801 ====> Client connect 09:40:51.936081 accept_connection 3 returned 4 09:40:51.936250 accept_connection 3 returned 0 09:40:51.937036 Read 93 bytes 09:40:51.937190 Process 93 bytes request 09:40:51.937293 Got request: GET /verifiedserver HTTP/1.1 09:40:51.937382 Are-we-friendly question received 09:40:51.937723 Wrote request (93 bytes) input to log/58/server.input 09:40:51.937945 Identifying ourselves as friends 09:40:51.938690 Response sent (56 bytes) and written to log/58/server.response 09:40:51.938817 special request received, no persistency 09:40:51.938886 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46727... * Connected to 127.0.0.1 (127.0.0.1) port 46727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46727 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73755 === End of file http_verify.out === Start of file server.cmd Testnum 563 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73755 === End of file server.response === Start of file valgrind563 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind563 test 0562...[FTP a type=A URL and CURLOPT_PORT set] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind562 ./libtest/libtests lib562 'ftp://127.0.0.1:23456/562;type=A' 41385 > log/60/stdout562 2> log/60/stderr562 562: protocol FAILED! There was no content at all in the file log/60/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/60/ dir after test 562 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind562 ./libtest/libtests lib562 'ftp://127.0.0.1:23456/562;type=A' 41385 > log/60/stdout562 2> log/60/stderr562 === End of file commands.log === Start of file ftp_server.log 09:40:51.613364 ====> Client connect 09:40:51.615951 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.619071 < "USER anonymous" 09:40:51.620247 > "331 We are happy you popped in![CR][LF]" 09:40:51.622403 < "PASS ftp@example.com" 09:40:51.623483 > "230 Welcome you silly person[CR][LF]" 09:40:51.625391 < "PWD" 09:40:51.626588 > "257 "/" is current directory[CR][LF]" 09:40:51.628622 < "EPSV" 09:40:51.629096 ====> Passive DATA channel requested by client 09:40:51.629304 DATA sockfilt for passive data channel starting... 09:40:51.653894 DATA sockfilt for passive data channel started (pid 102002) 09:40:51.655357 DATA sockfilt for passive data channel listens on port 42295 09:40:51.656190 > "229 Entering Passive Mode (|||42295|)[LF]" 09:40:51.656514 Client has been notified that DATA conn will be accepted on port 42295 09:40:51.661326 Client connects to port 42295 09:40:51.661657 ====> Client established passive DATA connection on port 42295 09:40:51.662568 < "TYPE I" 09:40:51.663182 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.665155 < "SIZE verifiedserver" 09:40:51.666846 > "213 17[CR][LF]" 09:40:51.667521 < "RETR verifiedserver" 09:40:51.668315 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.669079 =====> Closing passive DATA connection... 09:40:51.669292 Server disconnects passive DATA connection 09:40:51.671617 Server disconnected passive DATA connection 09:40:51.672001 DATA sockfilt for passive data channel quits (pid 102002) 09:40:51.674194 DATA sockfilt for passive data channel quit (pid 102002) 09:40:51.674433 =====> Closed passive DATA connection 09:40:51.675161 > "226 File transfer complete[CR][LF]" 09:40:51.713052 < "QUIT" 09:40:51.714604 > "221 bye bye baby[CR][LF]" 09:40:51.718229 MAIN sockfilt said DISC 09:40:51.719107 ====> Client disconnected 09:40:51.719636 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.866387 ====> Client connect 09:40:51.868913 Received DATA (on stdin) 09:40:51.869082 > 160 bytes data, server => client 09:40:51.869277 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:51.869410 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:51.870697 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:51.871680 < 16 bytes data, client => server 09:40:51.871823 'USER anonymous\r\n' 09:40:51.873162 Received DATA (on stdin) 09:40:51.873307 > 33 bytes data, server => client 09:40:51.873561 '331 We are happy you popped in!\r\n' 09:40:51.875393 < 22 bytes data, client => server 09:40:51.875613 'PASS ftp@example.com\r\n' 09:40:51.876757 Received DATA (on stdin) 09:40:51.876984 > 30 bytes data, server => client 09:40:51.877567 '230 Welcome you silly person\r\n' 09:40:51.878226 < 5 bytes data, client => server 09:40:51.878380 'PWD\r\n' 09:40:51.879565 Received DATA (on stdin) 09:40:51.879718 > 30 bytes data, server => client 09:40:51.879902 '257 "/" is current directory\r\n' 09:40:51.881414 < 6 bytes data, client => server 09:40:51.881679 'EPSV\r\n' 09:40:51.910540 Received DATA (on stdin) 09:40:51.910678 > 38 bytes data, server => client 09:40:51.910747 '229 Entering Passive Mode (|||42295|)\n' 09:40:51.914520 < 8 bytes data, client => server 09:40:51.914805 'TYPE I\r\n' 09:40:51.917199 Received DATA (on stdin) 09:40:51.917324 > 33 bytes data, server => client 09:40:51.917400 '200 I modify TYPE as you wanted\r\n' 09:40:51.918029 < 21 bytes data, client => server 09:40:51.918174 'SIZE verifiedserver\r\n' 09:40:51.919224 Received DATA (on stdin) 09:40:51.919354 > 8 bytes data, server => client 09:40:51.919572 '213 17\r\n' 09:40:51.920166 < 21 bytes data, client => server 09:40:51.920296 'RETR verifiedserver\r\n' 09:40:51.921683 Received DATA (on stdin) 09:40:51.921829 > 29 bytes data, server => client 09:40:51.923202 '150 Binary junk (17 bytes).\r\n' 09:40:51.928495 Received DATA (on stdin) 09:40:51.928648 > 28 bytes data, server => client 09:40:51.929159 '226 File transfer complete\r\n' 09:40:51.965206 < 6 bytes data, client => server 09:40:51.965557 'QUIT\r\n' 09:40:51.967206 Received DATA (on stdin) 09:40:51.967396 > 18 bytes data, server => client 09:40:51.967802 '221 bye bye baby\r\n' 09:40:51.971620 ====> Client disconnect 09:40:51.972250 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.906184 Running IPv4 version 09:40:51.906753 Listening on port 42295 09:40:51.907150 Wrote pid 102002 to log/60/server/ftp_sockdata.pid 09:40:51.907309 Received PING (on stdin) 09:40:51.908398 Received PORT (on stdin) 09:40:51.913635 ====> Client connect 09:40:51.923599 Received DATA (on stdin) 09:40:51.923737 > 17 bytes data, server => client 09:40:51.923810 'WE ROOLZ: 78622\r\n' 09:40:51.924042 Received DISC (on stdin) 09:40:51.924183 ====> Client forcibly disconnected 09:40:51.926032 Received QUIT (on stdin) 09:40:51.926283 quits 09:40:51.926794 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 562 === End of file server.cmd === Start of file valgrind562 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind562 test 0548...[HTTP proxy auth NTLM with POST data from CURLOPT_POSTFIELDS] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind548 ./libtest/libtests lib547 http://test.remote.example.com/path/548 http://127.0.0.1:44381 testuser:testpass > log/61/stdout548 2> log/61/stderr548 548: protocol FAILED! There was no content at all in the file log/61/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/61/ dir after test 548 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind548 ./libtest/libtests lib547 http://test.remote.example.com/path/548 http://127.0.0.1:44381 testuser:testpass > log/61/stdout548 2> log/61/stderr548 === End of file commands.log === Start of file http_server.log 09:40:51.702309 ====> Client connect 09:40:51.702738 accept_connection 3 returned 4 09:40:51.702904 accept_connection 3 returned 0 09:40:51.703041 Read 93 bytes 09:40:51.703132 Process 93 bytes request 09:40:51.703223 Got request: GET /verifiedserver HTTP/1.1 09:40:51.703303 Are-we-friendly question received 09:40:51.703641 Wrote request (93 bytes) input to log/61/server.input 09:40:51.703862 Identifying ourselves as friends 09:40:51.704611 Response sent (56 bytes) and written to log/61/server.response 09:40:51.704718 special request received, no persistency 09:40:51.704782 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44381... * Connected to 127.0.0.1 (127.0.0.1) port 44381 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44381 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73751 === End of file http_verify.out === Start of file server.cmd Testnum 548 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73751 === End of file server.response === Start of file valgrind548 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind548 test 0547...[HTTP proxy auth NTLM with POST data from read callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrinCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind568 ./libtest/libtests lib568 rtsp://127.0.0.1:38317/568 log/56/file568.txt > log/56/stdout568 2> log/56/stderr568 d.supp --num-callers=16 --log-file=log/62/valgrind547 ./libtest/libtests lib547 http://test.remote.example.com/path/547 http://127.0.0.1:38899 testuser:testpass > log/62/stdout547 2> log/62/stderr547 547: protocol FAILED! There was no content at all in the file log/62/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/62/ dir after test 547 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind547 ./libtest/libtests lib547 http://test.remote.example.com/path/547 http://127.0.0.1:38899 testuser:testpass > log/62/stdout547 2> log/62/stderr547 === End of file commands.log === Start of file http_server.log 09:40:51.692135 ====> Client connect 09:40:51.692602 accept_connection 3 returned 4 09:40:51.692793 accept_connection 3 returned 0 09:40:51.692923 Read 93 bytes 09:40:51.693017 Process 93 bytes request 09:40:51.693103 Got request: GET /verifiedserver HTTP/1.1 09:40:51.693181 Are-we-friendly question received 09:40:51.693543 Wrote request (93 bytes) input to log/62/server.input 09:40:51.693749 Identifying ourselves as friends 09:40:51.694614 Response sent (56 bytes) and written to log/62/server.response 09:40:51.694723 special request received, no persistency 09:40:51.694798 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38899... * Connected to 127.0.0.1 (127.0.0.1) port 38899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73749 === End of file http_verify.out === Start of file server.cmd Testnum 547 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73749 === End of file server.response === Start of file valgrind547 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind547 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/4/server/rtsp_server.pid" --portfile "log/4/server/rtsp_server.port" --logfile "log/4/rtsp_server.log" --logdir "log/4" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 101717 port 33305 * pid rtsp => 101717 101717 test 0567...[simple RTSP OPTIONS command] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind567 ./libtest/libtests lib567 rtsp://127.0.0.1:33305/567 > log/4/stdout567 2> log/4/stderr567 567: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 567 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind567 ./libtest/libtests lib567 rtsp://127.0.0.1:33305/567 > log/4/stdout567 2> log/4/stderr567 === End of file commands.log === Start of file rtsp_server.log 09:40:51.011974 Running IPv4 version on port 33305 09:40:51.013006 Wrote pid 101717 to log/4/server/rtsp_server.pid 09:40:51.013380 Wrote port 33305 to log/4/server/rtsp_server.port === End of file rtsp_server.log === Start of file server.cmd Testnum 567 === End of file server.cmd === Start of file valgrind567 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind567 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/56/server/rtsp_server.pid" --portfile "log/56/server/rtsp_server.port" --logfile "log/56/rtsp_server.log" --logdir "log/56" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 102012 port 38317 * pid rtsp => 102012 102012 test 0568...[RTSP Announce (PUT and POST style) test] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind568 ./libtest/libtests lib568 rtsp://127.0.0.1:38317/568 log/56/file568.txt > log/56/stdout568 2> log/56/stderr568 568: protocol FAILED! There was no content at all in the file log/56/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/56/ dir after test 568 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind568 ./libtest/libtests lib568 rtsp://127.0.0.1:38317/568 log/56/file568.txt > log/56/stdout568 2> log/56/stderr568 === End of file commands.log === Start of file file568.txt v=0 o=mhandley 2890844526 2890845468 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps e=mjh@isi.edu (Mark Handley) c=IN IP4 224.2.17.12/127 t=2873397496 2873404696 a=recvonly m=audio 3456 RTP/AVP 0 m=video 2232 RTP/AVP 31 === End of file file568.txt === CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind569 ./libtest/libtests lib569 rtsp://127.0.0.1:33051/569 log/19/idfile569.txt > log/19/stdout569 2> log/19/stderr569 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind573 ./libtest/libtests lib573 http://127.0.0.1:35093/573 > log/41/stdout573 2> log/41/stderr573 Start of file rtsp_server.log 09:40:52.264097 Running IPv4 version on port 38317 09:40:52.265326 Wrote pid 102012 to log/56/server/rtsp_server.pid 09:40:52.269244 Wrote port 38317 to log/56/server/rtsp_server.port === End of file rtsp_server.log === Start of file server.cmd Testnum 568 === End of file server.cmd === Start of file valgrind568 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind568 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/19/server/rtsp_server.pid" --portfile "log/19/server/rtsp_server.port" --logfile "log/19/rtsp_server.log" --logdir "log/19" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 102051 port 33051 * pid rtsp => 102051 102051 test 0569...[RTSP Session ID parsing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind569 ./libtest/libtests lib569 rtsp://127.0.0.1:33051/569 log/19/idfile569.txt > log/19/stdout569 2> log/19/stderr569 569: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 569 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind569 ./libtest/libtests lib569 rtsp://127.0.0.1:33051/569 log/19/idfile569.txt > log/19/stdout569 2> log/19/stderr569 === End of file commands.log === Start of file rtsp_server.log 09:40:51.173158 Running IPv4 version on port 33051 09:40:51.175057 Wrote pid 102051 to log/19/server/rtsp_server.pid 09:40:51.175620 Wrote port 33051 to log/19/server/rtsp_server.port === End of file rtsp_server.log === Start of file server.cmd Testnum 569 === End of file server.cmd === Start of file valgrind569 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind569 test 0573...[verify connect time with multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind573 ./libtest/libtests lib573 http://127.0.0.1:35093/573 > log/41/stdout573 2> log/41/stderr573 573: protocol FAILED! There was no content at all in the file log/41/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/41/ dir after test 573 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/41/valgrind573 ./libtest/libtests lib573 http://127.0.0.1:35093/573 > log/41/stdout573 2> log/41/stderr573 === End of file commands.log === Start of file http_server.log 09:40:53.417699 ====> Client connect 09:40:53.418033 accept_connection 3 returned 4 09:40:53.418204 accept_connection 3 returned 0 09:40:53.418924 Read 93 bytes 09:40:53.419076 Process 93 bytes request 09:40:53.419173 Got request: GET /verifiedserver HTTP/1.1 09:40:53.419252 Are-we-friendly question received 09:40:53.419923 Wrote request (93 bytes) input to log/41/server.input 09:40:53.420149 Identifying ourselves as friends 09:40:53.421942 Response sent (56 bytes) and written to log/41/server.response 09:40:53.422064 special request received, no persistency 09:40:53.422139 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35093... * Connected to 127.0.0.1 (127.0.0.1) port 35093 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35093 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73770 === End of file http_verify.out === Start of file server.cmd Testnum 573 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73770 === End of file server.response === Start of file valgrind573 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note thacannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind564 ./libtest/libtests lib564 ftp://127.0.0.1:37853/path/564 127.0.0.1:38543 > log/46/stdout564 2> log/46/stderr564 t if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind573 cannot find sshd startnew: ./server/servers socksd --port 0 --pidfile log/46/server/socks_server.pid --portfile log/46/server/socks_server.port --reqfile log/46/socksd-request.log --logfile log/46/socks_server.log --backend 127.0.0.1 --config log/46/server.cmd RUN: SOCKS server is now running PID 102446 * pid socks => 102446 102446 test 0564...[FTP RETR a file over a SOCKS proxy using the multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind564 ./libtest/libtests lib564 ftp://127.0.0.1:37853/path/564 127.0.0.1:38543 > log/46/stdout564 2> log/46/stderr564 564: stdout FAILED: --- log/46/check-expected 2025-07-18 09:40:54.228033901 +0000 +++ log/46/check-generated 2025-07-18 09:40:54.227577921 +0000 @@ -1,6 +0,0 @@ -data[LF] - to[LF] - see[LF] -that FTP[LF] -works[LF] - so does it?[LF] == Contents of files in the log/46/ dir after test 564 === Start of file check-expected data[LF] to[LF] see[LF] that FTP[LF] works[LF] so does it?[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/46/valgrind564 ./libtest/libtests lib564 ftp://127.0.0.1:37853/path/564 127.0.0.1:38543 > log/46/stdout564 2> log/46/stderr564 === End of file commands.log === Start of file ftp_server.log 09:40:51.716404 ====> Client connect 09:40:51.718015 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:51.725077 < "USER anonymous" 09:40:51.729166 > "331 We are happy you popped in![CR][LF]" 09:40:51.734946 < "PASS ftp@example.com" 09:40:51.737907 > "230 Welcome you silly person[CR][LF]" 09:40:51.744037 < "PWD" 09:40:51.747032 > "257 "/" is current directory[CR][LF]" 09:40:51.748064 < "EPSV" 09:40:51.748419 ====> Passive DATA channel requested by client 09:40:51.748657 DATA sockfilt for passive data channel starting... 09:40:51.781513 DATA sockfilt for passive data channel started (pid 102217) 09:40:51.784691 DATA sockfilt for passive data channel listens on port 41967 09:40:51.787981 > "229 Entering Passive Mode (|||41967|)[LF]" 09:40:51.788292 Client has been notified that DATA conn will be accepted on port 41967 09:40:51.790966 Client connects to port 41967 09:40:51.791304 ====> Client established passive DATA connection on port 41967 09:40:51.794602 < "TYPE I" 09:40:51.795195 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:51.800320 < "SIZE verifiedserver" 09:40:51.800962 > "213 17[CR][LF]" 09:40:51.803847 < "RETR verifiedserver" 09:40:51.804326 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:51.806636 =====> Closing passive DATA connection... 09:40:51.806994 Server disconnects passive DATA connection 09:40:51.808941 Server disconnected passive DATA connection 09:40:51.809240 DATA sockfilt for passive data channel quits (pid 102217) 09:40:51.811370 DATA sockfilt for passive data channel quit (pid 102217) 09:40:51.811822 =====> Closed passive DATA connection 09:40:51.812253 > "226 File transfer complete[CR][LF]" 09:40:51.853643 < "QUIT" 09:40:51.858277 > "221 bye bye baby[CR][LF]" 09:40:51.859866 MAIN sockfilt said DISC 09:40:51.860217 ====> Client disconnected 09:40:51.860824 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:51.969367 ====> Client connect 09:40:51.975855 Received DATA (on stdin) 09:40:51.976040 > 160 bytes data, server => client 09:40:51.976163 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:51.976280 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:51.976383 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:51.977538 < 16 bytes data, client => server 09:40:51.977701 'USER anonymous\r\n' 09:40:51.979221 Received DATA (on stdin) 09:40:51.979381 > 33 bytes data, server => client 09:40:51.986606 '331 We are happy you popped in!\r\n' 09:40:51.987736 < 22 bytes data, client => server 09:40:51.987896 'PASS ftp@example.com\r\n' 09:40:51.989080 Received DATA (on stdin) 09:40:51.989224 > 30 bytes data, server => client 09:40:51.992104 '230 Welcome you silly person\r\n' 09:40:51.996638 < 5 bytes data, client => server 09:40:51.996812 'PWD\r\n' 09:40:51.998334 Received DATA (on stdin) 09:40:51.998585 > 30 bytes data, server => client 09:40:51.998796 '257 "/" is current directory\r\n' 09:40:51.999957 < 6 bytes data, client => server 09:40:52.000316 'EPSV\r\n' 09:40:52.038928 Received DATA (on stdin) 09:40:52.039089 > 38 bytes data, server => client 09:40:52.042649 '229 Entering Passive Mode (|||41967|)\n' 09:40:52.045555 < 8 bytes data, client => server 09:40:52.045710 'TYPE I\r\n' 09:40:52.049240 Received DATA (on stdin) 09:40:52.049384 > 33 bytes data, server => client 09:40:52.049592 '200 I modify TYPE as you wanted\r\n' 09:40:52.053003 < 21 bytes data, client => server 09:40:52.053184 'SIZE verifiedserver\r\n' 09:40:52.055567 Received DATA (on stdin) 09:40:52.055733 > 8 bytes data, server => client 09:40:52.055829 '213 17\r\n' 09:40:52.056567 < 21 bytes data, client => server 09:40:52.056721 'RETR verifiedserver\r\n' 09:40:52.058977 Received DATA (on stdin) 09:40:52.059181 > 29 bytes data, server => client 09:40:52.059261 '150 Binary junk (17 bytes).\r\n' 09:40:52.066298 Received DATA (on stdin) 09:40:52.066429 > 28 bytes data, server => client 09:40:52.066615 '226 File transfer complete\r\n' 09:40:52.105728 < 6 bytes data, client => server 09:40:52.105924 'QUIT\r\n' 09:40:52.108033 Received DATA (on stdin) 09:40:52.108186 > 18 bytes data, server => client 09:40:52.112361 '221 bye bye baby\r\n' 09:40:52.113114 ====> Client disconnect 09:40:52.115564 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:51.033427 Running IPv4 version 09:40:51.034168 Listening on port 41967 09:40:51.034694 Wrote pid 102217 to log/46/server/ftp_sockdata.pid 09:40:51.034879 Received PING (on stdin) 09:40:51.037581 Received PORT (on stdin) 09:40:51.043868 ====> Client connect 09:40:51.058401 Received DATA (on stdin) 09:40:51.058662 > 17 bytes data, server => client 09:40:51.061036 'WE ROOLZ: 78258\r\n' 09:40:51.061934 Received DISC (on stdin) 09:40:51.062106 ====> Client forcibly disconnected 09:40:51.063201 Received QUIT (on stdin) 09:40:51.063317 quits 09:40:51.063808 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 564 === End of file server.cmd === Start of file socks_server.log 09:40:51.216125 Running IPv4 version 09:40:51.219347 Listening on port 38543 09:40:51.220339 Wrote pid 102446 to log/46/server/socks_server.pid 09:40:51.223596 Wrote port 38543 to log/46/server/socks_server.port === End of file socks_server.log === Start of file valgrind564 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, cannot find sshd cannot find sshd cannot find sshd cannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind570 ./libtest/libtests lib570 rtsp://127.0.0.1:35761/570 > log/64/stdout570 2> log/64/stderr570 cannot find sshd cannot find sshd cannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind574 ./libtest/libtests lib574 ftp://127.0.0.1:42737/fully_simulated/UNIX/*.txt > log/51/stdout574 2> log/51/stderr574 cannot find sshd cannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind571 ./libtest/libtests lib571 rtsp://127.0.0.1:40815/571 log/63/protofile571.txt > log/63/stdout571 2> log/63/stderr571 openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind564 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/64/server/rtsp_server.pid" --portfile "log/64/server/rtsp_server.port" --logfile "log/64/rtsp_server.log" --logdir "log/64" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 102580 port 35761 * pid rtsp => 102580 102580 test 0570...[RTSP CSeq and Session Mismatch checks] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind570 ./libtest/libtests lib570 rtsp://127.0.0.1:35761/570 > log/64/stdout570 2> log/64/stderr570 570: protocol FAILED! There was no content at all in the file log/64/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/64/ dir after test 570 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/64/valgrind570 ./libtest/libtests lib570 rtsp://127.0.0.1:35761/570 > log/64/stdout570 2> log/64/stderr570 === End of file commands.log === Start of file rtsp_server.log 09:40:52.637620 Running IPv4 version on port 35761 09:40:52.638854 Wrote pid 102580 to log/64/server/rtsp_server.pid 09:40:52.639358 Wrote port 35761 to log/64/server/rtsp_server.port === End of file rtsp_server.log === Start of file server.cmd Testnum 570 === End of file server.cmd === Start of file valgrind570 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind570 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind572 ./libtest/libtests lib572 rtsp://127.0.0.1:46535/572 log/59/file572.txt > log/59/stdout572 2> log/59/stderr572 cannot find sshd test 0574...[FTP wildcard download - changed fnmatch, 2x perform (Unix LIST response)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind574 ./libtest/libtests lib574 ftp://127.0.0.1:42737/fully_simulated/UNIX/*.txt > log/51/stdout574 2> log/51/stderr574 574: stdout FAILED: --- log/51/check-expected 2025-07-18 09:40:54.596601154 +0000 +++ log/51/check-generated 2025-07-18 09:40:54.595601155 +0000 @@ -1,10 +0,0 @@ -This file should have permissions 444[LF] -This file should have permissions 666[LF] -This file should have permissions 777[LF] -This is content of file "file.txt"[LF] -Some junk ;-) This file does not really exist.[LF] -This file should have permissions 444[LF] -This file should have permissions 666[LF] -This file should have permissions 777[LF] -This is content of file "file.txt"[LF] -Some junk ;-) This file does not really exist.[LF] == Contents of files in the log/51/ dir after test 574 === Start of file check-expected This file should have permissions 444[LF] This file should have permissions 666[LF] This file should have permissions 777[LF] This is content of file "file.txt"[LF] Some junk ;-) This file does not really exist.[LF] This file should have permissions 444[LF] This file should have permissions 666[LF] This file should have permissions 777[LF] This is content of file "file.txt"[LF] Some junk ;-) This file does not really exist.[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/51/valgrind574 ./libtest/libtests lib574 ftp://127.0.0.1:42737/fully_simulated/UNIX/*.txt > log/51/stdout574 2> log/51/stderr574 === End of file commands.log === Start of file ftp_server.log 09:40:53.471861 ====> Client connect 09:40:53.473239 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:53.475635 < "USER anonymous" 09:40:53.476106 > "331 We are happy you popped in![CR][LF]" 09:40:53.477680 < "PASS ftp@example.com" 09:40:53.478154 > "230 Welcome you silly person[CR][LF]" 09:40:53.479572 < "PWD" 09:40:53.480031 > "257 "/" is current directory[CR][LF]" 09:40:53.481848 < "EPSV" 09:40:53.482152 ====> Passive DATA channel requested by client 09:40:53.482355 DATA sockfilt for passive data channel starting... 09:40:53.494310 DATA sockfilt for passive data channel started (pid 104226) 09:40:53.495262 DATA sockfilt for passive data channel listens on port 33367 09:40:53.495730 > "229 Entering Passive Mode (|||33367|)[LF]" 09:40:53.496009 Client has been notified that DATA conn will be accepted on port 33367 09:40:53.497348 Client connects to port 33367 09:40:53.497610 ====> Client established passive DATA connection on port 33367 09:40:53.498376 < "TYPE I" 09:40:53.498859 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:53.501009 < "SIZE verifiedserver" 09:40:53.502296 > "213 17[CR][LF]" 09:40:53.504457 < "RETR verifiedserver" 09:40:53.505386 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:53.507071 =====> Closing passive DATA connection... 09:40:53.507976 Server disconnects passive DATA connection 09:40:53.508358 Fancy that; client wants to DISC, too 09:40:53.508959 Server disconnected passive DATA connection 09:40:53.509231 DATA sockfilt for passive data channel quits (pid 104226) 09:40:53.511362 DATA sockfilt for passive data channel quit (pid 104226) 09:40:53.511631 =====> Closed passive DATA connection 09:40:53.512874 > "226 File transfer complete[CR][LF]" 09:40:53.548673 < "QUIT" 09:40:53.550235 > "221 bye bye baby[CR][LF]" 09:40:53.554135 MAIN sockfilt said DISC 09:40:53.555001 ====> Client disconnected 09:40:53.555497 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:53.724867 ====> Client connect 09:40:53.726938 Received DATA (on stdin) 09:40:53.727105 > 160 bytes data, server => client 09:40:53.727194 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:53.727280 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:53.727357 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:53.728138 < 16 bytes data, client => server 09:40:53.728280 'USER anonymous\r\n' 09:40:53.729838 Received DATA (on stdin) 09:40:53.730002 > 33 bytes data, server => client 09:40:53.730091 '331 We are happy you popped in!\r\n' 09:40:53.730888 < 22 bytes data, client => server 09:40:53.731032 'PASS ftp@example.com\r\n' 09:40:53.731878 Received DATA (on stdin) 09:40:53.732028 > 30 bytes data, server => client 09:40:53.732114 '230 Welcome you silly person\r\n' 09:40:53.732789 < 5 bytes data, client => server 09:40:53.732924 'PWD\r\n' 09:40:53.733767 Received DATA (on stdin) 09:40:53.733919 > 30 bytes data, server => client 09:40:53.734001 '257 "/" is current directory\r\n' 09:40:53.734725 < 6 bytes data, client => server 09:40:53.734861 'EPSV\r\n' 09:40:53.749409 Received DATA (on stdin) 09:40:53.749640 > 38 bytes data, server => client 09:40:53.749744 '229 Entering Passive Mode (|||33367|)\n' 09:40:53.751058 < 8 bytes data, client => server 09:40:53.751199 'TYPE I\r\n' 09:40:53.752549 Received DATA (on stdin) 09:40:53.752722 > 33 bytes data, server => client 09:40:53.752820 '200 I modify TYPE as you wanted\r\n' 09:40:53.753749 < 21 bytes data, client => server 09:40:53.753938 'SIZE verifiedserver\r\n' 09:40:53.755187 Received DATA (on stdin) 09:40:53.755345 > 8 bytes data, server => client 09:40:53.755590 '213 17\r\n' 09:40:53.756893 < 21 bytes data, client => server 09:40:53.757359 'RETR verifiedserver\r\n' 09:40:53.758694 Received DATA (on stdin) 09:40:53.758857 > 29 bytes data, server => client 09:40:53.759577 '150 Binary junk (17 bytes).\r\n' 09:40:53.765763 Received DATA (on stdin) 09:40:53.766160 > 28 bytes data, server => client 09:40:53.767288 '226 File transfer complete\r\n' 09:40:53.801512 < 6 bytes data, client => server 09:40:53.801704 'QUIT\r\n' 09:40:53.803084 Received DATA (on stdin) 09:40:53.803231 > 18 bytes data, server => client 09:40:53.803508 '221 bye bye baby\r\n' 09:40:53.807564 ====> Client disconnect 09:40:53.808140 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:53.746401 Running IPv4 version 09:40:53.747101 Listening on port 33367 09:40:53.747529 Wrote pid 104226 to log/51/server/ftp_sockdata.pid 09:40:53.747712 Received PING (on stdin) 09:40:53.748371 Received PORT (on stdin) 09:40:53.750796 ====> Client connect 09:40:53.759593 Received DATA (on stdin) 09:40:53.759727 > 17 bytes data, server => client 09:40:53.760340 'WE ROOLZ: 77543\r\n' 09:40:53.761290 ====> Client disconnect 09:40:53.762050 Received DISC (on stdin) 09:40:53.762234 Crikey! Client also wants to disconnect 09:40:53.762391 Received ACKD (on stdin) 09:40:53.763267 Received QUIT (on stdin) 09:40:53.763415 quits 09:40:53.763918 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 574 === End of file server.cmd === Start of file valgrind574 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) cannot find sshd cannot find sshd cannot find sshd cannot find sshd valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind574 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/59/server/rtsp_server.pid" --portfile "log/59/server/rtsp_server.port" --logfile "log/59/rtsp_server.log" --logdir "log/59" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 103627 port 46535 * pid rtsp => 103627 103627 test 0572...[RTSP GET_PARAMETER (Put/Heartbeat/Post)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind572 ./libtest/libtests lib572 rtsp://127.0.0.1:46535/572 log/59/file572.txt > log/59/stdout572 2> log/59/stderr572 572: protocol FAILED! There was no content at all in the file log/59/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/59/ dir after test 572 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/59/valgrind572 ./libtest/libtests lib572 rtsp://127.0.0.1:46535/572 log/59/file572.txt > log/59/stdout572 2> log/59/stderr572 === End of file commands.log === Start of file file572.txt scale speed === End of file file572.txt === Start of file rtsp_server.log 09:40:52.047756 Running IPv4 version on port 46535 09:40:52.048865 Wrote pid 103627 to log/59/server/rtsp_server.pid 09:40:52.049338 Wrote port 46535 to log/59/server/rtsp_server.port === End of file rtsp_server.log === Start of file server.cmd Testnum 572 === End of file server.cmd === Start of file valgrind572 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind572 cannot find sshd cannot find sshd cannot find sshd cannot find sshd cannot find sshd cannot find sshd cannot find sshd cannot find sshd cannot find sshd cannot find sshd cannot find sshd cannot find sshd cannot find sshd cannot find sshd cannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind578 ./libtest/libtests lib578 http://127.0.0.1:38843/578 log/60/ip578 > log/60/stdout578 2> log/60/stderr578 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/63/server/rtsp_server.pid" --portfile "log/63/server/rtsp_server.port" --logfile "log/63/rtsp_server.log" --logdir "log/63" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 103047 port 40815 * pid rtsp => 103047 103047 test 0571...[RTSP RTP Interleaving Test] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind571 ./libtest/libtests lib571 rtsp://127.0.0.1:40815/571 log/63/protofile571.txt > log/63/stdout571 2> log/63/stderr571 571: stdout FAILED: --- log/63/check-expected 2025-07-18 09:40:54.727656408 +0000 +++ log/63/check-generated 2025-07-18 09:40:54.726601088 +0000 @@ -1,20 +0,0 @@ -RTP: message size 10, channel 1[LF] -RTP: message size 500, channel 0[LF] -RTP: message size 196, channel 0[LF] -RTP: message size 124, channel 0[LF] -RTP: message size 824, channel 0[LF] -RTP: message size 12, channel 0[LF] -RTP: message size 10, channel 1[LF] -RTP: message size 50, channel 0[LF] -RTP: message size 798, channel 0[LF] -RTP: message size 42, channel 0[LF] -RTP: message size 30, channel 1[LF] -RTP: message size 2048, channel 0[LF] -RTP: message size 85, channel 0[LF] -RTP: message size 24, channel 1[LF] -RTP: message size 13, channel 0[LF] -RTP: message size 33, channel 0[LF] -RTP: message size 127, channel 0[LF] -RTP: message size 35, channel 1[LF] -RTP PAYLOAD END CORRUPTED (11), [$][LF] -RTP: message size 63, channel 0[LF] == Contents of files in the log/63/ dir after test 571 === Start of file check-expected RTP: message size 10, channel 1[LF] RTP: message size 500, channel 0[LF] RTP: message size 196, channel 0[LF] RTP: message size 124, channel 0[LF] RTP: message size 824, channel 0[LF] RTP: message size 12, channel 0[LF] RTP: message size 10, channel 1[LF] RTP: message size 50, channel 0[LF] RTP: message size 798, channel 0[LF] RTP: message size 42, channel 0[LF] RTP: message size 30, channel 1[LF] RTP: message size 2048, channel 0[LF] RTP: message size 85, channel 0[LF] RTP: message size 24, channel 1[LF] RTP: message size 13, channel 0[LF] RTP: message size 33, channel 0[LF] RTP: message size 127, channel 0[LF] RTP: message size 35, channel 1[LF] RTP PAYLOAD END CORRUPTED (11), [$][LF] RTP: message size 63, channel 0[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind571 ./libtest/libtests lib571 rtsp://127.0.0.1:40815/571 log/63/protofile571.txt > log/63/stdout571 2> log/63/stderr571 === End of file commands.log === Start of file rtsp_server.log 09:40:52.810245 Running IPv4 version on port 40815 09:40:52.811417 Wrote pid 103047 to log/63/server/rtsp_server.pid 09:40:52.811941 Wrote port 40815 to log/63/server/rtsp_server.port === End of file rtsp_server.log === Start of file server.cmd rtp: part 2 channel 1 size 10 rtp: part 2 channel 0 size 500 rtp: part 2 channel 0 size 196 rtp: part 2 channel 0 size 124 rtp: part 2 channel 0 size 824 rtp: part 2 channel 0 size 18 size_err -6 rtp: part 3 channel 1 size 10 rtp: part 3 channel 0 size 50 rtp: part 4 channel 0 size 798 rtp: part 4 channel 0 size 42 rtp: part 4 channel 1 size 30 rtp: part 4 channel 0 size 2048 rtp: part 4 channel 0 size 85 rtp: part 4 channel 1 size 24 rtp: part 4 channel 0 size 17 size_err -4 rtp: part 4 channel 0 size 33 rtp: part 4 channel 0 size 127 rtp: part 4 channel 1 size 24 size_err 11 rtp: part 4 channel 0 size 37 rtp: part 4 channel 0 size 63 Testnum 571 === End of file server.cmd === Start of file valgrind571 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind571 cannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind581 ./libtest/libtests lib507 http://127.0.0.1:34639/581 > log/53/stdout581 2> log/53/stderr581 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind589 ./libtest/libtests lib589 http://127.0.0.1:43913/589 > log/30/stdout589 2> log/30/stderr589 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind579 ./libtest/libtests lib579 http://127.0.0.1:46727/579 log/58/ip579 > log/58/stdout579 2> log/58/stderr579 cannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind584 ./libtest/libtests lib589 http://127.0.0.1:42899/584 > log/39/stdout584 2> log/39/stderr584 cannot find sshd cannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind575 ./libtest/libtests lib575 ftp://127.0.0.1:38963/fully_simulated/UNIX/* > log/62/stdout575 2> log/62/stderr575 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind585 ./libtest/libtests lib500 http://127.0.0.1:43179/585 > log/35/stdout585 2> log/35/stderr585 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind580 ./libtest/libtests lib507 http://127.0.0.1:35945/580 > log/57/stdout580 2> log/57/stderr580 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind587 ./libtest/libtests lib554 http://127.0.0.1:36559/587 > log/33/stdout587 2> log/33/stderr587 test 0578...[HTTP POST lower than MAX_INITIAL_POST_SIZE with progress callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind578 ./libtest/libtests lib578 http://127.0.0.1:38843/578 log/60/ip578 > log/60/stdout578 2> log/60/stderr578 578: data FAILED: --- log/60/check-expected 2025-07-18 09:40:54.981600959 +0000 +++ log/60/check-generated 2025-07-18 09:40:54.980600960 +0000 @@ -1,12 +0,0 @@ -HTTP/1.1 200 OK[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] -ETag: "21025-dc7-39462498"[CR][LF] -Accept-Ranges: bytes[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -Content-Type: text/html[CR][LF] -Funny-head: yesyes[CR][LF] -[CR][LF] --foo-[LF] == Contents of files in the log/60/ dir after test 578 === Start of file check-expected HTTP/1.1 200 OK[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] ETag: "21025-dc7-39462498"[CR][LF] Accept-Ranges: bytes[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] Content-Type: text/html[CR][LF] Funny-head: yesyes[CR][LF] [CR][LF] -foo-[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/60/valgrind578 ./libtest/libtests lib578 http://127.0.0.1:38843/578 log/60/ip578 > log/60/stdout578 2> log/60/stderr578 === End of file commands.log === Start of file http_server.log 09:40:54.232950 ====> Client connect 09:40:54.233363 accept_connection 3 returned 4 09:40:54.233933 accept_connection 3 returned 0 09:40:54.234087 Read 93 bytes 09:40:54.234207 Process 93 bytes request 09:40:54.234345 Got request: GET /verifiedserver HTTP/1.1 09:40:54.234535 Are-we-friendly question received 09:40:54.234807 Wrote request (93 bytes) input to log/60/server.input 09:40:54.234997 Identifying ourselves as friends 09:40:54.236773 Response sent (56 bytes) and written to log/60/server.response 09:40:54.236892 special request received, no persistency 09:40:54.236960 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38843... * Connected to 127.0.0.1 (127.0.0.1) port 38843 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38843 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73750 === End of file http_verify.out === Start of file server.cmd Testnum 578 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73750 === End of file server.response === Start of file valgrind578 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind578 test 0589...[make an HTTP MIME POST set to NULL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind589 ./libtest/libtests lib589 http://127.0.0.1:43913/589 > log/30/stdout589 2> log/30/stderr589 589: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 589 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind589 ./libtest/libtests lib589 http://127.0.0.1:43913/589 > log/30/stdout589 2> log/30/stderr589 === End of file commands.log === Start of file http_server.log 09:40:54.479842 ====> Client connect 09:40:54.480126 accept_connection 3 returned 4 09:40:54.480281 accept_connection 3 returned 0 09:40:54.480406 Read 93 bytes 09:40:54.480656 Process 93 bytes request 09:40:54.480759 Got request: GET /verifiedserver HTTP/1.1 09:40:54.480826 Are-we-friendly question received 09:40:54.481041 Wrote request (93 bytes) input to log/30/server.input 09:40:54.481220 Identifying ourselves as friends 09:40:54.481879 Response sent (56 bytes) and written to log/30/server.response 09:40:54.481975 special request received, no persistency 09:40:54.482035 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43913... * Connected to 127.0.0.1 (127.0.0.1) port 43913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43913 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73779 === End of file http_verify.out === Start of file server.cmd Testnum 589 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73779 === End of file server.response === Start of file valgrind589 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind589 test 0585...[socketCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind592 ./libtest/libtests lib591 ftp://127.0.0.1:34087/path/592 8 log/13/upload592 > log/13/stdout592 2> log/13/stderr592 cannot find sshd cannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind593 ./libtest/libtests lib591 ftp://127.0.0.1:32859/path/593 8 log/10/upload593 > log/10/stdout593 2> log/10/stderr593 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind576 ./libtest/libtests lib576 ftp://127.0.0.1:39979/fully_simulated/UNIX/* > log/4/stdout576 2> log/4/stderr576 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind590 ./libtest/libtests lib590 http://test.remote.example.com/path/590 http://127.0.0.1:41285 > log/18/stdout590 2> log/18/stderr590 open/close callbacks] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind585 ./libtest/libtests lib500 http://127.0.0.1:43179/585 > log/35/stdout585 2> log/35/stderr585 585: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 585 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind585 ./libtest/libtests lib500 http://127.0.0.1:43179/585 > log/35/stdout585 2> log/35/stderr585 === End of file commands.log === Start of file http_server.log 09:40:54.411411 ====> Client connect 09:40:54.411908 accept_connection 3 returned 4 09:40:54.412103 accept_connection 3 returned 0 09:40:54.412253 Read 93 bytes 09:40:54.412372 Process 93 bytes request 09:40:54.412554 Got request: GET /verifiedserver HTTP/1.1 09:40:54.412668 Are-we-friendly question received 09:40:54.412964 Wrote request (93 bytes) input to log/35/server.input 09:40:54.413184 Identifying ourselves as friends 09:40:54.414097 Response sent (56 bytes) and written to log/35/server.response 09:40:54.414215 special request received, no persistency 09:40:54.414297 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43179... * Connected to 127.0.0.1 (127.0.0.1) port 43179 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43179 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73771 === End of file http_verify.out === Start of file server.cmd Testnum 585 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73771 === End of file server.response === Start of file valgrind585 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind585 test 0584...[CURLOPT_MIMEPOST first set then set to NULL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind584 ./libtest/libtests lib589 http://127.0.0.1:42899/584 > log/39/stdout584 2> log/39/stderr584 584: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 584 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind584 ./libtest/libtests lib589 http://127.0.0.1:42899/584 > log/39/stdout584 2> log/39/stderr584 === End of file commands.log === Start of file http_server.log 09:40:54.432895 ====> Client connect 09:40:54.433240 accept_connection 3 returned 4 09:40:54.433417 accept_connection 3 returned 0 09:40:54.433717 Read 93 bytes 09:40:54.433851 Process 93 bytes request 09:40:54.433970 Got request: GET /verifiedserver HTTP/1.1 09:40:54.434072 Are-we-friendly question received 09:40:54.434379 Wrote request (93 bytes) input to log/39/server.input 09:40:54.434686 Identifying ourselves as friends 09:40:54.435417 Response sent (56 bytes) and written to log/39/server.response 09:40:54.435645 special request received, no persistency 09:40:54.435733 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 584 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind584 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind584 test 0581...[multi interface, multiple Content-Type: headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind581 ./libtest/libtests lib507 http://127.0.0.1:34639/581 > log/53/stdout581 2> log/53/stderr581 581: protocol FAILED! There was no content at all in the file log/53/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/53/ dir after test 581 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/53/valgrind581 ./libtest/libtests lib507 http://127.0.0.1:34639/581 > log/53/stdout581 2> log/53/stderr581 === End of file commands.log ==cannot find sshd = Start of file http_server.log 09:40:54.330855 ====> Client connect 09:40:54.331198 accept_connection 3 returned 4 09:40:54.331379 accept_connection 3 returned 0 09:40:54.332543 Read 93 bytes 09:40:54.332702 Process 93 bytes request 09:40:54.332793 Got request: GET /verifiedserver HTTP/1.1 09:40:54.332878 Are-we-friendly question received 09:40:54.333137 Wrote request (93 bytes) input to log/53/server.input 09:40:54.333349 Identifying ourselves as friends 09:40:54.334033 Response sent (56 bytes) and written to log/53/server.response 09:40:54.334141 special request received, no persistency 09:40:54.334214 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:34639... * Connected to 127.0.0.1 (127.0.0.1) port 34639 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34639 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73761 === End of file http_verify.out === Start of file server.cmd Testnum 581 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73761 === End of file server.response === Start of file valgrind581 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind581 test 0580...[multi interface, multiple Location: headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind580 ./libtest/libtests lib507 http://127.0.0.1:35945/580 > log/57/stdout580 2> log/57/stderr580 580: protocol FAILED! There was no content at all in the file log/57/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/57/ dir after test 580 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind580 ./libtest/libtests lib507 http://127.0.0.1:35945/580 > log/57/stdout580 2> log/57/stderr580 === End of file commands.log === Start of file http_server.log 09:40:54.303156 ====> Client connect 09:40:54.303725 accept_connection 3 returned 4 09:40:54.303976 accept_connection 3 returned 0 09:40:54.305038 Read 93 bytes 09:40:54.305199 Process 93 bytes request 09:40:54.305316 Got request: GET /verifiedserver HTTP/1.1 09:40:54.305418 Are-we-friendly question received 09:40:54.305825 Wrote request (93 bytes) input to log/57/server.input 09:40:54.306053 Identifying ourselves as friends 09:40:54.310865 Response sent (56 bytes) and written to log/57/server.response 09:40:54.310994 special request received, no persistency 09:40:54.311073 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35945... * Connected to 127.0.0.1 (127.0.0.1) port 35945 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35945 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73753 === End of file http_verify.out === Start of file server.cmd Testnum 580 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73753 === End of file server.response === Start of file valgrind580 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind580 cannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind597 ./libtest/libtests lib597 ftp://127.0.0.1:33177 > log/43/stdout597 2> log/43/stderr597 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind588 ./libtest/libtests lib525 ftp://127.0.0.1:40969/path/588 log/31/upload588 > log/31/stdout588 2> log/31/stderr588 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind598 ./libtest/libtests lib598 http://127.0.0.1:35697/598 > log/19/stdout598 2> log/19/stderr598 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind599 ./libtest/libtests lib599 http://127.0.0.1:44255/599 log/36/ip599 > log/36/stdout599 2> log/36/stderr599 test 0579...[small chunked HTTP POSTs with digest auth. and progress callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind579 ./libtest/libtests lib579 http://127.0.0.1:46727/579 log/58/ip579 > log/58/stdout579 2> log/58/stderr579 579: data FAILED: --- log/58/check-expected 2025-07-18 09:40:55.263697496 +0000 +++ log/58/check-generated 2025-07-18 09:40:55.262600817 +0000 @@ -1,17 +0,0 @@ -HTTP/1.1 100 Continue[CR][LF] -Server: Microsoft-IIS/5.0[CR][LF] -Date: Sun, 03 Apr 2005 14:57:45 GMT[CR][LF] -X-Powered-By: ASP.NET[CR][LF] -[CR][LF] -HTTP/1.1 401 authentication please swsbounce[CR][LF] -Server: Microsoft-IIS/6.0[CR][LF] -WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 0[CR][LF] -[CR][LF] -HTTP/1.1 200 A OK[CR][LF] -Server: Microsoft-IIS/6.0[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 3[CR][LF] -[CR][LF] -ok[LF] == Contents of files in the log/58/ dir after test 579 === Start of file check-expected HTTP/1.1 100 Continue[CR][LF] Server: Microsoft-IIS/5.0[CR][LF] Date: Sun, 03 Apr 2005 14:57:45 GMT[CR][LF] X-Powered-By: ASP.NET[CR][LF] [CR][LF] HTTP/1.1 401 authentication please swsbounce[CR][LF] Server: Microsoft-IIS/6.0[CR][LF] WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 0[CR][LF] [CR][LF] HTTP/1.1 200 A OK[CR][LF] Server: Microsoft-IIS/6.0[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 3[CR][LF] [CR][LF] ok[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind579 ./libtest/libtests lib579 http://127.0.0.1:46727/579 log/58/ip579 > log/58/stdout579 2> log/58/stderr579 === End of file commands.log === Start of file http_server.log 09:40:54.292386 ====> Client connect 09:40:54.292850 accept_connection 3 returned 4 09:40:54.293022 accept_connection 3 returned 0 09:40:54.293173 Read 93 bytes 09:40:54.293273 Process 93 bytes request 09:40:54.293366 Got request: GET /verifiedserver HTTP/1.1 09:40:54.296276 Are-we-friendly question received 09:40:54.296677 Wrote request (93 bytes) input to log/58/server.input 09:40:54.296897 Identifying ourselves as friends 09:40:54.298032 Response sent (56 bytes) and written to log/58/server.response 09:40:54.298154 special request received, no persistency 09:40:54.298230 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46727... * Connected to 127.0.0.1 (127.0.0.1) port 46727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73755 === End of file http_verify.out === Start of file server.cmd Testnum 579 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73755 === End of file server.response === Start of file valgrind579 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind579 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind586 ./libtest/libtests lib500 ftp://127.0.0.1:36539/586 > log/56/stdout586 2> log/56/stderr586 test 0575...[FTP wildcard download - dup_handle and multi interface] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind575 ./libtest/libtests lib575 ftp://127.0.0.1:38963/fully_simulated/UNIX/* > log/62/stdout575 2> log/62/stderr575 575: stdout FAILED: --- log/62/check-expected 2025-07-18 09:40:55.333416381 +0000 +++ log/62/check-generated 2025-07-18 09:40:55.331600782 +0000 @@ -1,15 +0,0 @@ -This file should have permissions 444[LF] -This file should have permissions 666[LF] -This file should have permissions 777[LF] -This is content of file "file.txt"[LF] -Some junk ;-) This file does not really exist.[LF] -This file should have permissions 444[LF] -This file should have permissions 666[LF] -This file should have permissions 777[LF] -This is content of file "file.txt"[LF] -Some junk ;-) This file does not really exist.[LF] -This file should have permissions 444[LF] -This file should have permissions 666[LF] -This file should have permissions 777[LF] -This is content of file "file.txt"[LF] -Some junk ;-) This file does not really exist.[LF] == Contents of files in the log/62/ dir after test 575 === Start of file check-expected This file should have permissions 444[LF] This file should have permissions 666[LF] This file should have permissions 777[LF] This is content of file "file.txt"[LF] Some junk ;-) This file does not really exist.[LF] This file should have permissions 444[LF] This file should have permissions 666[LF] This file should have permissions 777[LF] This is content of file "file.txt"[LF] Some junk ;-) This file does not really exist.[LF] This file should have permissions 444[LF] This file should have permissions 666[LF] This file should have permissions 777[LF] This is content of file "file.txt"[LF] Some junk ;-) This file does not really exist.[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/62/valgrind575 ./libtest/libtests lib575 ftp://127.0.0.1:38963/fully_simulated/UNIX/* > log/62/stdout575 2> log/62/stderr575 === End of file commands.log === Start of file ftp_server.log 09:40:53.955895 ====> Client connect 09:40:53.960736 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:53.963835 < "USER anonymous" 09:40:53.964252 > "331 We are happy you popped in![CR][LF]" 09:40:53.974578 < "PASS ftp@example.com" 09:40:53.977957 > "230 Welcome you silly person[CR][LF]" 09:40:53.980170 < "PWD" 09:40:53.980638 > "257 "/" is current directory[CR][LF]" 09:40:53.984051 < "EPSV" 09:40:53.984362 ====> Passive DATA channel requested by client 09:40:53.984572 DATA sockfilt for passive data channel starting... 09:40:53.997214 DATA sockfilt for passive data channel started (pid 104620) 09:40:53.998145 DATA sockfilt for passive data channel listens on port 39301 09:40:53.998571 > "229 Entering Passive Mode (|||39301|)[LF]" 09:40:53.998902 Client has been notified that DATA conn will be accepted on port 39301 09:40:54.001337 Client connects to port 39301 09:40:54.001654 ====> Client established passive DATA connection on port 39301 09:40:54.002550 < "TYPE I" 09:40:54.003073 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:54.005247 < "SIZE verifiedserver" 09:40:54.006626 > "213 17[CR][LF]" 09:40:54.007841 < "RETR verifiedserver" 09:40:54.008821 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:54.010478 =====> Closing passive DATA connection... 09:40:54.010686 Server disconnects passive DATA connection 09:40:54.012636 Fancy that; client wants to DISC, too 09:40:54.013405 Server disconnected passive DATA connection 09:40:54.013609 DATA sockfilt for passive data channel quits (pid 104620) 09:40:54.015496 DATA sockfilt for passive data channel quit (pid 104620) 09:40:54.015737 =====> Closed passive DATA connection 09:40:54.018913 > "226 File transfer complete[CR][LF]" 09:40:54.052859 < "QUIT" 09:40:54.053955 > "221 bye bye baby[CR][LF]" 09:40:54.059883 MAIN sockfilt said DISC 09:40:54.060210 ====> Client disconnected 09:40:54.060663 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:54.207843 ====> Client connect 09:40:54.214929 Received DATA (on stdin) 09:40:54.215060 > 160 bytes data, server => client 09:40:54.215173 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:54.215262 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:54.215348 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:54.216304 < 16 bytes data, client => server 09:40:54.216530 'USER anonymous\r\n' 09:40:54.218309 Received DATA (on stdin) 09:40:54.218434 > 33 bytes data, server => client 09:40:54.218617 '331 We are happy you popped in!\r\n' 09:40:54.227405 < 22 bytes data, client => server 09:40:54.227636 'PASS ftp@example.com\r\n' 09:40:54.228770 Received DATA (on stdin) 09:40:54.229028 > 30 bytes data, server => client 09:40:54.232028 '230 Welcome you silly person\r\n' 09:40:54.233026 < 5 bytes data, client => server 09:40:54.233163 'PWD\r\n' 09:40:54.234756 Received DATA (on stdin) 09:40:54.234890 > 30 bytes data, server => client 09:40:54.234985 '257 "/" is current directory\r\n' 09:40:54.235715 < 6 bytes data, client => server 09:40:54.235865 'EPSV\r\n' 09:40:54.252956 Received DATA (on stdin) 09:40:54.253105 > 38 bytes data, server => client 09:40:54.253194 '229 Entering Passive Mode (|||39301|)\n' 09:40:54.254706 < 8 bytes data, client => server 09:40:54.254829 'TYPE I\r\n' 09:40:54.257118 Received DATA (on stdin) 09:40:54.257263 > 33 bytes data, server => client 09:40:54.257359 '200 I modify TYPE as you wanted\r\n' 09:40:54.258126 < 21 bytes data, client => server 09:40:54.258278 'SIZE verifiedserver\r\n' 09:40:54.259389 Received DATA (on stdin) 09:40:54.259614 > 8 bytes data, server => client 09:40:54.259819 '213 17\r\n' 09:40:54.260798 < 21 bytes data, client => server 09:40:54.260927 'RETR verifiedserver\r\n' 09:40:54.262055 Received DATA (on stdin) 09:40:54.262248 > 29 bytes data, server => client 09:40:54.263158 '150 Binary junk (17 bytes).\r\n' 09:40:54.269851 Received DATA (on stdin) 09:40:54.269980 > 28 bytes data, server => client 09:40:54.271425 '226 File transfer complete\r\n' 09:40:54.305837 < 6 bytes data, client => server 09:40:54.306014 'QUIT\r\n' 09:40:54.306955 Received DATA (on stdin) 09:40:54.307069 > 18 bytes data, server => client 09:40:54.307231 '221 bye bye baby\r\n' 09:40:54.308569 ====> Client disconnect 09:40:54.314736 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:53.249546 Running IPv4 version 09:40:53.250008 Listening on port 39301 09:40:53.250390 Wrote pid 104620 to log/62/server/ftp_sockdata.pid 09:40:53.250650 Received PING (on stdin) 09:40:53.251292 Received PORT (on stdin) 09:40:53.254353 ====> Client connect 09:40:53.262906 Received DATA (on stdin) 09:40:53.263044 > 17 bytes data, server => client 09:40:53.264612 'WE ROOLZ: 78462\r\n' 09:40:53.265423 ====> Client disconnect 09:40:53.266073 Received DISC (on stdin) 09:40:53.266188 Crikey! Client also wants to disconnect 09:40:53.266671 Received ACKD (on stdin) 09:40:53.267636 Received QUIT (on stdin) 09:40:53.267766 quits 09:40:53.268222 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 575 === End of file server.cmd === Start of file valgrind575 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind:CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind595 ./libtest/libtests lib500 ftp://127.0.0.1:36293/595 log/9/ip595 > log/9/stdout595 2> log/9/stderr595 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind577 ./libtest/libtests lib567 rtsp://127.0.0.1:41295/577 > log/61/stdout577 2> log/61/stderr577 was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind575 test 0576...[FTP wildcard - skip/parser_correctness/CURLOPT_FNMATCH_FUNCTION (Unix)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind576 ./libtest/libtests lib576 ftp://127.0.0.1:39979/fully_simulated/UNIX/* > log/4/stdout576 2> log/4/stderr576 576: stdout FAILED: --- log/4/check-expected 2025-07-18 09:40:55.411724181 +0000 +++ log/4/check-generated 2025-07-18 09:40:55.409600742 +0000 @@ -1,152 +0,0 @@ -=============================================================[LF] -Remains: 14[LF] -Filename: .[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 20480B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 27 5:12[LF] -Filetype: directory[LF] -=============================================================[LF] -Remains: 13[LF] -Filename: ..[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 20480B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 23 3:12[LF] -Filetype: directory[LF] -=============================================================[LF] -Remains: 12[LF] -Filename: chmod1[LF] -Permissions: r--r--r-- (parsed => 444)[LF] -Size: 38B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Jan 11 10:00[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] -This file should have permissions 444[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 11[LF] -Filename: chmod2[LF] -Permissions: rw-rw-rw- (parsed => 666)[LF] -Size: 38B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Feb 1 8:00[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] -This file should have permissions 666[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 10[LF] -Filename: chmod3[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 38B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Feb 1 8:00[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] -This file should have permissions 777[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 9[LF] -Filename: chmod4[LF] -Permissions: --S--S--t (parsed => 7001)[LF] -Size: 4096B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: May 4 4:31[LF] -Filetype: directory[LF] -=============================================================[LF] -Remains: 8[LF] -Filename: chmod5[LF] -Permissions: --s--s--T (parsed => 7110)[LF] -Size: 4096B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: May 4 4:31[LF] -Filetype: directory[LF] -=============================================================[LF] -Remains: 7[LF] -Filename: empty_file.dat[LF] -Permissions: rw-r--r-- (parsed => 644)[LF] -Size: 0B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 27 11:01[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 6[LF] -Filename: file.txt[LF] -Permissions: rw-r--r-- (parsed => 644)[LF] -Size: 35B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 27 11:01[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] -This is content of file "file.txt"[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 5[LF] -Filename: link[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 0B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Jan 6 4:42[LF] -Filetype: symlink[LF] -Target: file.txt[LF] -=============================================================[LF] -Remains: 4[LF] -Filename: link_absolute[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 0B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Jan 6 4:45[LF] -Filetype: symlink[LF] -Target: /data/ftp/file.txt[LF] -=============================================================[LF] -Remains: 3[LF] -Filename: .NeXT[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 4096B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Jan 23 2:05[LF] -Filetype: directory[LF] -=============================================================[LF] -Remains: 2[LF] -Filename: someothertext.txt[LF] -Permissions: rw-r--r-- (parsed => 644)[LF] -Size: 47B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 27 11:01[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] -# THIS CONTENT WAS SKIPPED IN CHUNK_BGN CALLBACK #[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 1[LF] -Filename: weirddir.txt[LF] -Permissions: rwxr-xrwx (parsed => 757)[LF] -Size: 4096B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 23 3:12[LF] -Filetype: directory[LF] -=============================================================[LF] == Contents of files in the log/4/ dir after test 576 === Start of file check-expected =============================================================[LF] Remains: 14[LF] Filename: .[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 20480B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 27 5:12[LF] Filetype: directory[LF] =============================================================[LF] Remains: 13[LF] Filename: ..[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 20480B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 23 3:12[LF] Filetype: directory[LF] =============================================================[LF] Remains: 12[LF] Filename: chmod1[LF] Permissions: r--r--r-- (parsed => 444)[LF] Size: 38B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Jan 11 10:00[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] This file should have permissions 444[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 11[LF] Filename: chmod2[LF] Permissions: rw-rw-rw- (parsed => 666)[LF] Size: 38B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Feb 1 8:00[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] This file should have permissions 666[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 10[LF] Filename: chmod3[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 38B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Feb 1 8:00[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] This file should have permissions 777[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 9[LF] Filename: chmod4[LF] Permissions: --S--S--t (parsed => 7001)[LF] Size: 4096B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: May 4 4:31[LF] Filetype: directory[LF] =============================================================[LF] Remains: 8[LF] Filename: chmod5[LF] Permissions: --s--s--T (parsed => 7110)[LF] Size: 4096B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: May 4 4:31[LF] Filetype: directory[LF] =============================================================[LF] Remains: 7[LF] Filename: empty_file.dat[LF] Permissions: rw-r--r-- (parsed => 644)[LF] Size: 0B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 27 11:01[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 6[LF] Filename: file.txt[LF] Permissions: rw-r--r-- (parsed => 644)[LF] Size: 35B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 27 11:01[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] This is content of file "file.txt"[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 5[LF] Filename: link[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 0B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Jan 6 4:42[LF] Filetype: symlink[LF] Target: file.txt[LF] =============================================================[LF] Remains: 4[LF] Filename: link_absolute[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 0B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Jan 6 4:45[LF] Filetype: symlink[LF] Target: /data/ftp/file.txt[LF] =============================================================[LF] Remains: 3[LF] Filename: .NeXT[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 4096B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Jan 23 2:05[LF] Filetype: directory[LF] =============================================================[LF] Remains: 2[LF] Filename: someothertext.txt[LF] Permissions: rw-r--r-- (parsed => 644)[LF] Size: 47B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 27 11:01[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] # THIS CONTENT WAS SKIPPED IN CHUNK_BGN CALLBACK #[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 1[LF] Filename: weirddir.txt[LF] Permissions: rwxr-xrwx (parsed => 757)[LF] Size: 4096B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 23 3:12[LF] Filetype: directory[LF] =============================================================[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind576 ./libtest/libtests lib576 ftp://127.0.0.1:39979/fully_simulated/UNIX/* > log/4/stdout576 2> log/4/stderr576 === End of file commands.log === Start of file ftp_server.log 09:40:53.993888 ====> Client connect 09:40:53.998399 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:54.002646 < "USER anonymous" 09:40:54.003146 > "331 We are happy you popped in![CR][LF]" 09:40:54.006627 < "PASS ftp@example.com" 09:40:54.007107 > "230 Welcome you silly person[CR][LF]" 09:40:54.010548 < "PWD" 09:40:54.010987 > "257 "/" is current directory[CR][LF]" 09:40:54.013045 < "EPSV" 09:40:54.013334 ====> Passive DATA channel requested by client 09:40:54.013547 DATA sockfilt for passive data channel starting... 09:40:54.033351 DATA sockfilt for passive data channel started (pid 104661) 09:40:54.034822 DATA sockfilt for passive data channel listens on port 44751 09:40:54.035464 > "229 Entering Passive Mode (|||44751|)[LF]" 09:40:54.035978 Client has been notified that DATA conn will be accepted on port 44751 09:40:54.038381 Client connects to port 44751 09:40:54.038734 ====> Client established passive DATA connection on port 44751 09:40:54.041925 < "TYPE I" 09:40:54.042426 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:54.045083 < "SIZE verifiedserver" 09:40:54.046725 > "213 17[CR][LF]" 09:40:54.048087 < "RETR verifiedserver" 09:40:54.049124 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:54.051399 =====> Closing passive DATA connection... 09:40:54.051666 Server disconnects passive DATA connection 09:40:54.052174 Fancy that; client wants to DISC, too 09:40:54.052528 Server disconnected passive DATA connection 09:40:54.052872 DATA sockfilt for passive data channel quits (pid 104661) 09:40:54.054956 DATA sockfilt for passive data channel quit (pid 104661) 09:40:54.055196 =====> Closed passive DATA connection 09:40:54.055990 > "226 File transfer complete[CR][LF]" 09:40:54.094183 < "QUIT" 09:40:54.094888 > "221 bye bye baby[CR][LF]" 09:40:54.097400 MAIN sockfilt said DISC 09:40:54.098601 ====> Client disconnected 09:40:54.099229 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:54.247001 ====> Client connect 09:40:54.252616 Received DATA (on stdin) 09:40:54.252795 > 160 bytes data, server => client 09:40:54.252902 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:54.253007 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:54.253101 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:54.255196 < 16 bytes data, client => server 09:40:54.255349 'USER anonymous\r\n' 09:40:54.258610 Received DATA (on stdin) 09:40:54.258762 > 33 bytes data, server => client 09:40:54.258846 '331 We are happy you popped in!\r\n' 09:40:54.259568 < 22 bytes data, client => server 09:40:54.259712 'PASS ftp@example.com\r\n' 09:40:54.262540 Received DATA (on stdin) 09:40:54.262704 > 30 bytes data, server => client 09:40:54.262790 '230 Welcome you silly person\r\n' 09:40:54.263426 < 5 bytes data, client => server 09:40:54.263647 'PWD\r\n' 09:40:54.265086 Received DATA (on stdin) 09:40:54.265220 > 30 bytes data, server => client 09:40:54.265308 '257 "/" is current directory\r\n' 09:40:54.265998 < 6 bytes data, client => server 09:40:54.266129 'EPSV\r\n' 09:40:54.289209 Received DATA (on stdin) 09:40:54.289426 > 38 bytes data, server => client 09:40:54.289633 '229 Entering Passive Mode (|||44751|)\n' 09:40:54.291148 < 8 bytes data, client => server 09:40:54.291334 'TYPE I\r\n' 09:40:54.296546 Received DATA (on stdin) 09:40:54.296714 > 33 bytes data, server => client 09:40:54.296810 '200 I modify TYPE as you wanted\r\n' 09:40:54.297748 < 21 bytes data, client => server 09:40:54.297933 'SIZE verifiedserver\r\n' 09:40:54.299279 Received DATA (on stdin) 09:40:54.299437 > 8 bytes data, server => client 09:40:54.299717 '213 17\r\n' 09:40:54.300937 < 21 bytes data, client => server 09:40:54.301079 'RETR verifiedserver\r\n' 09:40:54.302316 Received DATA (on stdin) 09:40:54.302546 > 29 bytes data, server => client 09:40:54.303573 '150 Binary junk (17 bytes).\r\n' 09:40:54.309219 Received DATA (on stdin) 09:40:54.309374 > 28 bytes data, server => cCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind596 ./libtest/libtests lib500 ftp://127.0.0.1:41719/596 log/45/ip596 activeftp > log/45/stdout596 2> log/45/stderr596 lient 09:40:54.310004 '226 File transfer complete\r\n' 09:40:54.346753 < 6 bytes data, client => server 09:40:54.346918 'QUIT\r\n' 09:40:54.349303 Received DATA (on stdin) 09:40:54.349658 > 18 bytes data, server => client 09:40:54.349762 '221 bye bye baby\r\n' 09:40:54.350714 ====> Client disconnect 09:40:54.351703 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:54.283169 Running IPv4 version 09:40:54.284068 Listening on port 44751 09:40:54.286249 Wrote pid 104661 to log/4/server/ftp_sockdata.pid 09:40:54.286554 Received PING (on stdin) 09:40:54.287735 Received PORT (on stdin) 09:40:54.291594 ====> Client connect 09:40:54.303346 Received DATA (on stdin) 09:40:54.303702 > 17 bytes data, server => client 09:40:54.303842 'WE ROOLZ: 77399\r\n' 09:40:54.304684 ====> Client disconnect 09:40:54.305910 Received DISC (on stdin) 09:40:54.306034 Crikey! Client also wants to disconnect 09:40:54.306217 Received ACKD (on stdin) 09:40:54.306932 Received QUIT (on stdin) 09:40:54.307066 quits 09:40:54.307528 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 576 === End of file server.cmd === Start of file valgrind576 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind576 test 0595...[verify close callbacks with passive FTP] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind595 ./libtest/libtests lib500 ftp://127.0.0.1:36293/595 log/9/ip595 > log/9/stdout595 2> log/9/stderr595 595: protocol FAILED! There was no content at all in the file log/9/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/9/ dir after test 595 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind595 ./libtest/libtests lib500 ftp://127.0.0.1:36293/595 log/9/ip595 > log/9/stdout595 2> log/9/stderr595 === End of file commands.log === Start of file ftp_server.log 09:40:54.362291 ====> Client connect 09:40:54.365034 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:54.367156 < "USER anonymous" 09:40:54.368184 > "331 We are happy you popped in![CR][LF]" 09:40:54.370217 < "PASS ftp@example.com" 09:40:54.371575 > "230 Welcome you silly person[CR][LF]" 09:40:54.373056 < "PWD" 09:40:54.373572 > "257 "/" is current directory[CR][LF]" 09:40:54.375940 < "EPSV" 09:40:54.376261 ====> Passive DATA channel requested by client 09:40:54.376459 DATA sockfilt for passive data channel starting... 09:40:54.393332 DATA sockfilt for passive data channel started (pid 104951) 09:40:54.394415 DATA sockfilt for passive data channel listens on port 41443 09:40:54.395048 > "229 Entering Passive Mode (|||41443|)[LF]" 09:40:54.395309 Client has been notified that DATA conn will be accepted on port 41443 09:40:54.398191 Client connects to port 41443 09:40:54.398505 ====> Client established passive DATA connection on port 41443 09:40:54.399363 < "TYPE I" 09:40:54.399724 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:54.401224 < "SIZE verifiedserver" 09:40:54.401624 > "213 17[CR][LF]" 09:40:54.405851 < "RETR verifiedserver" 09:40:54.407087 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:54.407715 =====> Closing passive DATA connection... 09:40:54.408021 Server disconnects passive DATA connection 09:40:54.409966 Server disconnected passive DATA connection 09:40:54.410273 DATA sockfilt for passive data channel quits (pid 104951) 09:40:54.412549 DATA sockfilt for passive data channel quit (pid 104951) 09:40:54.412879 =====> Closed passive DATA connection 09:40:54.413627 > "226 File transfer complete[CR][LF]" 09:40:54.451100 < "QUIT" 09:40:54.451438 > "221 bye bye baby[CR][LF]" 09:40:54.459887 MAIN sockfilt said DISC 09:40:54.460266 ====> Client disconnected 09:40:54.460877 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:53.615301 ====> Client connect 09:40:53.617501 Received DATA (on stdin) 09:40:53.617673 > 160 bytes data, server => client 09:40:53.617873 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:53.618014 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:53.618097 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:53.619184 < 16 bytes data, client => server 09:40:53.619307 'USER anonymous\r\n' 09:40:53.621535 Received DATA (on stdin) 09:40:53.621689 > 33 bytes data, server => client 09:40:53.622178 '331 We are happy you popped in!\r\n' 09:40:53.623051 < 22 bytes data, client => server 09:40:53.623206 'PASS ftp@example.com\r\n' 09:40:53.624541 Received DATA (on stdin) 09:40:53.624698 > 30 bytes data, server => client 09:40:53.624875 '230 Welcome you silly person\r\n' 09:40:53.625613 < 5 bytes data, client => server 09:40:53.625837 'PWD\r\n' 09:40:53.627706 Received DATA (on stdin) 09:40:53.627882 > 30 bytes data, server => client 09:40:53.628012 '257 "/" is current directory\r\n' 09:40:53.628814 < 6 bytes data, client => server 09:40:53.628964 'EPSV\r\n' 09:40:53.649557 Received DATA (on stdin) 09:40:53.649719 > 38 bytes data, server => client 09:40:53.649816 '229 Entering Passive Mode (|||41443|)\n' 09:40:53.651829 < 8 bytes data, client => server 09:40:53.651969 'TYPE I\r\n' 09:40:53.653420 Received DATA (on stdin) 09:40:53.653652 > 33 bytes data, server => client 09:40:53.653745 '200 I modify TYPE as you wanted\r\n' 09:40:53.654331 < 21 bytes data, client => server 09:40:53.654558 'SIZE verifiedserver\r\n' 09:40:53.655321 Received DATA (on stdin) 09:40:53.655550 > 8 bytes data, server => client 09:40:53.655659 '213 17\r\n' 09:40:53.658912 < 21 bytes data, client => server 09:40:53.659055 'RETR verifiedserver\r\n' 09:40:53.659987 Received DATA (on stdin) 09:40:53.660168 > 29 bytes data, server => client 09:40:53.660351 '150 Binary junk (17 bytes).\r\n' 09:40:53.666942 Received DATA (on stdin) 09:40:53.667084 > 28 bytes data, server => client 09:40:53.667755 '226 File transfer complete\r\n' 09:40:53.703882 < 6 bytes data, client => server 09:40:53.704043 'QUIT\r\n' 09:40:53.706783 Received DATA (on stdin) 09:40:53.706932 > 18 bytes data, server => client 09:40:53.707007 '221 bye bye baby\r\n' 09:40:53.712213 ====> Client disconnect 09:40:53.714925 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:54.645232 Running IPv4 version 09:40:54.645930 Listening on port 41443 09:40:54.646359 Wrote pid 104951 to log/9/server/ftp_sockdata.pid 09:40:54.646671 Received PING (on stdin) 09:40:54.647528 Received PORT (on stdin) 09:40:54.651128 ====> Client connect 09:40:54.662168 Received DATA (on stdin) 09:40:54.662388 > 17 bytes data, server => client 09:40:54.662555 'WE ROOLZ: 77386\r\n' 09:40:54.662953 Received DISC (on stdin) 09:40:54.663128 ====> Client forcibly disconnected 09:40:54.664243 Received QUIT (on stdin) 09:40:54.664370 quits 09:40:54.664928 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 595 === End of file server.cmd === Start of file valgrind595 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind595 test 0593...[FTP multi PORT upload, no data conn and no transient neg. reply] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind593 ./libtest/libtests lib591 ftp://127.0.0.1:32859/path/593 8 log/10/upload593 > log/10/stdout593 2> log/10/stderr593 593: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 593 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind593 ./libtest/libtests lib591 ftp://127.0.0.1:32859/path/593 8 log/10/upload593 > log/10/stdout593 2> log/10/stderr593 === End of file commands.log === Start of file ftp_server.log 09:40:54.328006 ====> Client connect 09:40:54.330985 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:54.333812 < "USER anonymous" 09:40:54.334262 > "331 We are happy you popped in![CR][LF]" 09:40:54.336627 < "PASS ftp@example.com" 09:40:54.337430 > "230 Welcome you silly person[CR][LF]" 09:40:54.339283 < "PWD" 09:40:54.339639 > "257 "/" is current directory[CR][LF]" 09:40:54.341658 < "EPSV" 09:40:54.342024 ====> Passive DATA channel requested by client 09:40:54.342216 DATA sockfilt for passive data channel starting... 09:40:54.360462 DATA sockfilt for passive data channel started (pid 104941) 09:40:54.361642 DATA sockfilt for passive data channel listens on port 42723 09:40:54.362216 > "229 Entering Passive Mode (|||42723|)[LF]" 09:40:54.362432 Client has been notified that DATA conn will be accepted on port 42723 09:40:54.366065 Client connects to port 42723 09:40:54.366389 ====> Client established passive DATA connection on port 42723 09:40:54.367403 < "TYPE I" 09:40:54.369948 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:54.371916 < "SIZE verifiedserver" 09:40:54.372470 > "213 17[CR][LF]" 09:40:54.374117 < "RETR verifiedserver" 09:40:54.374592 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:54.375356 =====> Closing passive DATA connection... 09:40:54.375586 Server disconnects passive DATA connection 09:40:54.380948 Server disconnected passive DATA connection 09:40:54.381234 DATA sockfilt for passive data channel quits (pid 104941) 09:40:54.383850 DATA sockfilt for passive data channel quit (pid 104941) 09:40:54.384095 =====> Closed passive DATA connection 09:40:54.385080 > "226 File transfer complete[CR][LF]" 09:40:54.422487 < "QUIT" 09:40:54.422892 > "221 bye bye baby[CR][LF]" 09:40:54.427613 MAIN sockfilt said DISC 09:40:54.428571 ====> Client disconnected 09:40:54.429255 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:54.581023 ====> Client connect 09:40:54.582973 Received DATA (on stdin) 09:40:54.583128 > 160 bytes data, server => client 09:40:54.585061 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:54.585217 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:54.585315 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:54.586124 < 16 bytes data, client => server 09:40:54.586304 'USER anonymous\r\n' 09:40:54.588402 Received DATA (on stdin) 09:40:54.588633 > 33 bytes data, server => client 09:40:54.588805 '331 We are happy you popped in!\r\n' 09:40:54.589600 < 22 bytes data, client => server 09:40:54.589745 'PASS ftp@example.com\r\n' 09:40:54.590781 Received DATA (on stdin) 09:40:54.590923 > 30 bytes data, server => client 09:40:54.591428 '230 Welcome you silly person\r\n' 09:40:54.592156 < 5 bytes data, client => server 09:40:54.592335 'PWD\r\n' 09:40:54.593718 Received DATA (on stdin) 09:40:54.593846 > 30 bytes data, server => client 09:40:54.593929 '257 "/" is current directory\r\n' 09:40:54.594634 < 6 bytes data, client => server 09:40:54.594785 'EPSV\r\n' 09:40:54.615895 Received DATA (on stdin) 09:40:54.616081 > 38 bytes data, server => client 09:40:54.616171 '229 Entering Passive Mode (|||42723|)\n' 09:40:54.617797 < 8 bytes data, client => server 09:40:54.617948 'TYPE I\r\n' 09:40:54.621572 Received DATA (on stdin) 09:40:54.621743 > 33 bytes data, server => client 09:40:54.624002 '200 I modify TYPE as you wanted\r\n' 09:40:54.625034 < 21 bytes data, client => server 09:40:54.625215 'SIZE verifiedserver\r\n' 09:40:54.626184 Received DATA (on stdin) 09:40:54.626359 > 8 bytes data, server => client 09:40:54.626531 '213 17\r\n' 09:40:54.627237 < 21 bytes data, client => server 09:40:54.627391 'RETR verifiedserver\r\n' 09:40:54.628287 Received DATA (on stdin) 09:40:54.628513 > 29 bytes data, server => client 09:40:54.628654 '150 Binary junk (17 bytes).\r\n' 09:40:54.638122 Received DATA (on stdin) 09:40:54.638265 > 28 bytes data, server => client 09:40:54.638422 '226 File transfer complete\r\n' 09:40:54.675329 < 6 bytes data, client => server 09:40:54.675549 'QUIT\r\n' 09:40:54.676903 Received DATA (on stdin) 09:40:54.677032 > 18 bytes data, server => client 09:40:54.677118 '221 bye bye baby\r\n' 09:40:54.681020 ====> Client disconnect 09:40:54.681763 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:54.607840 Running IPv4 version 09:40:54.612530 Listening on port 42723 09:40:54.613024 Wrote pid 104941 to log/10/server/ftp_sockdata.pid 09:40:54.613300 Received PING (on stdin) 09:40:54.614647 Received PORT (on stdin) 09:40:54.617409 ====> Client connect 09:40:54.631597 Received DATA (on stdin) 09:40:54.631806 > 17 bytes data, server => client 09:40:54.631890 'WE ROOLZ: 77425\r\n' 09:40:54.632535 Received DISC (on stdin) 09:40:54.632720 ====> Client forcibly disconnected 09:40:54.635265 Received QUIT (on stdin) 09:40:54.635392 quits 09:40:54.635857 =========CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind591 ./libtest/libtests lib591 ftp://127.0.0.1:33875/path/591 8 log/17/upload591 > log/17/stdout591 2> log/17/stderr591 ===> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd NODATACONN150 REPLY EPRT 500 we don't like EPRT now Testnum 593 === End of file server.cmd === Start of file upload593 Moooooooooooo for 593 upload this === End of file upload593 === Start of file valgrind593 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind593 test 0592...[FTP multi PORT and 421 on upload] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind592 ./libtest/libtests lib591 ftp://127.0.0.1:34087/path/592 8 log/13/upload592 > log/13/stdout592 2> log/13/stderr592 592: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 592 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind592 ./libtest/libtests lib591 ftp://127.0.0.1:34087/path/592 8 log/13/upload592 > log/13/stdout592 2> log/13/stderr592 === End of file commands.log === Start of file ftp_server.log 09:40:54.244623 ====> Client connect 09:40:54.246192 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:54.249314 < "USER anonymous" 09:40:54.249893 > "331 We are happy you popped in![CR][LF]" 09:40:54.251992 < "PASS ftp@example.com" 09:40:54.253640 > "230 Welcome you silly person[CR][LF]" 09:40:54.255014 < "PWD" 09:40:54.255831 > "257 "/" is current directory[CR][LF]" 09:40:54.257936 < "EPSV" 09:40:54.258234 ====> Passive DATA channel requested by client 09:40:54.258551 DATA sockfilt for passive data channel starting... 09:40:54.272047 DATA sockfilt for passive data channel started (pid 104912) 09:40:54.273111 DATA sockfilt for passive data channel listens on port 39681 09:40:54.273538 > "229 Entering Passive Mode (|||39681|)[LF]" 09:40:54.273902 Client has been notified that DATA conn will be accepted on port 39681 09:40:54.276419 Client connects to port 39681 09:40:54.276729 ====> Client established passive DATA connection on port 39681 09:40:54.277590 < "TYPE I" 09:40:54.278062 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:54.280209 < "SIZE verifiedserver" 09:40:54.281057 > "213 17[CR][LF]" 09:40:54.283040 < "RETR verifiedserver" 09:40:54.284398 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:54.285203 =====> Closing passive DATA connection... 09:40:54.285425 Server disconnects passive DATA connection 09:40:54.287317 Server disconnected passive DATA connection 09:40:54.287589 DATA sockfilt for passive data channel quits (pid 104912) 09:40:54.289377 DATA sockfilt for passive data channel quit (pid 104912) 09:40:54.289616 =====> Closed passive DATA connection 09:40:54.290565 > "226 File transfer complete[CR][LF]" 09:40:54.326587 < "QUIT" 09:40:54.327105 > "221 bye bye baby[CR][LF]" 09:40:54.331907 MAIN sockfilt said DISC 09:40:54.332254 ====> Client disconnected 09:40:54.332839 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:53.497334 ====> Client connect 09:40:53.500596 Received DATA (on stdin) 09:40:53.500777 > 160 bytes data, server => client 09:40:53.500884 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:53.501003 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:53.501108 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:53.501944 < 16 bytes data, client => server 09:40:53.502082 'USER anonymous\r\n' 09:40:53.503424 Received DATA (on stdin) 09:40:53.504032 > 33 bytes data, server => client 09:40:53.504125 '331 We are happy you popped in!\r\n' 09:40:53.504742 < 22 bytes data, client => server 09:40:53.504884 'PASS ftp@example.com\r\n' 09:40:53.506214 Received DATA (on stdin) 09:40:53.506355 > 30 bytes data, server => client 09:40:53.506581 '230 Welcome you silly person\r\n' 09:40:53.507912 < 5 bytes data, client => server 09:40:53.508039 'PWD\r\n' 09:40:53.509110 Received DATA (on stdin) 09:40:53.509251 > 30 bytes data, server => client 09:40:53.509846 '257 "/" is current directory\r\n' 09:40:53.510620 < 6 bytes data, client => server 09:40:53.510784 'EPSV\r\n' 09:40:53.528044 Received DATA (on stdin) 09:40:53.528192 > 38 bytes data, server => client 09:40:53.528283 '229 Entering Passive Mode (|||39681|)\n' 09:40:53.529800 < 8 bytes data, client => server 09:40:53.529927 'TYPE I\r\n' 09:40:53.532181 Received DATA (on stdin) 09:40:53.532324 > 33 bytes data, server => client 09:40:53.532411 '200 I modify TYPE as you wanted\r\n' 09:40:53.533069 < 21 bytes data, client => server 09:40:53.533201 'SIZE verifiedserver\r\n' 09:40:53.534332 Received DATA (on stdin) 09:40:53.534540 > 8 bytes data, server => client 09:40:53.535071 '213 17\r\n' 09:40:53.535925 < 21 bytes data, client => server 09:40:53.536062 'RETR verifiedserver\r\n' 09:40:53.537144 Received DATA (on stdin) 09:40:53.537279 > 29 bytes data, server => client 09:40:53.537437 '150 Binary junk (17 bytes).\r\n' 09:40:53.543714 Received DATA (on stdin) 09:40:53.543854 > 28 bytes data, server => client 09:40:53.544023 '226 File transfer complete\r\n' 09:40:53.579405 < 6 bytes data, client => server 09:40:53.579647 'QUIT\r\n' 09:40:53.581215 Received DATA (on stdin) 09:40:53.581356 > 18 bytes data, server => client 09:40:53.581512 '221 bye bye baby\r\n' 09:40:53.582618 ====> Client disconnect 09:40:53.586933 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:54.524229 Running IPv4 version 09:40:54.524860 Listening on port 39681 09:40:54.525210 Wrote pid 104912 to log/13/server/ftp_sockdata.pid 09:40:54.525358 Received PING (on stdin) 09:40:54.526143 Received PORT (on stdin) 09:40:54.529533 ====> Client connect 09:40:54.539437 Received DATA (on stdin) 09:40:54.539658 > 17 bytes data, server => client 09:40:54.539742 'WE ROOLZ: 79551\r\n' 09:40:54.540024 Received DISC (on stdin) 09:40:54.540170 ====> Client forcibly disconnected 09:40:54.541675 Received QUIT (on stdin) 09:40:54.541804 quits 09:40:54.542181 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd NODATACONN421 REPLY EPRT 500 we don't like EPRT now Testnum 592 === End of file server.cmd === Start of file upload592 Moooooooooooo for 592 upload this === End of file upload592 === Start of file valgrind592 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind592 test 0590...[HTTP proxy offers Negotiate+NTLM, use only NTLM] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind590 ./libtest/libtests lib590 http://test.remote.example.com/path/590 http://127.0.0.1:41285 > log/18/stdout590 2> log/18/stderr590 590: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 590 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind590 ./libtest/libtests lib590 http://test.remote.example.com/path/590 http://127.0.0.1:41285 > log/18/stdout590 2> log/18/stderr590 === End of file commands.log === Start of file http_server.log 09:40:54.453436 ====> Client connect 09:40:54.454060 accept_connection 3 returned 4 09:40:54.454229 accept_connection 3 returned 0 09:40:54.455359 Read 93 bytes 09:40:54.455579 Process 93 bytes request 09:40:54.455680 Got request: GET /verifiedserver HTTP/1.1 09:40:54.455780 Are-we-friendly question received 09:40:54.456041 Wrote request (93 bytes) input to log/18/server.input 09:40:54.456230 Identifying ourselves as friends 09:40:54.458072 Response sent (56 bytes) and written to log/18/server.response 09:40:54.458210 special request received, no persistency 09:40:54.458322 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41285... * Connected to 127.0.0.1 (127.0.0.1) port 41285 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41285 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73790 === End of file http_verify.out === Start of file server.cmd Testnum 590 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73790 === End of file server.response === Start of file valgrind590 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind590 test 0598...[curl_easy_reset with referer and other strings set] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind598 ./libtest/libtests lib598 http://127.0.0.1:35697/598 > log/19/stdout598 2> log/19/stderr598 598: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 598 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind598 ./libtest/libtests lib598 http://127.0.0.1:35697/598 > log/19/stdout598 2> log/19/stderr598 === End of file commands.log === Start of file http_server.log 09:40:54.589872 ====> Client connect 09:40:54.590177 accept_connection 3 returned 4 09:40:54.590346 accept_connection 3 returned 0 09:40:54.590622 Read 93 bytes 09:40:54.590755 Process 93 bytes request 09:40:54.590842 Got request: GET /verifiedserver HTTP/1.1 09:40:54.590925 Are-we-friendly question received 09:40:54.594857 Wrote request (93 bytes) input to log/19/server.input 09:40:54.595104 Identifying ourselves as friends 09:40:54.595973 Response sent (56 bytes) and written to log/19/server.response 09:40:54.596105 special request received, no persistency 09:40:54.596179 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35697... * Connected to 127.0.0.1 (127.0.0.1) port 35697 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35697 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73791 === End of file http_verify.out === Start of file server.cmd Testnum 598 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73791 === End of file server.response === Start of file valgrind598 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind598 test 0588...[FTP PORT upload using multi interface, EPRT doesn't work] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind588 ./libtest/libtests lib525 ftp://127.0.0.1:40969/path/588 log/31/upload588 > log/31/stdout588 2> log/31/stderr588 588: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 588 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind588 ./libtest/libtests lib525 ftp://127.0.0.1:40969/path/588 log/31/upload588 > log/31/stdout588 2> log/31/stderr588 === End of file commands.log === Start of file ftp_server.log 09:40:54.207283 ====> Client connect 09:40:54.212736 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:54.224864 < "USER anonymous" 09:40:54.226375 > "331 We are happy you popped in![CR][LF]" 09:40:54.227231 < "PASS ftp@example.com" 09:40:54.227602 > "230 Welcome you silly person[CR][LF]" 09:40:54.229314 < "PWD" 09:40:54.229717 > "257 "/" is current directory[CR][LF]" 09:40:54.234107 < "EPSV" 09:40:54.234391 ====> Passive DATA channel requested by client 09:40:54.234580 DATA sockfilt for passive data channel starting... 09:40:54.260888 DATA sockfilt for passive data channel started (pid 104900) 09:40:54.262028 DATA sockfilt for passive data channel listens on port 40075 09:40:54.263967 > "229 Entering Passive Mode (|||40075|)[LF]" 09:40:54.264251 Client has been notified that DATA conn will be accepted on port 40075 09:40:54.266227 Client connects to port 40075 09:40:54.266873 ====> Client established passive DATA connection on port 40075 09:40:54.268727 < "TYPE I" 09:40:54.270364 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:54.272317 < "SIZE verifiedserver" 09:40:54.272878 > "213 18[CR][LF]" 09:40:54.276626 < "RETR verifiedserver" 09:40:54.277188 > "150 Binary junk (18 bytes).[CR][LF]" 09:40:54.282904 =====> Closing passive DATA connection... 09:40:54.283156 Server disconnects passive DATA connection 09:40:54.283461 Fancy that; client wants to DISC, too 09:40:54.283877 Server disconnected passive DATA connection 09:40:54.284096 DATA sockfilt for passive data channel quits (pid 104900) 09:40:54.287024 DATA sockfilt for passive data channel quit (pid 104900) 09:40:54.287257 =====> Closed passive DATA connection 09:40:54.288938 > "226 File transfer complete[CR][LF]" 09:40:54.322718 < "QUIT" 09:40:54.323206 > "221 bye bye baby[CR][LF]" 09:40:54.326978 MAIN sockfilt said DISC 09:40:54.327308 ====> Client disconnected 09:40:54.327851 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:54.460345 ====> Client connect 09:40:54.466843 Received DATA (on stdin) 09:40:54.467113 > 160 bytes data, server => client 09:40:54.467292 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:54.467385 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:54.467548 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:54.475651 < 16 bytes data, client => server 09:40:54.475907 'USER anonymous\r\n' 09:40:54.479132 Received DATA (on stdin) 09:40:54.479358 > 33 bytes data, server => client 09:40:54.479637 '331 We are happy you popped in!\r\n' 09:40:54.480358 < 22 bytes data, client => server 09:40:54.480604 'PASS ftp@example.com\r\n' 09:40:54.481352 Received DATA (on stdin) 09:40:54.481588 > 30 bytes data, server => client 09:40:54.481685 '230 Welcome you silly person\r\n' 09:40:54.482231 < 5 bytes data, client => server 09:40:54.482356 'PWD\r\n' 09:40:54.485563 Received DATA (on stdin) 09:40:54.485710 > 30 bytes data, server => client 09:40:54.485808 '257 "/" is current directory\r\n' 09:40:54.486578 < 6 bytes data, client => server 09:40:54.486710 'EPSV\r\n' 09:40:54.516120 Received DATA (on stdin) 09:40:54.516255 > 38 bytes data, server => client 09:40:54.518372 '229 Entering Passive Mode (|||40075|)\n' 09:40:54.521630 < 8 bytes data, client => server 09:40:54.521774 'TYPE I\r\n' 09:40:54.522896 Received DATA (on stdin) 09:40:54.523041 > 33 bytes data, server => client 09:40:54.524410 '200 I modify TYPE as you wanted\r\n' 09:40:54.525171 < 21 bytes data, client => server 09:40:54.525318 'SIZE verifiedserver\r\n' 09:40:54.528671 Received DATA (on stdin) 09:40:54.528822 > 8 bytes data, server => client 09:40:54.528917 '213 18\r\n' 09:40:54.529584 < 21 bytes data, client => server 09:40:54.529728 'RETR verifiedserver\r\n' 09:40:54.532569 Received DATA (on stdin) 09:40:54.532722 > 29 bytes data, server => client 09:40:54.532809 '150 Binary junk (18 bytes).\r\n' 09:40:54.541260 Received DATA (on stdin) 09:40:54.541399 > 28 bytes data, server => client 09:40:54.542969 '226 File transfer complete\r\n' 09:40:54.575619 < 6 bytes data, client => server 09:40:54.575779 'QUIT\r\n' 09:40:54.578560 Received DATA (on stdin) 09:40:54.578720 > 18 bytes data, server => client 09:40:54.578808 '221 bye bye baby\r\n' 09:40:54.579301 ====> Client disconnect 09:40:54.587534 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:54.510853 Running IPv4 version 09:40:54.511403 Listening on port 40075 09:40:54.514087 Wrote pid 104900 to log/31/server/ftp_sockdata.pid 09:40:54.514243 Received PING (on stdin) 09:40:54.515133 Received PORT (on stdin) 09:40:54.519621 ====> Client connect 09:40:54.531338 Received DATA (on stdin) 09:40:54.531563 > 18 bytes data, server => client 09:40:54.531667 'WE ROOLZ: 100730\r\n' 09:40:54.534576 ====> Client disconnect 09:40:54.537197 Received DISC (on stdin) 09:40:54.537338 Crikey! Client also wants to disconnect 09:40:54.537528 Received ACKD (on stdin) 09:40:54.538091 Received QUIT (on stdin) 09:40:54.538220 quits 09:40:54.538660 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY EPRT 500 we don't like EPRT now Testnum 588 === End of file server.cmd === Start of file upload588 Moooooooooooo upload this === End of file upload588 === Start of file valgrind588 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfocannot find sshd valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind588 test 0599...[HTTP GET with progress callback and redirects changing content sizes] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind599 ./libtest/libtests lib599 http://127.0.0.1:44255/599 log/36/ip599 > log/36/stdout599 2> log/36/stderr599 599: data FAILED: --- log/36/check-expected 2025-07-18 09:40:55.556185548 +0000 +++ log/36/check-generated 2025-07-18 09:40:55.554600669 +0000 @@ -1,16 +0,0 @@ -HTTP/1.1 302 OK[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Location: 5990001[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -Content-Type: text/html[CR][LF] -[CR][LF] -HTTP/1.1 200 OK[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Transfer-Encoding: chunked[CR][LF] -Connection: close[CR][LF] -Content-Type: text/html[CR][LF] -[CR][LF] -this data is slightly larger than the first piece[LF] == Contents of files in the log/36/ dir after test 599 === Start of file check-expected HTTP/1.1 302 OK[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Location: 5990001[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] Content-Type: text/html[CR][LF] [CR][LF] HTTP/1.1 200 OK[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Transfer-Encoding: chunked[CR][LF] Connection: close[CR][LF] Content-Type: text/html[CR][LF] [CR][LF] this data is slightly larger than the first piece[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind599 ./libtest/libtests lib599 http://127.0.0.1:44255/599 log/36/ip599 > log/36/stdout599 2> log/36/stderr599 === End of file commands.log === Start of file http_server.log 09:40:54.542704 ====> Client connect 09:40:54.543007 accept_connection 3 returned 4 09:40:54.543162 accept_connection 3 returned 0 09:40:54.543820 Read 93 bytes 09:40:54.543968 Process 93 bytes request 09:40:54.544055 Got request: GET /verifiedserver HTTP/1.1 09:40:54.544121 Are-we-friendly question received 09:40:54.544344 Wrote request (93 bytes) input to log/36/server.input 09:40:54.544613 Identifying ourselves as friends 09:40:54.545201 Response sent (56 bytes) and written to log/36/server.response 09:40:54.545319 special request received, no persistency 09:40:54.545388 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44255... * Connected to 127.0.0.1 (127.0.0.1) port 44255 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44255 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 77175 === End of file http_verify.out === Start of file server.cmd Testnum 599 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 77175 === End of file server.response === Start of file valgrind599 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind599 test 0597...[FTP connect only option] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind597 ./libtest/libtests lib597 ftp://127.0.0.1:33177 > log/43/stdout597 2> log/43/stderr597 597: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 597 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind597 ./libtest/libtests lib597 ftp://127.0.0.1:33177 > log/43/stdout597 2> log/43/stderr597 === End of file commands.log === Start of file ftp_server.log 09:40:54.286541 ====> Client connect 09:40:54.288071 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:54.296452 < "USER anonymous" 09:40:54.299102 > "331 We are happy you popped in![CR][LF]" 09:40:54.301129 < "PASS ftp@example.com" 09:40:54.301458 > "230 Welcome you silly person[CR][LF]" 09:40:54.307251 < "PWD" 09:40:54.308925 > "257 "/" is current directory[CR][LF]" 09:40:54.310964 < "EPSV" 09:40:54.311275 ====> Passive DATA channel requested by client 09:40:54.311447 DATA sockfilt for passive data channel starting... 09:40:54.346813 DATA sockfilt for passive data channel started (pid 104935) 09:40:54.347950 DATA sockfilt for passive data channel listens on port 40595 09:40:54.348407 > "229 Entering Passive Mode (|||40595|)[LF]" 09:40:54.348642 Client has been notified that DATA conn will be accepted on port 40595 09:40:54.352524 Client connects to port 40595 09:40:54.353018 ====> Client established passive DATA connection on port 40595 09:40:54.355560 < "TYPE I" 09:40:54.356077 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:54.362329 < "SIZE verifiedserver" 09:40:54.362891 > "213 17[CR][LF]" 09:40:54.370347 < "RETR verifiedserver" 09:40:54.370953 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:54.371896 =====> Closing passive DATA connection... 09:40:54.372204 Server disconnects passive DATA connection 09:40:54.380907 Server disconnected passive DATA connection 09:40:54.381233 DATA sockfilt for passive data channel quits (pid 104935) 09:40:54.391015 DATA sockfilt for passive data channel quit (pid 104935) 09:40:54.391413 =====> Closed passive DATA connection 09:40:54.391975 > "226 File transfer complete[CR][LF]" 09:40:54.413694 < "QUIT" 09:40:54.414240 > "221 bye bye baby[CR][LF]" 09:40:54.419281 MAIN sockfilt said DISC 09:40:54.419624 ====> Client disconnected 09:40:54.420578 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:54.539682 ====> Client connect 09:40:54.546578 Received DATA (on stdin) 09:40:54.546739 > 160 bytes data, server => client 09:40:54.546841 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:54.546944 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:54.547039 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:54.548311 < 16 bytes data, client => server 09:40:54.548624 'USER anonymous\r\n' 09:40:54.550604 Received DATA (on stdin) 09:40:54.550745 > 33 bytes data, server => client 09:40:54.553282 '331 We are happy you popped in!\r\n' 09:40:54.554024 < 22 bytes data, client => server 09:40:54.554167 'PASS ftp@example.com\r\n' 09:40:54.558959 Received DATA (on stdin) 09:40:54.559181 > 30 bytes data, server => client 09:40:54.559320 '230 Welcome you silly person\r\n' 09:40:54.560153 < 5 bytes data, client => server 09:40:54.560300 'PWD\r\n' 09:40:54.561326 Received DATA (on stdin) 09:40:54.561553 > 30 bytes data, server => client 09:40:54.562924 '257 "/" is current directory\r\n' 09:40:54.563781 < 6 bytes data, client => server 09:40:54.563921 'EPSV\r\n' 09:40:54.603563 Received DATA (on stdin) 09:40:54.603737 > 38 bytes data, server => client 09:40:54.603824 '229 Entering Passive Mode (|||40595|)\n' 09:40:54.608673 < 8 bytes data, client => server 09:40:54.608836 'TYPE I\r\n' 09:40:54.609788 Received DATA (on stdin) 09:40:54.609939 > 33 bytes data, server => client 09:40:54.610035 '200 I modify TYPE as you wanted\r\n' 09:40:54.610692 < 21 bytes data, client => server 09:40:54.610831 'SIZE verifiedserver\r\n' 09:40:54.616703 Received DATA (on stdin) 09:40:54.616859 > 8 bytes data, server => client 09:40:54.616952 '213 17\r\n' 09:40:54.619676 < 21 bytes data, client => server 09:40:54.619840 'RETR verifiedserver\r\n' 09:40:54.624668 Received DATA (on stdin) 09:40:54.624854 > 29 bytes data, server => client 09:40:54.624961 '150 Binary junk (17 bytes).\r\n' 09:40:54.645665 Received DATA (on stdin) 09:40:54.645853 > 28 bytes data, server => client 09:40:54.645973 '226 File transfer complete\r\n' 09:40:54.668273 < 6 bytes data, client => server 09:40:54.668434 'QUIT\r\n' 09:40:54.668655 Received DATA (on stdin) 09:40:54.668766 > 18 bytes data, server => client 09:40:54.668849 '221 bye bye baby\r\n' 09:40:54.672590 ====> Client disconnect 09:40:54.674746 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:54.594654 Running IPv4 version 09:40:54.595298 Listening on port 40595 09:40:54.599911 Wrote pid 104935 to log/43/server/ftp_sockdata.pid 09:40:54.600111 Received PING (on stdin) 09:40:54.600997 Received PORT (on stdin) 09:40:54.605866 ====> Client connect 09:40:54.629598 Received DATA (on stdin) 09:40:54.629814 > 17 bytes data, server => client 09:40:54.629930 'WE ROOLZ: 94256\r\n' 09:40:54.630380 Received DISC (on stdin) 09:40:54.630685 ====> Client forcibly disconnected 09:40:54.635254 Received QUIT (on stdin) 09:40:54.635400 quits 09:40:54.635921 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 597 === End of file server.cmd === Start of file valgrind597 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind597 test 0586...[FTP and open/close socket callbacks] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind586 ./libtest/libtests lib500 ftp://127.0.0.1:36539/586 > log/56/stdout586 2> log/56/stderr586 586: protocol FAILED! There was no content at all in the file log/56/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/56/ dir after test 586 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/56/valgrind586 ./libtest/libtests lib500 ftp://127.0.0.1:36539/586 > log/56/stdout586 2> log/56/stderr586 === End of file commands.log === Start of file ftp_server.log 09:40:54.239318 ====> Client connect 09:40:54.241594 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:54.245902 < "USER anonymous" 09:40:54.247192 > "331 We are happy you popped in![CR][LF]" 09:40:54.252189 < "PASS ftp@example.com" 09:40:54.253494 > "230 Welcome you silly person[CR][LF]" 09:40:54.254896 < "PWD" 09:40:54.255302 > "257 "/" is current directory[CR][LF]" 09:40:54.257542 < "EPSV" 09:40:54.257879 ====> Passive DATA channel requested by client 09:40:54.258101 DATA sockfilt for passive data channel starting... 09:40:54.272554 DATA sockfilt for passive data channel started (pid 104911) 09:40:54.273732 DATA sockfilt for passive data channel listens on port 44573 09:40:54.274407 > "229 Entering Passive Mode (|||44573|)[LF]" 09:40:54.274676 Client has been notified that DATA conn will be accepted on port 44573 09:40:54.276860 Client connects to port 44573 09:40:54.277209 ====> Client established passive DATA connection on port 44573 09:40:54.278120 < "TYPE I" 09:40:54.278488 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:54.280362 < "SIZE verifiedserver" 09:40:54.282315 > "213 17[CR][LF]" 09:40:54.283090 < "RETR verifiedserver" 09:40:54.284457 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:54.285281 =====> Closing passive DATA connection... 09:40:54.285510 Server disconnects passive DATA connection 09:40:54.286553 Server disconnected passive DATA connection 09:40:54.286869 DATA sockfilt for passive data channel quits (pid 104911) 09:40:54.288812 DATA sockfilt for passive data channel quit (pid 104911) 09:40:54.289076 =====> Closed passive DATA connection 09:40:54.290058 > "226 File transfer complete[CR][LF]" 09:40:54.327480 < "QUIT" 09:40:54.327906 > "221 bye bye baby[CR][LF]" 09:40:54.330158 MAIN sockfilt said DISC 09:40:54.333399 ====> Client disconnected 09:40:54.334021 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:54.492345 ====> Client connect 09:40:54.494187 Received DATA (on stdin) 09:40:54.494342 > 160 bytes data, server => client 09:40:54.494601 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:54.494743 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:54.494833 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:54.498744 < 16 bytes data, client => server 09:40:54.499078 'USER anonymous\r\n' 09:40:54.500034 Received DATA (on stdin) 09:40:54.500178 > 33 bytes data, server => client 09:40:54.500368 '331 We are happy you popped in!\r\n' 09:40:54.504902 < 22 bytes data, client => server 09:40:54.505044 'PASS ftp@example.com\r\n' 09:40:54.506332 Received DATA (on stdin) 09:40:54.506545 > 30 bytes data, server => client 09:40:54.506726 '230 Welcome you silly person\r\n' 09:40:54.507523 < 5 bytes data, client => server 09:40:54.507705 'PWD\r\n' 09:40:54.509308 Received DATA (on stdin) 09:40:54.509544 > 30 bytes data, server => client 09:40:54.509665 '257 "/" is current directory\r\n'cannot find sshd 09:40:54.510381 < 6 bytes data, client => server 09:40:54.510580 'EPSV\r\n' 09:40:54.528822 Received DATA (on stdin) 09:40:54.528963 > 38 bytes data, server => client 09:40:54.529054 '229 Entering Passive Mode (|||44573|)\n' 09:40:54.530316 < 8 bytes data, client => server 09:40:54.530519 'TYPE I\r\n' 09:40:54.532235 Received DATA (on stdin) 09:40:54.532377 > 33 bytes data, server => client 09:40:54.532534 '200 I modify TYPE as you wanted\r\n' 09:40:54.533174 < 21 bytes data, client => server 09:40:54.533387 'SIZE verifiedserver\r\n' 09:40:54.534521 Received DATA (on stdin) 09:40:54.534668 > 8 bytes data, server => client 09:40:54.534843 '213 17\r\n' 09:40:54.535667 < 21 bytes data, client => server 09:40:54.535872 'RETR verifiedserver\r\n' 09:40:54.537182 Received DATA (on stdin) 09:40:54.537324 > 29 bytes data, server => client 09:40:54.537588 '150 Binary junk (17 bytes).\r\n' 09:40:54.543086 Received DATA (on stdin) 09:40:54.543227 > 28 bytes data, server => client 09:40:54.543411 '226 File transfer complete\r\n' 09:40:54.580261 < 6 bytes data, client => server 09:40:54.580427 'QUIT\r\n' 09:40:54.582080 Received DATA (on stdin) 09:40:54.582227 > 18 bytes data, server => client 09:40:54.582313 '221 bye bye baby\r\n' 09:40:54.583586 ====> Client disconnect 09:40:54.584172 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:54.524180 Running IPv4 version 09:40:54.525029 Listening on port 44573 09:40:54.525709 Wrote pid 104911 to log/56/server/ftp_sockdata.pid 09:40:54.525916 Received PING (on stdin) 09:40:54.526843 Received PORT (on stdin) 09:40:54.530177 ====> Client connect 09:40:54.538680 Received DATA (on stdin) 09:40:54.538842 > 17 bytes data, server => client 09:40:54.538932 'WE ROOLZ: 77376\r\n' 09:40:54.539743 Received DISC (on stdin) 09:40:54.539947 ====> Client forcibly disconnected 09:40:54.540914 Received QUIT (on stdin) 09:40:54.541064 quits 09:40:54.541541 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 586 === End of file server.cmd === Start of file valgrind586 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind586 test 0591...[FTP multi PORT and 425 on upload] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind591 ./libtest/libtests lib591 ftp://127.0.0.1:33875/path/591 8 log/17/upload591 > log/17/stdout591 2> log/17/stderr591 591: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 591 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind591 ./libtest/libtests lib591 ftp://127.0.0.1:33875/path/591 8 log/17/upload591 > log/17/stdout591 2> log/17/stderr591 === End of file commands.log === Start of file ftp_server.log 09:40:54.229631 ====> Client connect 09:40:54.231034 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:54.235895 < "USER anonymous" 09:40:54.240307 > "331 We are happy you popped in![CR][LF]" 09:40:54.249364 < "PASS ftp@example.com" 09:40:54.249828 > "230 Welcome you silly person[CR][LF]" 09:40:54.258420 < "PWD" 09:40:54.259082 > "257 "/" is current directory[CR][LF]" 09:40:54.261186 < "EPSV" 09:40:54.261569 ====> Passive DATA channel requested by client 09:40:54.261871 DATA sockfilt for passive data channel starting... 09:40:54.287524 DATA sockfilt for passive data channel started (pid 104921) 09:40:54.288534 DATA sockfilt for passive data channel listens on port 36301 09:40:54.289106 > "229 Entering Passive Mode (|||36301|)[LF]" 09:40:54.289332 Client has been notified that DATA conn will be accepted on port 36301 09:40:54.294582 Client connects to port 36301 09:40:54.295281 ====> Client established passive DATA connection on port 36301 09:40:54.296257 < "TYPE I" 09:40:54.296636 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:54.301435 < "SIZE verifiedserver" 09:40:54.302657 > "213 17[CR][LF]" 09:40:54.306104 < "RETR verifiedserver" 09:40:54.306510 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:54.311578 =====> Closing passive DATA connection... 09:40:54.312061 Server disconnects passive DATA connection 09:40:54.314884 Server disconnected passive DATA connection 09:40:54.315165 DATA sockfilt for passive data channel quits (pid 104921) 09:40:54.319061 DATA sockfilt for passive data channel quit (pid 104921) 09:40:54.319332 =====> Closed passive DATA connection 09:40:54.319736 > "226 File transfer complete[CR][LF]" 09:40:54.353453 < "QUIT" 09:40:54.354204 > "221 bye bye baby[CR][LF]" 09:40:54.359340 MAIN sockfilt said DISC 09:40:54.359967 ====> Client disconnected 09:40:54.360615 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:54.479861 ====> Client connect 09:40:54.485196 Received DATA (on stdin) 09:40:54.485366 > 160 bytes data, server => client 09:40:54.485584 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:54.485697 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:54.485770 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:54.486648 < 16 bytes data, client => server 09:40:54.486812 'USER anonymous\r\n' 09:40:54.493611 Received DATA (on stdin) 09:40:54.493774 > 33 bytes data, server => client 09:40:54.494359 '331 We are happy you popped in!\r\n' 09:40:54.498282 < 22 bytes data, client => server 09:40:54.498432 'PASS ftp@example.com\r\n' 09:40:54.507592 Received DATA (on stdin) 09:40:54.507783 > 30 bytes data, server => client 09:40:54.507877 '230 Welcome you silly person\r\n' 09:40:54.508816 < 5 bytes data, client => server 09:40:54.508987 'PWD\r\n' 09:40:54.512793 Received DATA (on stdin) 09:40:54.512965 > 30 bytes data, server => client 09:40:54.513050 '257 "/" is current directory\r\n' 09:40:54.514036 < 6 bytes data, client => server 09:40:54.514196 'EPSV\r\n' 09:40:54.543338 Received DATA (on stdin) 09:40:54.543554 > 38 bytes data, server => client 09:40:54.543672 '229 Entering Passive Mode (|||36301|)\n' 09:40:54.547629 < 8 bytes data, client => server 09:40:54.547798 'TYPE I\r\n' 09:40:54.551570 Received DATA (on stdin) 09:40:54.551760 > 33 bytes data, server => client 09:40:54.551851 '200 I modify TYPE as you wanted\r\n' 09:40:54.552684 < 21 bytes data, client => server 09:40:54.552850 'SIZE verifiedserver\r\n' 09:40:54.555632 Received DATA (on stdin) 09:40:54.555790 > 8 bytes data, server => client 09:40:54.555960 '213 17\r\n' 09:40:54.558942 < 21 bytes data, client => server 09:40:54.559097 'RETR verifiedserver\r\n' 09:40:54.562706 Received DATA (on stdin) 09:40:54.562875 > 29 bytes data, server => client 09:40:54.562957 '150 Binary junk (17 bytes).\r\n' 09:40:54.573874 Received DATA (on stdin) 09:40:54.574005 > 28 bytes data, server => client 09:40:54.574089 '226 File transfer complete\r\n' 09:40:54.604666 < 6 bytes data, client => server 09:40:54.604876 'QUIT\r\n' 09:40:54.608250 Received DATA (on stdin) 09:40:54.608388 > 18 bytes data, server => client 09:40:54.608576 '221 bye bye baby\r\n' 09:40:54.611641 ====> Client disconnect 09:40:54.614686 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:54.539736 Running IPv4 version 09:40:54.540306 Listening on port 36301 09:40:54.540799 Wrote pid 104921 to log/17/server/ftp_sockdata.pid 09:40:54.540966 Received PING (on stdin) 09:40:54.541733 Received PORT (on stdin) 09:40:54.548008 ====> Client connect 09:40:54.560626 Received DATA (on stdin) 09:40:54.560790 > 17 bytes data, server => client 09:40:54.563767 'WE ROOLZ: 86383\r\n' 09:40:54.566061 Received DISC (on stdin) 09:40:54.566198 ====> Client forcibly disconnected 09:40:54.569120 Received QUIT (on stdin) 09:40:54.569252 quits 09:40:54.569714 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd NODATACONN425 REPLY EPRT 500 we don't like EPRT now Testnum 591 === End of file server.cmd === Start of file upload591 Moooooooooooo for 591 upload this === End of file upload591 === Start of file valgrind591 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind591 test 0596...[verify close callbacks with active FTP] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind596 ./libtest/libtests lib500 ftp://127.0.0.1:41719/596 log/45/ip596 activeftp > log/45/stdout596 2> log/45/stderr596 596: protocol FAILED! There was no content at all in the file log/45/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/45/ dir after test 596 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/45/valgrind596 ./libtest/libtests lib500 ftp://127.0.0.1:41719/596 log/45/ip596 activeftp > log/45/stdout596 2> log/45/stderr596 === End of file commands.log === Start of file ftp_server.log 09:40:54.362399 ====> Client connect 09:40:54.364881 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:54.366239 < "USER anonymous" 09:40:54.368165 > "331 We are happy you popped in![CR][LF]" 09:40:54.368958 < "PASS ftp@example.com" 09:40:54.369422 > "230 Welcome you silly person[CR][LF]" 09:40:54.371477 < "PWD" 09:40:54.371942 > "257 "/" is current directory[CR][LF]" 09:40:54.374002 < "EPSV" 09:40:54.374213 ====> Passive DATA channel requested by client 09:40:54.374356 DATA sockfilt for passive data channel starting... 09:40:54.395906 DATA sockfilt for passive data channel started (pid 104948) 09:40:54.397160 DATA sockfilt for passive data channel listens on port 35787 09:40:54.397556 > "229 Entering Passive Mode (|||35787|)[LF]" 09:40:54.397871 Client has been notified that DATA conn will be accepted on port 35787 09:40:54.400364 Client connects to port 35787 09:40:54.400653 ====> Client established passive DATA connection on port 35787 09:40:54.401379 < "TYPE I" 09:40:54.402884 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:54.403463 < "SIZE verifiedserver" 09:40:54.403854 > "213 17[CR][LF]" 09:40:54.406023 < "RETR verifiedserver" 09:40:54.407303 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:54.408002 =====> Closing passive DATA connection... 09:40:54.408267 Server disconnects passive DATA connection 09:40:54.410357 Server disconnected passive DATA connection 09:40:54.410650 DATA sockfilt for passive data channel quits (pid 104948) 09:40:54.412637 DATA sockfilt for passive data channel quit (pid 104948) 09:40:54.412960 =====> Closed passive DATA connection 09:40:54.413897 > "226 File transfer complete[CR][LF]" 09:40:54.452058 < "QUIT" 09:40:54.452432 > "221 bye bye baby[CR][LF]" 09:40:54.457884 MAIN sockfilt said DISC 09:40:54.458227 ====> Client disconnected 09:40:54.458735 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:54.615632 ====> Client connect 09:40:54.617391 Received DATA (on stdin) 09:40:54.617669 > 160 bytes data, server => client 09:40:54.617864 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:54.617979 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:54.618058 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:54.618811 < 16 bytes data, client => server 09:40:54.618939 'USER anonymous\r\n' 09:40:54.620306 Received DATA (on stdin) 09:40:54.620436 > 33 bytes data, server => client 09:40:54.620705 '331 We are happy you popped in!\r\n' 09:40:54.621564 < 22 bytes data, client => server 09:40:54.621695 'PASS ftp@example.com\r\n' 09:40:54.623411 Received DATA (on stdin) 09:40:54.623620 > 30 bytes data, server => client 09:40:54.623701 '230 Welcome you silly person\r\n' 09:40:54.624389 < 5 bytes data, client => server 09:40:54.624583 'PWD\r\n' 09:40:54.626053 Received DATA (on stdin) 09:40:54.626198 > 30 bytes data, server => client 09:40:54.626297 '257 "/" is current directory\r\n' 09:40:54.626996 < 6 bytes data, client => server 09:40:54.627126 'EPSV\r\n' 09:40:54.651923 Received DATA (on stdin) 09:40:54.652058 > 38 bytes data, server => client 09:40:54.652147 '229 Entering Passive Mode (|||35787|)\n' 09:40:54.653418 < 8 bytes data, client => server 09:40:54.653629 'TYPE I\r\n' 09:40:54.655371 Received DATA (on stdin) 09:40:54.655557 > 33 bytes data, server => client 09:40:54.655719 '200 I modify TYPE as you wanted\r\n' 09:40:54.656229 < 21 bytes data, client => server 09:40:54.656357 'SIZE verifiedserver\r\n' 09:40:54.657988 Received DATA (on stdin) 09:40:54.658139 > 8 bytes data, server => client 09:40:54.658238 '213 17\r\n' 09:40:54.658896 < 21 bytes data, client => server 09:40:54.659053 'RETR verifiedserver\r\n' 09:40:54.660142 Received DATA (on stdin) 09:40:54.660283 > 29 bytes data, server => client 09:40:54.660487 '150 Binary junk (17 bytes).\r\n' 09:40:54.666980 Received DATA (oncannot find sshd cannot find sshd cannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind632 ../src/curl -q --output log/63/curl632.out --include --trace-ascii log/63/trace632 --trace-config all --trace-time --hostpubmd5 00 --key log/63/server/curl_client_key --pubkey log/63/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/build/curl/src/build-curl/tests/log/63/irrelevant-file --insecure > log/63/stdout632 2> log/63/stderr632 stdin) 09:40:54.667121 > 28 bytes data, server => client 09:40:54.667301 '226 File transfer complete\r\n' 09:40:54.704931 < 6 bytes data, client => server 09:40:54.705083 'QUIT\r\n' 09:40:54.707072 Received DATA (on stdin) 09:40:54.707210 > 18 bytes data, server => client 09:40:54.707284 '221 bye bye baby\r\n' 09:40:54.708614 ====> Client disconnect 09:40:54.714511 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:54.646896 Running IPv4 version 09:40:54.648551 Listening on port 35787 09:40:54.649019 Wrote pid 104948 to log/45/server/ftp_sockdata.pid 09:40:54.649192 Received PING (on stdin) 09:40:54.650020 Received PORT (on stdin) 09:40:54.653844 ====> Client connect 09:40:54.662383 Received DATA (on stdin) 09:40:54.662593 > 17 bytes data, server => client 09:40:54.662688 'WE ROOLZ: 78026\r\n' 09:40:54.662995 Received DISC (on stdin) 09:40:54.663137 ====> Client forcibly disconnected 09:40:54.664707 Received QUIT (on stdin) 09:40:54.664840 quits 09:40:54.665261 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 596 === End of file server.cmd === Start of file valgrind596 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind596 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/61/server/rtsp_server.pid" --portfile "log/61/server/rtsp_server.port" --logfile "log/61/rtsp_server.log" --logdir "log/61" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 104366 port 41295 * pid rtsp => 104366 104366 test 0577...[Funny RTSP version in response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind577 ./libtest/libtests lib567 rtsp://127.0.0.1:41295/577 > log/61/stdout577 2> log/61/stderr577 577: protocol FAILED! There was no content at all in the file log/61/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/61/ dir after test 577 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/61/valgrind577 ./libtest/libtests lib567 rtsp://127.0.0.1:41295/577 > log/61/stdout577 2> log/61/stderr577 === End of file commands.log === Start of file rtsp_server.log 09:40:53.254200 Running IPv4 version on port 41295 09:40:53.255063 Wrote pid 104366 to log/61/server/rtsp_server.pid 09:40:53.255392 Wrote port 41295 to log/61/server/rtsp_server.port === End of file rtsp_server.log === Start of file server.cmd Testnum 577 === End of file server.cmd === Start of file valgrind577 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind577 * starts no server test 0632...[SFTP syntactically invalid host key] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind632 ../src/curl -q --output log/63/curl632.out --include --trace-ascii log/63/trace632 --trace-config all --trace-time --hostpubmd5 00 --key log/63/server/curl_client_key --pubkey log/63/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/build/curl/src/build-curl/tests/log/63/irrelevant-file --insecure > log/63/stdout632 2> log/63/stderr632 curl returned 1, when expecting 2 632: exit FAILED == Contents of files in the log/63/ dir after test 632 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind632 ../src/curl -q --output log/63/curl632.out --include --trace-ascii log/63/trace632 --trace-config all --trace-time --hostpubmd5 00 --key log/63/server/curl_client_key --pubkey log/63/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/build/curl/src/build-curl/tests/log/63/irrelevant-file --insecure > log/63/stdout632 2> log/63/stderr632 === End of file commands.log === Start of file server.cmd Testnum 632 === End of file server.cmd === Start of file valgrind632 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debuggincannot find sshd cannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind655 ./libtest/libtests lib655 http://127.0.0.1:35945/655 > log/57/stdout655 2> log/57/stderr655 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind658 ./libtest/libtests lib658 http://127.0.0.1:42899/658 > log/39/stdout658 2> log/39/stderr658 g a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind632 test 0587...[HTTP multi-part formpost with aborted read callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind587 ./libtest/libtests lib554 http://127.0.0.1:36559/587 > log/33/stdout587 2> log/33/stderr587 libtests returned 1, when expecting 42 587: exit FAILED == Contents of files in the log/33/ dir after test 587 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/33/valgrind587 ./libtest/libtests lib554 http://127.0.0.1:36559/587 > log/33/stdout587 2> log/33/stderr587 === End of file commands.log === Start of file http_server.log 09:40:54.422867 ====> Client connect 09:40:54.423178 accept_connection 3 returned 4 09:40:54.423361 accept_connection 3 returned 0 09:40:54.423644 Read 93 bytes 09:40:54.423771 Process 93 bytes request 09:40:54.423862 Got request: GET /verifiedserver HTTP/1.1 09:40:54.423954 Are-we-friendly question received 09:40:54.424199 Wrote request (93 bytes) input to log/33/server.input 09:40:54.424416 Identifying ourselves as friends 09:40:54.425296 Response sent (56 bytes) and written to log/33/server.response 09:40:54.425429 special request received, no persistency 09:40:54.425626 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36559... * Connected to 127.0.0.1 (127.0.0.1) port 36559 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36559 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73773 === End of file http_verify.out === Start of file server.cmd Testnum 587 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73773 === End of file server.response === Start of file valgrind587 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind587 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind653 ./libtest/libtests lib653 http://127.0.0.1:43013/653 > log/4/stdout653 2> log/4/stderr653 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind645 ./libtest/libtests lib643 http://127.0.0.1:41267/645 > log/43/stdout645 2> log/43/stderr645 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind659 ./libtest/libtests lib659 http://127.0.0.1:43179 > log/35/stdout659 2> log/35/stderr659 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind643 ./libtest/libtests lib643 http://127.0.0.1:44383/643 > log/17/stdout643 2> log/17/stderr643 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind651 ./libtest/libtests lib651 http://127.0.0.1:36913/651 log/10/test651.filedata log/10/stdout651 2> log/10/stderr651 test 0655...[resolver start callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind655 ./libtest/libtests lib655 http://127.0.0.1:35945/655 > log/57/stdout655 2> log/57/stderr655 655: data FAILED: --- log/57/check-expected 2025-07-18 09:40:56.622279108 +0000 +++ log/57/check-generated 2025-07-18 09:40:56.620600129 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/57/ dir after test 655 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/57/valgrind655 ./libtest/libtests lib655 http://127.0.0.1:35945/655 > log/57/stdout655 2> log/57/stderr655 === End of file commands.log === Start of file http_server.log 09:40:56.262125 ====> Client connect 09:40:56.263203 accept_connection 3 returned 4 09:40:56.263427 accept_connection 3 returned 0 09:40:56.263661 Read 93 bytes 09:40:56.263770 Process 93 bytes request 09:40:56.263860 Got request: GET /verifiedserver HTTP/1.1 09:40:56.263934 Are-we-friendly question received 09:40:56.264154 Wrote request (93 bytes) input to log/57/server.input 09:40:56.264303 Identifying ourselves as friends 09:40:56.266286 Response sent (56 bytes) and written to log/57/server.response 09:40:56.266410 special request received, no persistency 09:40:56.269658 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35945... * Connected to 127.0.0.1 (127.0.0.1) port 35945 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35945 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73753 === End of file http_verify.out === Start of file server.cmd Testnum 655 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73753 === End of file server.response === Start of file valgrind655 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind655 test 0653...[Reuse of handle after altering mime data] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind653 ./libtest/libtests lib653 http://127.0.0.1:43013/653 > log/4/stdout653 2> log/4/stderr653 653: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 653 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind653 ./libtest/libtests lib653 http://127.0.0.1:43013/653 > log/4/stdout653 2> log/4/stderr653 === End of file commands.log === Start of file http_server.log 09:40:56.220383 ====> Client connect 09:40:56.220845 accept_connection 3 returned 4 09:40:56.221011 accept_connection 3 returned 0 09:40:56.221145 Read 93 bytes 09:40:56.221238 Process 93 bytes request 09:40:56.221320 Got request: GET /verifiedserver HTTP/1.1 09:40:56.221393 Are-we-friendly question received 09:40:56.221799 Wrote request (93 bytes) input to log/4/server.input 09:40:56.221993 Identifying ourselves as friends 09:40:56.226709 Response sent (56 bytes) and written to log/4/server.response 09:40:56.226833 special request received, no persistency 09:40:56.226910 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43013... * Connected to 127.0.0.1 (127.0.0.1) port 43013 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43013 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73808 === End of file http_verify.out === Start of file server.cmd Testnum 653 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73808 === End of file server.response === Start of file valgrind653 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind653 test 0643...[HTTP multi-part mimepost using read callback for the file part] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind643 ./libtest/libtests lib643 http://127.0.0.1:44383/643 > log/17/stdout643 2> log/17/stderr643 643: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 643 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind643 ./libtest/libtests lib643 http://127.0.0.1:44383/643 > log/17/stdout643 2> log/17/stderr643 === End of file commands.log === Start of file http_server.log 09:40:56.129752 ====> Client connect 09:40:56.130130 accept_connection 3 returned 4 09:40:56.130317 accept_connection 3 returned 0 09:40:56.130541 Read 93 bytes 09:40:56.130782 Process 93 bytes request 09:40:56.130948 Got request: GET /verifiedserver HTTP/1.1 09:40:56.131039 Are-we-friendly question received 09:40:56.131299 Wrote request (93 bytes) input to log/17/server.input 09:40:56.131599 Identifying ourselves as friends 09:40:56.136601 Response sent (56 bytes) and written to log/17/server.response 09:40:56.136751 special request received, no persistency 09:40:56.136837 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44383... * Connected to 127.0.0.1 (127.0.0.1) port 44383 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44383 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73792 === End of file http_verify.out === Start of file server.cmd Testnum 643 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73792 === End of file server.response === Start of file valgrind643 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind643 test 0659...[CURLOPT_CURLU without the path set - over proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind659 ./libtest/libtests lib659 http://127.0.0.1:43179 > log/35/stdout659 2> log/35/stderr659 659: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 659 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind659 ./libtest/libtests lib659 http://127.0.0.1:43179 > log/35/stdout659 2> log/35/stderr659 === End of file commands.log === Start of file http_server.log 09:40:56.276866 ====> Client connect 09:40:56.277167 accept_connection 3 returned 4 09:40:56.277347 accept_connection 3 returned 0 09:40:56.277694 Read 93 bytes 09:40:56.277817 Process 93 bytes request 09:40:56.277898 Got request: GET /verifiedserver HTTP/1.1 09:40:56.277985 Are-we-friendly question received 09:40:56.278232 Wrote request (93 bytes) input to log/35/server.input 09:40:56.278420 Identifying ourselves as friends 09:40:56.279179 Response sent (56 bytes) and written to log/35/server.response 09:40:56.279288 special request received, no persistency 09:40:56.279359 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43179... * Connected to 127.0.0.1 (127.0.0.1) port 43179 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43179 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73771 === End of file http_verify.out === Start of file server.cmd Testnum 659 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73771 === End of file server.response === Start of file valgrind659 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind659 test 0658...[Pass URL to libcurl with CURLOPT_CURLU] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind658 ./libtest/libtests lib658 http://127.0.0.1:42899/658 > log/39/stdout658 2> log/39/stderr658 658: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 658 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind658 ./libtest/libtests lib658 http://127.0.0.1:42899/658 > log/39/stdout658 2> log/39/stderr658 === End of file commands.log === Start of file http_server.log 09:40:56.276098 ====> Client connect 09:40:56.276398 accept_connection 3 returned 4 09:40:56.276712 accept_connection 3 returned 0 09:40:56.277605 Read 93 bytes 09:40:56.277752 Process 93 bytes request 09:40:56.277884 Got request: GET /verifiedserver HTTP/1.1 09:40:56.277979 Are-we-friendly question received 09:40:56.278260 Wrote request (93 bytes) input to log/39/server.input 09:40:56.278524 Identifying ourselves as friends 09:40:56.280209 Response sent (56 bytes) and written to log/39/server.response 09:40:56.280338 special request received, no persistency 09:40:56.280424 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * CCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind662 ../src/curl -q --output log/54/curl662.out --include --trace-ascii log/54/trace662 --trace-config all --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:44921 > log/54/stdout662 2> log/54/stderr662 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind650 ./libtest/libtests lib650 http://127.0.0.1:44087/650 log/13/test650.filedata log/13/stdout650 2> log/13/stderr650 onnected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 658 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind658 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind658 test 0645...[HTTP multi-part chunked mimepost using read callback for the file part] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind645 ./libtest/libtests lib643 http://127.0.0.1:41267/645 > log/43/stdout645 2> log/43/stderr645 645: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 645 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind645 ./libtest/libtests lib643 http://127.0.0.1:41267/645 > log/43/stdout645 2> log/43/stderr645 === End of file commands.log === Start of file http_server.log 09:40:56.129750 ====> Client connect 09:40:56.130152 accept_connection 3 returned 4 09:40:56.130338 accept_connection 3 returned 0 09:40:56.130574 Read 93 bytes 09:40:56.130846 Process 93 bytes request 09:40:56.130978 Got request: GET /verifiedserver HTTP/1.1 09:40:56.131069 Are-we-friendly question received 09:40:56.131323 Wrote request (93 bytes) input to log/43/server.input 09:40:56.131669 Identifying ourselves as friends 09:40:56.135789 Response sent (56 bytes) and written to log/43/server.response 09:40:56.135939 special request received, no persistency 09:40:56.136016 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd Testnum 645 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file valgrind645 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind645 test 0651...[curl_formadd with huge COPYCONTENTS] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind651 ./libtest/libtests lib651 http://127.0.0.1:36913/651 log/10/test651.filedata log/10/stdout651 2> log/10/stderr651 651: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 651 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind651 ./libtest/libtests lib651 http://127.0.0.1:36913/651 log/10/test651.filedata log/10/stdout651 2> log/10/stderr651 === End of file commands.log === Start of file http_server.log 09:40:56.264877 ====> Client connect 09:40:56.265179 accept_connection 3 returned 4 09:40:56.265348 accept_connection 3 returned 0 09:40:56.265630 Read 93 bytes 09:40:56.265788 Process 93 bytes request 09:40:56.265955 Got request: GET /verifiedserver HTTP/1.1 09:40:56.266068 Are-we-friendly question received 09:40:56.266322 Wrote request (93 bytes) input to log/10/server.input 09:40:56.266633 Identifying ourselves as friends 09:40:56.269000 Response sent (56 bytes) and written to log/10/server.response 09:40:56.269122 special request received, no persistency 09:40:56.269213 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36913... * Connected to 127.0.0.1 (127.0.0.1) port 36913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36913 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73804 === End of file http_verify.out === Start of file server.cmd Testnum 651 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73804 === End of file server.response === Start of file stdin-for-651 Some data from stdin === End of file stdin-for-651 === Start of file test651.filedata This is data from a file. === End of file test651.filedata === Start of file valgrind651 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind651 test 0650...[HTTP formpost using form API - with redirect and re-POST] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind650 ./libtest/libtests lib650 http://127.0.0.1:44087/650 log/13/test650.filedata log/13/stdout650 2> log/13/stderr650 650: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 650 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind650 ./libtest/libtests lib650 http://127.0.0.1:44087/650 log/13/test650.filedata log/13/stdout650 2> log/13/stderr650 === End of file commands.log === Start of file http_server.log 09:40:56.211096 ====> Client connect 09:40:56.211393 accept_connection 3 returned 4 09:40:56.211701 accept_connection 3 returned 0 09:40:56.212256 Read 93 bytes 09:40:56.212399 Process 93 bytes request 09:40:56.212573 Got request: GET /verifiedserver HTTP/1.1 09:40:56.212680 Are-we-friendly question received 09:40:56.212900 Wrote request (93 bytes) input to log/13/server.input 09:40:56.213075 Identifying ourselves as friends 09:40:56.214603 Response sent (56 bytes) and written to log/13/server.response 09:40:56.214726 special request received, no persistency 09:40:56.214802 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44087... * Connected to 127.0.0.1 (127.0.0.1) port 44087 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44087 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Request completely sent off { [16 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73796 === End of file http_verify.out === Start of file server.cmd Testnum 650 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73796 === End of file server.response === Start of file stdin-for-650 Some data from stdin === End of file stdin-for-650 === Start of file test650.filedata This is data from a file. === End of file test650.filedata === Start of file valgrind650 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind650 test 0662...[HTTP redirect with whitespace in absolute Location: URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind662 ../src/curl -q --output log/54/curl662.out --include --trace-ascii log/54/trace662 --trace-config all --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:44921 > log/54/stdout662 2> log/54/stderr662 662: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 662 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind662 ../src/curl -q --output log/54/curl662.out --include --trace-ascii log/54/trace662 --trace-config all --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:44921 > log/54/stdout662 2> log/54/stderr662 === End of file commands.log === Start of file http_server.log 09:40:56.324114 ====> Client connect 09:40:56.324573 accept_connection 3 returned 4 09:40:56.324779 accept_connection 3 returned 0 09:40:56.324916 Read 93 bytes 09:40:56.325026 Process 93 bytes request 09:40:56.325165 Got request: GET /verifiedserver HTTP/1.1 09:40:56.325254 Are-we-friendly question received 09:40:56.325557 Wrote request (93 bytes) input to log/54/server.input 09:40:56.325762 Identifying ourselves as friends 09:40:56.326560 Response sent (56 bytes) and written to log/54/server.response 09:40:56.326689 special request received, no persistency 09:40:56.326763 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 662 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind662 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the reCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind661 ./libtest/libtests lib661 ftp://127.0.0.1:34161/ > log/6/stdout661 2> log/6/stderr661 direction are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind662 test 0661...[Avoid redundant CWDs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind661 ./libtest/libtests lib661 ftp://127.0.0.1:34161/ > log/6/stdout661 2> log/6/stderr661 661: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 661 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind661 ./libtest/libtests lib661 ftp://127.0.0.1:34161/ > log/6/stdout661 2> log/6/stderr661 === End of file commands.log === Start of file ftp_server.log 09:40:56.052576 ====> Client connect 09:40:56.054591 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:56.057577 < "USER anonymous" 09:40:56.058509 > "331 We are happy you popped in![CR][LF]" 09:40:56.063643 < "PASS ftp@example.com" 09:40:56.064534 > "230 Welcome you silly person[CR][LF]" 09:40:56.066618 < "PWD" 09:40:56.067509 > "257 "/" is current directory[CR][LF]" 09:40:56.069602 < "EPSV" 09:40:56.070050 ====> Passive DATA channel requested by client 09:40:56.070290 DATA sockfilt for passive data channel starting... 09:40:56.082955 DATA sockfilt for passive data channel started (pid 106240) 09:40:56.084189 DATA sockfilt for passive data channel listens on port 40137 09:40:56.084685 > "229 Entering Passive Mode (|||40137|)[LF]" 09:40:56.085066 Client has been notified that DATA conn will be accepted on port 40137 09:40:56.088173 Client connects to port 40137 09:40:56.088504 ====> Client established passive DATA connection on port 40137 09:40:56.089428 < "TYPE I" 09:40:56.089922 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:56.092473 < "SIZE verifiedserver" 09:40:56.093466 > "213 17[CR][LF]" 09:40:56.095583 < "RETR verifiedserver" 09:40:56.096838 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:56.097639 =====> Closing passive DATA connection... 09:40:56.099128 Server disconnects passive DATA connection 09:40:56.099470 Fancy that; client wants to DISC, too 09:40:56.100208 Server disconnected passive DATA connection 09:40:56.100496 DATA sockfilt for passive data channel quits (pid 106240) 09:40:56.102480 DATA sockfilt for passive data channel quit (pid 106240) 09:40:56.102835 =====> Closed passive DATA connection 09:40:56.103999 > "226 File transfer complete[CR][LF]" 09:40:56.140641 < "QUIT" 09:40:56.141144 > "221 bye bye baby[CR][LF]" 09:40:56.146371 MAIN sockfilt said DISC 09:40:56.147339 ====> Client disconnected 09:40:56.147954 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:56.305645 ====> Client connect 09:40:56.307821 Received DATA (on stdin) 09:40:56.307996 > 160 bytes data, server => client 09:40:56.308551 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:56.308711 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:56.308805 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:56.310213 < 16 bytes data, client => server 09:40:56.310390 'USER anonymous\r\n' 09:40:56.311783 Received DATA (on stdin) 09:40:56.311949 > 33 bytes data, server => client 09:40:56.315572 '331 We are happy you popped in!\r\n' 09:40:56.316501 < 22 bytes data, client => server 09:40:56.316684 'PASS ftp@example.com\r\n' 09:40:56.317845 Received DATA (on stdin) 09:40:56.318014 > 30 bytes data, server => client 09:40:56.318643 '230 Welcome you silly person\r\n' 09:40:56.319437 < 5 bytes data, client => server 09:40:56.319680 'PWD\r\n' 09:40:56.320833 Received DATA (on stdin) 09:40:56.320994 > 30 bytes data, server => client 09:40:56.321625 '257 "/" is current directory\r\n' 09:40:56.322520 < 6 bytes data, client => server 09:40:56.322690 'EPSV\r\n' 09:40:56.339174 Received DATA (on stdin) 09:40:56.339359 > 38 bytes data, server => client 09:40:56.339558 '229 Entering Passive Mode (|||40137|)\n' 09:40:56.341133 < 8 bytes data, client => server 09:40:56.341335 'TYPE I\r\n' 09:40:56.343977 Received DATA (on stdin) 09:40:56.344134 > 33 bytes data, server => client 09:40:56.344335 '200 I modify TYPE as you wanted\r\n' 09:40:56.345247 < 21 bytes data, client => server 09:40:56.345414 'SIZE verifiedserver\r\n' 09:40:56.346734 Received DATA (on stdin) 09:40:56.346943 > 8 bytes data, server => client 09:40:56.347587 '213 17\r\n' 09:40:56.348372 < 21 bytes data, client => server 09:40:56.348631 'RETR verifiedserver\r\n' 09:40:56.349848 Received DATA (on stdin) 09:40:56.350009 > 29 bytes data, server => client 09:40:56.351554 '150 Binary junk (17 bytes).\r\n' 09:40:56.356933 Received DATA (on stdin) 09:40:56.357105 > 28 bytes data, server => client 09:40:56.357299 '226 File transfer complete\r\n' 09:40:56.393506 < 6 bytes data, client => server 09:40:56.393694 'QUIT\r\n' 09:40:56.395265 Received DATA (on stdin) 09:40:56.395428 > 18 bytes data, server => client 09:40:56.395639 '221 bye bye baby\r\n' 09:40:56.399725 ====> Client disconnect 09:40:56.400439 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:56.335027 Running IPv4 version 09:40:56.335693 Listening on port 40137 09:40:56.336080 Wrote pid 106240 to log/6/server/ftp_sockdata.pid 09:40:56.336239 Received PING (on stdin) 09:40:56.337215 Received PORT (on stdin) 09:40:56.340830 ====> Client connect 09:40:56.351012 Received DATA (on stdin) 09:40:56.351177 > 17 bytes data, server => client 09:40:56.351275 'WE ROOLZ: 79493\r\n' 09:40:56.352567 ====> Client disconnect 09:40:56.353184 Received DISC (on stdin) 09:40:56.353357 Crikey! Client also wants to disconnect 09:40:56.353588 Received ACKD (on stdin) 09:40:56.354575 Received QUIT (on stdin) 09:40:56.354728 quits 09:40:56.355110 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 661 === End of file server.cmd === Start of file valgrind661 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagercannot find sshd CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind654 ./libtest/libtests lib654 http://127.0.0.1:46727/654 log/58/file654.txt > log/58/stdout654 2> log/58/stderr654 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind663 ../src/curl -q --output log/63/curl663.out --include --trace-ascii log/63/trace663 --trace-config all --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:38797 > log/63/stdout663 2> log/63/stderr663 s valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind661 test 0654...[HTTP duplicate easy handle with mime data] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind654 ./libtest/libtests lib654 http://127.0.0.1:46727/654 log/58/file654.txt > log/58/stdout654 2> log/58/stderr654 654: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 654 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind654 ./libtest/libtests lib654 http://127.0.0.1:46727/654 log/58/file654.txt > log/58/stdout654 2> log/58/stderr654 === End of file commands.log === Start of file file654.txt This is data from a file === End of file file654.txt === Start of file http_server.log 09:40:56.263829 ====> Client connect 09:40:56.264118 accept_connection 3 returned 4 09:40:56.264281 accept_connection 3 returned 0 09:40:56.264410 Read 93 bytes 09:40:56.264611 Process 93 bytes request 09:40:56.264728 Got request: GET /verifiedserver HTTP/1.1 09:40:56.264826 Are-we-friendly question received 09:40:56.265098 Wrote request (93 bytes) input to log/58/server.input 09:40:56.265313 Identifying ourselves as friends 09:40:56.266329 Response sent (56 bytes) and written to log/58/server.response 09:40:56.266416 special request received, no persistency 09:40:56.266597 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46727... * Connected to 127.0.0.1 (127.0.0.1) port 46727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73755 === End of file http_verify.out === Start of file server.cmd Testnum 654 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73755 === End of file server.response === Start of file valgrind654 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind654 test 0663...[HTTP redirect with dotdots and whitespaces in absolute Location: URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind663 ../src/curl -q --output log/63/curl663.out --include --trace-ascii log/63/trace663 --trace-config all --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:38797 > log/63/stdout663 2> log/63/stderr663 663: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 663 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind663 ../src/curl -q --output log/63/curl663.out --include --trace-ascii log/63/trace663 --trace-config all --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:38797 > log/63/stdout663 2> log/63/stderr663 === End of file commands.log === Start of file http_server.log 09:40:56.510732 ====> Client connect 09:40:56.511073 accept_connection 3 returned 4 09:40:56.511233 accept_connection 3 returned 0 09:40:56.511368 Read 93 bytes 09:40:56.511556 Process 93 bytes request 09:40:56.511682 Got request: GET /verifiedserver HTTP/1.1 09:40:56.511766 Are-we-friendly question received 09:40:56.511997 Wrote request (93 bytes) input to log/63/server.input 09:40:56.512164 Identifying ourselves as friends 09:40:56.513823 Response sent (56 bytes) and written to log/63/server.response 09:40:56.513947 special request received, no persistency 09:40:56.514023 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38797... * Connected to 127.0.0.1 (127.0.0.1) port 38797 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38797 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73747 === End of file http_verify.out === Start of file server.cmd Testnum 663 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73747 === End of file server.response === Start of file valgrind663 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbgCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind648 ../src/curl -q --output log/19/curl648.out --include --trace-ascii log/19/trace648 --trace-config all --trace-time smtp://127.0.0.1:36369/648 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the email inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/19/test648.txt;encoder=base64" -H "From: different" -H "To: another" log/19/stdout648 2> log/19/stderr648 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind660 ./libtest/libtests lib597 imap://127.0.0.1:35591/660 > log/30/stdout660 2> log/30/stderr660 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind649 ../src/curl -q --output log/18/curl649.out --include --trace-ascii log/18/trace649 --trace-config all --trace-time smtp://127.0.0.1:44723/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/18/test649.txt;encoder=7bit" -H "From: different" -H "To: another" log/18/stdout649 2> log/18/stderr649 valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind663 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/30/server/imap_server.pid" --logfile "log/30/imap_server.log" --logdir "log/30" --portfile "log/30/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 35591 (log/30/server/imap_server.port) RUN: IMAP server is PID 106142 port 35591 * pid imap => 106142 106142 test 0660...[IMAP CONNECT_ONLY option] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind660 ./libtest/libtests lib597 imap://127.0.0.1:35591/660 > log/30/stdout660 2> log/30/stderr660 660: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 660 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind660 ./libtest/libtests lib597 imap://127.0.0.1:35591/660 > log/30/stdout660 2> log/30/stderr660 === End of file commands.log === Start of file imap_server.log 09:40:56.458534 IMAP server listens on port IPv4/35591 09:40:56.459400 logged pid 106142 in log/30/server/imap_server.pid 09:40:56.459704 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:40:56.710080 Running IPv4 version 09:40:56.710786 Listening on port 35591 09:40:56.711194 Wrote pid 106613 to log/30/server/imap_sockfilt.pid 09:40:56.711575 Wrote port 35591 to log/30/server/imap_server.port 09:40:56.711748 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 660 === End of file server.cmd === Start of file valgrind660 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind660 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/19/server/smtp_server.pid" --logfile "log/19/smtp_server.log" --logdir "log/19" --portfile "log/19/server/smtp_server.port" --srcdir "/build/curl/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 36369 (log/19/server/smtp_server.port) RUN: SMTP server is PID 106059 port 36369 * pid smtp => 106059 106059 test 0648...[SMTP multipart with transfer content encoders] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind648 ../src/curl -q --output log/19/curl648.out --include --trace-ascii log/19/trace648 --trace-config all --trace-time smtp://127.0.0.1:36369/648 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the email inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/19/test648.txt;encoder=base64" -H "From: different" -H "To: another" log/19/stdout648 2> log/19/stderr648 648: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 648 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind648 ../src/curl -q --output log/19/curl648.out --include --trace-ascii log/19/trace648 --trace-config all --trace-time smtp://127.0.0.1:36369/648 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is the email inline text with a very long line containing the special character = and that should be split by encoder.;headers=Content-disposition: "inline";encoder=quoted-printable' -F "=@log/19/test648.txt;encoder=base64" -H "From: different" -H "To: another" log/19/stdout648 2> log/19/stderr648 === End of file commands.log === Start of file server.cmd Testnum 648 === End of file server.cmd === Start of file smtp_server.log 09:40:56.187725 SMTP server listens on port IPv4/36369 09:40:56.188675 logged pid 106059 in log/19/server/smtp_server.pid 09:40:56.189070 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 09:40:56.439163 Running IPv4 version 09:40:56.439917 Listening on port 36369 09:40:56.440290 Wrote pid 106293 to log/19/server/smtp_sockfilt.pid 09:40:56.440715 Wrote port 36369 to log/19/server/smtp_server.port 09:40:56.440876 Received PING (on stdin) === End of file smtp_sockfilt.log === Start of file stdin-for-648 From: different To: another body === End of file stdin-for-648 === Start of file test648.txt This is an attached file. It may contain any type of data and will be encoded in base64 for transfer. === End of file test648.txt === Start of file valgrind648 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind647 ../src/curl -q --output log/31/curl647.out --include --trace-ascii log/31/trace647 --trace-config all --trace-time imap://127.0.0.1:38735/647 -F "=(;type=multipart/alternative" -F "= This is the html version;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/31/test647.txt" -H "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" -H "From: Fred Foobar " -H "To: joe@example.com" -H "Message-Id: " -H "Subject: afternoon meeting" -u user:secret > log/31/stdout647 2> log/31/stderr647 Cannot continue -- exiting now. Sorry. === End of file valgrind648 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/18/server/smtp_server.pid" --logfile "log/18/smtp_server.log" --logdir "log/18" --portfile "log/18/server/smtp_server.port" --srcdir "/build/curl/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 44723 (log/18/server/smtp_server.port) RUN: SMTP server is PID 106061 port 44723 * pid smtp => 106061 106061 test 0649...[SMTP multipart with 7bit encoder error] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind649 ../src/curl -q --output log/18/curl649.out --include --trace-ascii log/18/trace649 --trace-config all --trace-time smtp://127.0.0.1:44723/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/18/test649.txt;encoder=7bit" -H "From: different" -H "To: another" log/18/stdout649 2> log/18/stderr649 649: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 649 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind649 ../src/curl -q --output log/18/curl649.out --include --trace-ascii log/18/trace649 --trace-config all --trace-time smtp://127.0.0.1:44723/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/18/test649.txt;encoder=7bit" -H "From: different" -H "To: another" log/18/stdout649 2> log/18/stderr649 === End of file commands.log === Start of file server.cmd Testnum 649 === End of file server.cmd === Start of file smtp_server.log 09:40:56.192521 SMTP server listens on port IPv4/44723 09:40:56.193385 logged pid 106061 in log/18/server/smtp_server.pid 09:40:56.193651 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 09:40:56.442761 Running IPv4 version 09:40:56.443564 Listening on port 44723 09:40:56.444151 Wrote pid 106291 to log/18/server/smtp_sockfilt.pid 09:40:56.445320 Wrote port 44723 to log/18/server/smtp_server.port 09:40:56.445615 Received PING (on stdin) === End of file smtp_sockfilt.log === Start of file stdin-for-649 From: different To: another body === End of file stdin-for-649 === Start of file test649.txt This is an attached file (in french: pièce jointe). It contains at least an 8-bit byte value. === End of file test649.txt === Start of file valgrind649 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind649 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/31/server/imap_server.pid" --logfile "log/31/imap_server.log" --logdir "log/31" --portfile "log/31/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 38735 (log/31/server/imap_server.port) RUN: IMAP server is PID 106054 port 38735 * pid imap => 106054 106054 test 0647...[IMAP APPEND multipart using mime API] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind647 ../src/curl -q --output log/31/curl647.out --include --trace-ascii log/31/trace647 --trace-config all --trace-time imap://127.0.0.1:38735/647 -F "=(;type=multipart/alternative" -F "= This is the html version;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/31/test647.txt" -H "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" -H "From: Fred Foobar " -H "To: joe@example.com" -H "Message-Id: " -H "Subject: afternoon meeting" -u user:secret > log/31/stdout647 2> log/31/stderr647 647: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 647 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind647 ../src/curl -q --output log/31/curl647.out --include --trace-ascii log/31/trace647 --trace-config all --trace-time imap://127.0.0.1:38735/647 -F "=(;type=multipart/alternative" -F "= This is the html version;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/31/test647.txt" -H "Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST)" -H "From: Fred Foobar " -H "To: joe@example.com" -H "Message-Id: " -H "Subject: afternoon meeting" -u user:secret > log/31/stdout647 2> log/31/stderr647 === End of file commands.log === Start of file imap_server.log 09:40:56.123043 IMAP server listens on port IPv4/38735 09:40:56.124070 logged pid 106054 in log/31/server/imap_server.pid 09:40:56.124378 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:40:56.373738 Running IPv4 version 09:40:56.374717 Listening on port 38735 09:40:56.375260 Wrote pid 106246 to log/31/server/imap_sockfilt.pid 09:40:56.375764 Wrote port 38735 to log/31/server/imap_server.port 09:40:56.375959 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 647 === End of file server.cmd === Start of file test647.txt This is an attached file. It may contain any type of data. === End of file test647.txt === Start of file valgrind647 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions foCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind646 ../src/curl -q --output log/36/curl646.out --include --trace-ascii log/36/trace646 --trace-config all --trace-time smtp://127.0.0.1:33651/646 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=(;type=multipart/alternative" -F "= This is the html version;headers=X-test1: this is a header;type=text/html;headers=X-test2: this is another header " -F "=This is the plain text version;headers=@log/36/headers646" -F "=)" -F "=@log/36/test646.txt;headers=" log/36/stdout646 2> log/36/stderr646 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind667 ./libtest/libtests lib667 http://127.0.0.1:44921/667 > log/54/stdout667 2> log/54/stderr667 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind673 ./libtest/libtests lib670 http://127.0.0.1:43013/673 > log/4/stdout673 2> log/4/stderr673 r this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind647 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/36/server/smtp_server.pid" --logfile "log/36/smtp_server.log" --logdir "log/36" --portfile "log/36/server/smtp_server.port" --srcdir "/build/curl/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 33651 (log/36/server/smtp_server.port) RUN: SMTP server is PID 106052 port 33651 * pid smtp => 106052 106052 test 0646...[SMTP multipart using mime API] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind646 ../src/curl -q --output log/36/curl646.out --include --trace-ascii log/36/trace646 --trace-config all --trace-time smtp://127.0.0.1:33651/646 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=(;type=multipart/alternative" -F "= This is the html version;headers=X-test1: this is a header;type=text/html;headers=X-test2: this is another header " -F "=This is the plain text version;headers=@log/36/headers646" -F "=)" -F "=@log/36/test646.txt;headers=" log/36/stdout646 2> log/36/stderr646 646: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 646 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind646 ../src/curl -q --output log/36/curl646.out --include --trace-ascii log/36/trace646 --trace-config all --trace-time smtp://127.0.0.1:33651/646 --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=(;type=multipart/alternative" -F "= This is the html version;headers=X-test1: this is a header;type=text/html;headers=X-test2: this is another header " -F "=This is the plain text version;headers=@log/36/headers646" -F "=)" -F "=@log/36/test646.txt;headers=" log/36/stdout646 2> log/36/stderr646 === End of file commands.log === Start of file headers646 # This line is a comment X-fileheader1: This is a header from a file # This line is another comment. It precedes a folded header. X-fileheader2: This is #a folded header === End of file headers646 === Start of file server.cmd Testnum 646 === End of file server.cmd === Start of file smtp_server.log 09:40:56.171262 SMTP server listens on port IPv4/33651 09:40:56.172384 logged pid 106052 in log/36/server/smtp_server.pid 09:40:56.172670 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 09:40:56.422542 Running IPv4 version 09:40:56.423132 Listening on port 33651 09:40:56.423637 Wrote pid 106272 to log/36/server/smtp_sockfilt.pid 09:40:56.424035 Wrote port 33651 to log/36/server/smtp_server.port 09:40:56.424207 Received PING (on stdin) === End of file smtp_sockfilt.log === Start of file stdin-for-646 From: different To: another body === End of file stdin-for-646 === Start of file test646.txt This is an attached file. It may contain any type of data. === End of file test646.txt === Start of file valgrind646 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind646 test 0667...[HTTP chunked mimepost using single-byte read callback with encoder] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind667 ./libtest/libtests lib667 http://127.0.0.1:44921/667 > log/54/stdout667 2> log/54/stderr667 667: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 667 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind667 ./libtest/libtests lib667 http://127.0.0.1:44921/667 > log/54/stdout667 2> log/54/stderr667 === End of file commands.log === Start of file http_server.log 09:40:57.267883 ====> Client connect 09:40:57.268213 accept_connection 3 returned 4 09:40:57.268398 accept_connection 3 returned 0 09:40:57.269424 Read 93 bytes 09:40:57.269651 Process 93 bytes request 09:40:57.269757 Got request: GET /verifiedserver HTTP/1.1 09:40:57.269854 Are-we-friendly question received 09:40:57.270110 Wrote request (93 bytes) input to log/54/server.input 09:40:57.270317 Identifying ourselves as friends 09:40:57.272147 Response sent (56 bytes) and written to log/54/server.response 09:40:57.272282 special request received, no persistency 09:40:57.272377 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 667 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind667 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind672 ./libtest/libtests lib670 http://127.0.0.1:44383/672 > log/17/stdout672 2> log/17/stderr672 scv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind667 test 0673...[Request pause from form read callback: easy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind673 ./libtest/libtests lib670 http://127.0.0.1:43013/673 > log/4/stdout673 2> log/4/stderr673 673: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 673 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind673 ./libtest/libtests lib670 http://127.0.0.1:43013/673 > log/4/stdout673 2> log/4/stderr673 === End of file commands.log === Start of file http_server.log 09:40:57.356867 ====> Client connect 09:40:57.357210 accept_connection 3 returned 4 09:40:57.357387 accept_connection 3 returned 0 09:40:57.358211 Read 93 bytes 09:40:57.358358 Process 93 bytes request 09:40:57.358509 Got request: GET /verifiedserver HTTP/1.1 09:40:57.358643 Are-we-friendly question received 09:40:57.358927 Wrote request (93 bytes) input to log/4/server.input 09:40:57.359194 Identifying ourselves as friends 09:40:57.363861 Response sent (56 bytes) and written to log/4/server.response 09:40:57.364001 special request received, no persistency 09:40:57.364081 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43013... * Connected to 127.0.0.1 (127.0.0.1) port 43013 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43013 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73808 === End of file http_verify.out === Start of file server.cmd Testnum 673 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73808 === End of file server.response === Start of file valgrind673 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind673 test 0672...[Request pause from form read callback: multi] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind672 ./libtest/libtests lib670 http://127.0.0.1:44383/672 > log/17/stdout672 2> log/17/stderr672 672: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 672 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind672 ./libtest/libtests lib670 http://127.0.0.1:44383/672 > log/17/stdout672 2> log/17/stderr672 === End of file commands.log === Start of file http_server.log 09:40:57.346038 ====> Client connect 09:40:57.346409 accept_connection 3 returned 4 09:40:57.346744 accept_connection 3 returned 0 09:40:57.346887 Read 93 bytes 09:40:57.346975 Process 93 bytes request 09:40:57.347058 Got request: GET /verifiedserver HTTP/1.1 09:40:57.347129 Are-we-friendly question received 09:40:57.347346 Wrote request (93 bytes) input to log/17/server.input 09:40:57.347625 Identifying ourselves as friends 09:40:57.348265 Response sent (56 bytes) and written to log/17/server.response 09:40:57.348365 special request received, no persistency 09:40:57.348429 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44383... * Connected to 127.0.0.1 (127.0.0.1) port 44383 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44383 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73792 === End of file http_verify.out === Start of file server.cmd Testnum 672 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73792 === End of file server.response === Start of file valgrind672 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continuCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind668 ./libtest/libtests lib668 http://127.0.0.1:44087/668 log/13/file668.txt > log/13/stdout668 2> log/13/stderr668 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind671 ./libtest/libtests lib670 http://127.0.0.1:43179/671 > log/35/stdout671 2> log/35/stderr671 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind666 ./libtest/libtests lib666 http://127.0.0.1:41267/666 > log/43/stdout666 2> log/43/stderr666 e -- exiting now. Sorry. === End of file valgrind672 test 0668...[HTTP mimepost early end of data detection] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind668 ./libtest/libtests lib668 http://127.0.0.1:44087/668 log/13/file668.txt > log/13/stdout668 2> log/13/stderr668 668: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 668 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind668 ./libtest/libtests lib668 http://127.0.0.1:44087/668 log/13/file668.txt > log/13/stdout668 2> log/13/stderr668 === End of file commands.log === Start of file file668.txt This is data from a file === End of file file668.txt === Start of file http_server.log 09:40:57.301983 ====> Client connect 09:40:57.302276 accept_connection 3 returned 4 09:40:57.302438 accept_connection 3 returned 0 09:40:57.302737 Read 93 bytes 09:40:57.302828 Process 93 bytes request 09:40:57.302918 Got request: GET /verifiedserver HTTP/1.1 09:40:57.303002 Are-we-friendly question received 09:40:57.303229 Wrote request (93 bytes) input to log/13/server.input 09:40:57.303409 Identifying ourselves as friends 09:40:57.305017 Response sent (56 bytes) and written to log/13/server.response 09:40:57.305127 special request received, no persistency 09:40:57.305195 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44087... * Connected to 127.0.0.1 (127.0.0.1) port 44087 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44087 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73796 === End of file http_verify.out === Start of file server.cmd Testnum 668 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73796 === End of file server.response === Start of file valgrind668 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind668 test 0671...[Request pause from mime read callback: easy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind671 ./libtest/libtests lib670 http://127.0.0.1:43179/671 > log/35/stdout671 2> log/35/stderr671 671: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 671 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind671 ./libtest/libtests lib670 http://127.0.0.1:43179/671 > log/35/stdout671 2> log/35/stderr671 === End of file commands.log === Start of file http_server.log 09:40:57.343702 ====> Client connect 09:40:57.344008 accept_connection 3 returned 4 09:40:57.344181 accept_connection 3 returned 0 09:40:57.344344 Read 93 bytes 09:40:57.344565 Process 93 bytes request 09:40:57.344695 Got request: GET /verifiedserver HTTP/1.1 09:40:57.344784 Are-we-friendly question received 09:40:57.345040 Wrote request (93 bytes) input to log/35/server.input 09:40:57.345213 Identifying ourselves as friends 09:40:57.346043 Response sent (56 bytes) and written to log/35/server.response 09:40:57.346163 special request received, no persistency 09:40:57.346224 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43179... * Connected to 127.0.0.1 (127.0.0.1) port 43179 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43179 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73771 === End of file http_verify.out === Start of file server.cmd Testnum 671 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73771 === End of file server.response === Start of file valgrind671 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind671 test 0666...[HTTP mime post with binary-encoded huge data contents] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind666 ./libtest/libtests lib666 http://127.0.0.1:41267/666 > log/43/stdout666 2> log/43/stderr666 666: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 666 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressiCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind674 ./libtest/libtests lib674 http://127.0.0.1:37181/674 > log/6/stdout674 2> log/6/stderr674 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind669 ../src/curl -q --output log/10/curl669.out --include --trace-ascii log/10/trace669 --trace-config all --trace-time http://127.0.0.1:36913/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/10/stdout669 2> log/10/stderr669 ons=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind666 ./libtest/libtests lib666 http://127.0.0.1:41267/666 > log/43/stdout666 2> log/43/stderr666 === End of file commands.log === Start of file http_server.log 09:40:57.215005 ====> Client connect 09:40:57.215312 accept_connection 3 returned 4 09:40:57.215555 accept_connection 3 returned 0 09:40:57.216400 Read 93 bytes 09:40:57.216626 Process 93 bytes request 09:40:57.216723 Got request: GET /verifiedserver HTTP/1.1 09:40:57.216803 Are-we-friendly question received 09:40:57.217044 Wrote request (93 bytes) input to log/43/server.input 09:40:57.217235 Identifying ourselves as friends 09:40:57.219043 Response sent (56 bytes) and written to log/43/server.response 09:40:57.219161 special request received, no persistency 09:40:57.219238 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd Testnum 666 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file valgrind666 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind666 test 0674...[Set CURLOPT_CURLU and dupe the handle] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind674 ./libtest/libtests lib674 http://127.0.0.1:37181/674 > log/6/stdout674 2> log/6/stderr674 674: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 674 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind674 ./libtest/libtests lib674 http://127.0.0.1:37181/674 > log/6/stdout674 2> log/6/stderr674 === End of file commands.log === Start of file http_server.log 09:40:57.357233 ====> Client connect 09:40:57.357656 accept_connection 3 returned 4 09:40:57.357832 accept_connection 3 returned 0 09:40:57.357956 Read 93 bytes 09:40:57.358046 Process 93 bytes request 09:40:57.358144 Got request: GET /verifiedserver HTTP/1.1 09:40:57.358230 Are-we-friendly question received 09:40:57.358529 Wrote request (93 bytes) input to log/6/server.input 09:40:57.358712 Identifying ourselves as friends 09:40:57.359396 Response sent (56 bytes) and written to log/6/server.response 09:40:57.359588 special request received, no persistency 09:40:57.359671 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37181... * Connected to 127.0.0.1 (127.0.0.1) port 37181 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37181 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73803 === End of file http_verify.out === Start of file server.cmd Testnum 674 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73803 === End of file server.response === Start of file valgrind674 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind674 test 0669...[HTTP custom Content-Type with parameter] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind669 ../src/curl -q --output log/10/curl669.out --include --trace-ascii log/10/trace669 --trace-config all --trace-time http://127.0.0.1:36913/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/10/stdout669 2> log/10/stderr669 669: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 669 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind669 ../src/curl -q --output log/10/curl669.out --include --trace-ascii log/10/trace669 --trace-config all --trace-time http://127.0.0.1:36913/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/10/stdout669 2> log/10/stderr669 === End of file commands.log === Start of file http_server.log 09:40:57.307848 ====> Client connect 09:40:57.308190 accept_connection 3 returned 4 09:40:57.308381 accept_connection 3 returned 0 09:40:57.308688 Read 93 bytes 09:40:57.308817 Process 93 bytes request 09:40:57.308913 Got request: GET /verifiedseCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind675 ../src/curl -q --output log/58/curl675.out --include --trace-ascii log/58/trace675 --trace-config all --trace-time http://user1:foo1@127.0.0.1:46727/user1/675 http://user2:foo2@127.0.0.1:46727/user2/675 > log/58/stdout675 2> log/58/stderr675 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind670 ./libtest/libtests lib670 http://127.0.0.1:42899/670 > log/39/stdout670 2> log/39/stderr670 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind652 ./libtest/libtests lib652 smtp://127.0.0.1:36457/652 > log/9/stdout652 2> log/9/stderr652 rver HTTP/1.1 09:40:57.308998 Are-we-friendly question received 09:40:57.309225 Wrote request (93 bytes) input to log/10/server.input 09:40:57.309418 Identifying ourselves as friends 09:40:57.313736 Response sent (56 bytes) and written to log/10/server.response 09:40:57.313876 special request received, no persistency 09:40:57.313966 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36913... * Connected to 127.0.0.1 (127.0.0.1) port 36913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36913 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73804 === End of file http_verify.out === Start of file server.cmd Testnum 669 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73804 === End of file server.response === Start of file valgrind669 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind669 test 0675...[HTTP connection reuse and different credentials] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind675 ../src/curl -q --output log/58/curl675.out --include --trace-ascii log/58/trace675 --trace-config all --trace-time http://user1:foo1@127.0.0.1:46727/user1/675 http://user2:foo2@127.0.0.1:46727/user2/675 > log/58/stdout675 2> log/58/stderr675 675: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 675 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind675 ../src/curl -q --output log/58/curl675.out --include --trace-ascii log/58/trace675 --trace-config all --trace-time http://user1:foo1@127.0.0.1:46727/user1/675 http://user2:foo2@127.0.0.1:46727/user2/675 > log/58/stdout675 2> log/58/stderr675 === End of file commands.log === Start of file http_server.log 09:40:57.502899 ====> Client connect 09:40:57.503223 accept_connection 3 returned 4 09:40:57.503405 accept_connection 3 returned 0 09:40:57.503660 Read 93 bytes 09:40:57.503773 Process 93 bytes request 09:40:57.503878 Got request: GET /verifiedserver HTTP/1.1 09:40:57.503970 Are-we-friendly question received 09:40:57.504222 Wrote request (93 bytes) input to log/58/server.input 09:40:57.504420 Identifying ourselves as friends 09:40:57.505352 Response sent (56 bytes) and written to log/58/server.response 09:40:57.505572 special request received, no persistency 09:40:57.505672 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46727... * Connected to 127.0.0.1 (127.0.0.1) port 46727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73755 === End of file http_verify.out === Start of file server.cmd Testnum 675 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73755 === End of file server.response === Start of file valgrind675 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind675 test 0670...[Request pause from mime read callback: multi] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind670 ./libtest/libtests lib670 http://127.0.0.1:42899/670 > log/39/stdout670 2> log/39/stderr670 670: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 670 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind670 ./libtest/libtests lib670 http://127.0.0.1:42899/670 > log/39/stdout670 2> log/39/stderr670 === End of file commands.log === Start of file http_server.log 09:40:57.345973 ====> Client connect 09:40:57.346338 accept_connection 3 returned 4 09:40:57.346596 accept_connection 3 returned 0 09:40:57.346761 Read 93 bytes 09:40:57.346860 Process 93 bytes request 09:40:57.346963 Got request: GET /verifiedserver HTTP/1.1 09:40:57.347053 Are-we-friendly question received 09:40:57.347288 Wrote request (93 bytes) input to log/39/server.input 09:40:57.347544 Identifying ourselves as friends 09:40:57.348261 Response sent (56 bytes) and written to log/39/server.response 09:40:57.348368 special request received, no persistency 09:40:57.348431 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind676 ./libtest/libtests lib676 http://127.0.0.1:38797/we/want/676 log/63/cookies676 > log/63/stdout676 2> log/63/stderr676 > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 670 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind670 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind670 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/9/server/smtp_server.pid" --logfile "log/9/smtp_server.log" --logdir "log/9" --portfile "log/9/server/smtp_server.port" --srcdir "/build/curl/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 36457 (log/9/server/smtp_server.port) RUN: SMTP server is PID 106081 port 36457 * pid smtp => 106081 106081 test 0652...[SMTP with encoded huge mime data contents] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind652 ./libtest/libtests lib652 smtp://127.0.0.1:36457/652 > log/9/stdout652 2> log/9/stderr652 652: protocol FAILED! There was no content at all in the file log/9/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/9/ dir after test 652 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind652 ./libtest/libtests lib652 smtp://127.0.0.1:36457/652 > log/9/stdout652 2> log/9/stderr652 === End of file commands.log === Start of file server.cmd Testnum 652 === End of file server.cmd === Start of file smtp_server.log 09:40:56.316373 SMTP server listens on port IPv4/36457 09:40:56.317382 logged pid 106081 in log/9/server/smtp_server.pid 09:40:56.317639 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 09:40:56.567739 Running IPv4 version 09:40:56.568319 Listening on port 36457 09:40:56.568839 Wrote pid 106425 to log/9/server/smtp_sockfilt.pid 09:40:56.569153 Wrote port 36457 to log/9/server/smtp_server.port 09:40:56.569329 Received PING (on stdin) === End of file smtp_sockfilt.log === Start of file valgrind652 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind652 test 0676...[verify setting CURLOPT_COOKIEFILE to NULL again] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind676 ./libtest/libtests lib676 http://127.0.0.1:38797/we/want/676 log/63/cookies676 > log/63/stdout676 2> log/63/stderr676 676: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 676 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind676 ./libtest/libtests lib676 http://127.0.0.1:38797/we/want/676 log/63/cookies676 > log/63/stdout676 2> log/63/stderr676 === End of file commands.log === Start of file cookies676 127.0.0.1 TRUE /we/want/ FALSE 22118138987 proven yes === End of file cookies676 === Start of file http_server.log 09:40:57.644274 ====> Client connect 09:40:57.644735 accept_connection 3 returned 4 09:40:57.644918 accept_connection 3 returned 0 09:40:57.646062 Read 93 bytes 09:40:57.646218 Process 93 bytes request 09:40:57.646323 Got request: GET /verifiedserver HTTP/1.1 09:40:57.646414 Are-we-friendly question received 09:40:57.646810 Wrote request (93 bytes) input to log/63/server.input 09:40:57.647023 Identifying ourselves as friends 09:40:57.647860 Response sent (56 bytes) and written to log/63/server.response 09:40:57.648028 special request received, no persistency 09:40:57.648125 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38797... * Connected to 127.0.0.1 (127.0.0.1) port 38797 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38797 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73747 === End of file http_verify.out === Start of file server.cmd Testnum 676 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73747 === End of file server.response === Start of file valgrind676 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whiCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind680 ../src/curl -q --output log/31/curl680.out --include --trace-ascii log/31/trace680 --trace-config all --trace-time --netrc --netrc-file log/31/netrc680 http://user1@http.example/ > log/31/stdout680 2> log/31/stderr680 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind681 ../src/curl -q --trace-ascii log/36/trace681 --trace-config all --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:44255/681 > log/36/stdout681 2> log/36/stderr681 lst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind676 * starts no server test 0680...[netrc with quoted password but missing end quote] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind680 ../src/curl -q --output log/31/curl680.out --include --trace-ascii log/31/trace680 --trace-config all --trace-time --netrc --netrc-file log/31/netrc680 http://user1@http.example/ > log/31/stdout680 2> log/31/stderr680 curl returned 1, when expecting 26 680: exit FAILED == Contents of files in the log/31/ dir after test 680 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind680 ../src/curl -q --output log/31/curl680.out --include --trace-ascii log/31/trace680 --trace-config all --trace-time --netrc --netrc-file log/31/netrc680 http://user1@http.example/ > log/31/stdout680 2> log/31/stderr680 === End of file commands.log === Start of file netrc680 machine 127.0.0.1 login user1 password "with spaces and \"\n\r\t\a === End of file netrc680 === Start of file server.cmd Testnum 680 === End of file server.cmd === Start of file valgrind680 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind680 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind686 ../src/curl -q --output log/13/curl686.out --include --trace-ascii log/13/trace686 --trace-config all --trace-time htdhdhdtp://localhost --next > log/13/stdout686 2> log/13/stderr686 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind685 ../src/curl -q --output log/4/curl685.out --include --trace-ascii log/4/trace685 --trace-config all --trace-time --netrc-optional --netrc-file log/4/netrc685 http://user@127.0.0.1:43013/ > log/4/stdout685 2> log/4/stderr685 test 0681...[--remote-name-all with --no-remote-name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind681 ../src/curl -q --trace-ascii log/36/trace681 --trace-config all --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:44255/681 > log/36/stdout681 2> log/36/stderr681 681: stdout FAILED: --- log/36/check-expected 2025-07-18 09:40:58.533615001 +0000 +++ log/36/check-generated 2025-07-18 09:40:58.532599161 +0000 @@ -1 +0,0 @@ --foo-[LF] == Contents of files in the log/36/ dir after test 681 === Start of file check-expected -foo-[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind681 ../src/curl -q --trace-ascii log/36/trace681 --trace-config all --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:44255/681 > log/36/stdout681 2> log/36/stderr681 === End of file commands.log === Start of file http_server.log 09:40:58.115870 ====> Client connect 09:40:58.116192 accept_connection 3 returned 4 09:40:58.116369 accept_connection 3 returned 0 09:40:58.116662 Read 93 bytes 09:40:58.116787 Process 93 bytes request 09:40:58.116874 Got request: GET /verifiedserver HTTP/1.1 09:40:58.116962 Are-we-friendly question received 09:40:58.117203 Wrote request (93 bytes) input to log/36/server.input 09:40:58.117399 Identifying ourselves as friends 09:40:58.121757 Response sent (56 bytes) and written to log/36/server.response 09:40:58.121902 special request received, no persistency 09:40:58.121987 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44255... * Connected to 127.0.0.1 (127.0.0.1) port 44255 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44255 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 77175 === End of file http_verify.out === Start of file server.cmd Testnum 681 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 77175 === End of file server.response === Start of file valgrind681 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind681 * starts no server test 0686...[verify return code for missing URL after --next] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind686 ../src/curl -q --output log/13/curl686.out --include --trace-ascii log/13/trace686 --trace-config all --trace-time htdhdhdtp://localhost --next > log/13/stdout686 2> log/13/stderr686 curl returned 1, when expecting 2 686: exit FAILED == Contents of files in the log/13/ dir after test 686 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind686 ../src/curl -q --output log/13/curl686.out --include --trace-ascii log/13/trace686 --trace-config all --trace-time htdhdhdtp://localhost --next > log/13/stdout686 2> log/13/stderr686 === End of file commands.log === Start of file server.cmd Testnum 686 === End of file server.cmd === Start of file valgrind686 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind686 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind683 ../src/curl -q --output log/54/curl683.out --include --trace-ascii log/54/trace683 --trace-config all --trace-time --netrc-optional --netrc-file log/54/netrc683 http://user2@127.0.0.1:44921/ > log/54/stdout683 2> log/54/stderr683 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind677 ./libtest/libtests lib677 imap://127.0.0.1:35591/677 > log/30/stdout677 2> log/30/stderr677 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind682 ../src/curl -q --output log/19/curl682.out --include --trace-ascii log/19/trace682 --trace-config all --trace-time --netrc-optional --netrc-file log/19/netrc682 http://user1@127.0.0.1:35697/ > log/19/stdout682 2> log/19/stderr682 test 0685...[netrc with no login - provided user] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind685 ../src/curl -q --output log/4/curl685.out --include --trace-ascii log/4/trace685 --trace-config all --trace-time --netrc-optional --netrc-file log/4/netrc685 http://user@127.0.0.1:43013/ > log/4/stdout685 2> log/4/stderr685 685: data FAILED: --- log/4/check-expected 2025-07-18 09:40:58.628599113 +0000 +++ log/4/check-generated 2025-07-18 09:40:58.627599113 +0000 @@ -1,8 +0,0 @@ -HTTP/1.1 200 OK[LF] -Date: Fri, 05 Aug 2022 10:09:00 GMT[LF] -Server: test-server/fake[LF] -Content-Type: text/plain[LF] -Content-Length: 6[LF] -Connection: close[LF] -[LF] --foo-[LF] == Contents of files in the log/4/ dir after test 685 === Start of file check-expected HTTP/1.1 200 OK[LF] Date: Fri, 05 Aug 2022 10:09:00 GMT[LF] Server: test-server/fake[LF] Content-Type: text/plain[LF] Content-Length: 6[LF] Connection: close[LF] [LF] -foo-[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind685 ../src/curl -q --output log/4/curl685.out --include --trace-ascii log/4/trace685 --trace-config all --trace-time --netrc-optional --netrc-file log/4/netrc685 http://user@127.0.0.1:43013/ > log/4/stdout685 2> log/4/stderr685 === End of file commands.log === Start of file http_server.log 09:40:58.207667 ====> Client connect 09:40:58.208035 accept_connection 3 returned 4 09:40:58.208245 accept_connection 3 returned 0 09:40:58.208396 Read 93 bytes 09:40:58.209063 Process 93 bytes request 09:40:58.209173 Got request: GET /verifiedserver HTTP/1.1 09:40:58.209263 Are-we-friendly question received 09:40:58.209631 Wrote request (93 bytes) input to log/4/server.input 09:40:58.209852 Identifying ourselves as friends 09:40:58.210760 Response sent (56 bytes) and written to log/4/server.response 09:40:58.210885 special request received, no persistency 09:40:58.210962 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43013... * Connected to 127.0.0.1 (127.0.0.1) port 43013 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43013 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73808 === End of file http_verify.out === Start of file netrc685 machine 127.0.0.1 password 5up3r53cr37 === End of file netrc685 === Start of file server.cmd Testnum 685 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73808 === End of file server.response === Start of file valgrind685 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind685 test 0682...[netrc with multiple logins - pick first] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind682 ../src/curl -q --output log/19/curl682.out --include --trace-ascii log/19/trace682 --trace-config all --trace-time --netrc-optional --netrc-file log/19/netrc682 http://user1@127.0.0.1:35697/ > log/19/stdout682 2> log/19/stderr682 682: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 682 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind682 ../src/curl -q --output log/19/curl682.out --include --trace-ascii log/19/trace682 --trace-config all --trace-time --netrc-optional --netrc-file log/19/netrc682 http://user1@127.0.0.1:35697/ > log/19/stdout682 2> log/19/stderr682 === End of file commands.log === Start of file http_server.log 09:40:58.130876 ====> Client connect 09:40:58.131277 accept_connection 3 returned 4 09:40:58.131732 accept_connection 3 returned 0 09:40:58.132589 Read 93 bytes 09:40:58.132726 Process 93 bytes request 09:40:58.132813 Got request: GET /verifiedserver HTTP/1.1 09:40:58.132893 Are-we-friendly question received 09:40:58.133142 Wrote request (93 bytes) input to log/19/server.input 09:40:58.133576 Identifying ourselves as friends 09:40:58.138013 Response sent (56 bytes) and written to log/19/server.response 09:40:58.138195 special request received, no persistency 09:40:58.138425 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35697... * Connected to 127.0.0.1 (127.0.0.1) port 35697 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35697 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73791 === End of file http_verify.out === Start of file netrc682 machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 === End of file netrc682 === Start of file server.cmd Testnum 682 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73791 === End of file server.response === Start of file valgrind682 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind682 test 0677...[IMAP with CONNECT_ONLY, custom command then exit] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind677 ./libtest/libtests lib677 imap://127.0.0.1:35591/677 > log/30/stdout677 2> log/30/stderr677 677: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 677 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind677 ./libtest/libtests lib677 imap://127.0.0.1:35591/677 > log/30/stdout677 2> log/30/stderr677 === End of file commands.log === Start of file imap_server.log 09:40:57.850280 ====> Client connect 09:40:57.853122 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:40:57.854878 < "A001 CAPABILITY" 09:40:57.856011 > "A001 BAD Command[CR][LF]" 09:40:57.857140 < "A002 LIST "verifiedserver" *" 09:40:57.857442 LIST_imap got "verifiedserver" * 09:40:57.858481 > "* LIST () "/" "WE ROOLZ: 106142"[CR][LF]" 09:40:57.859383 > "A002 OK LIST Completed[CR][LF]" 09:40:57.859582 return proof we are we 09:40:57.905555 < "A003 LOGOUT" 09:40:57.906057 > "* BYE curl IMAP server signing off[CR][LF]" 09:40:57.906411 > "A003 OK LOGOUT completed[CR][LF]" 09:40:57.908306 MAIN sockfilt said DISC 09:40:57.908596 ====> Client disconnected 09:40:57.910170 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:40:58.103250 ====> Client connect 09:40:58.105416 Received DATA (on stdin) 09:40:58.105652 > 178 bytes data, server => client 09:40:58.105867 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:40:58.106015 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:40:58.106122 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:40:58.106220 'rve\r\n' 09:40:58.107396 < 17 bytes data, client => server 09:40:58.107628 'A001 CAPABILITY\r\n' 09:40:58.108952 Received DATA (on stdin) 09:40:58.109090 > 18 bytes data, server => client 09:40:58.109267 'A001 BAD Command\r\n' 09:40:58.109938 < 30 bytes data, client => server 09:40:58.110065 'A002 LIST "verifiedserver" *\r\n' 09:40:58.111511 Received DATA (on stdin) 09:40:58.111642 > 34 bytes data, server => client 09:40:58.111804 '* LIST () "/" "WE ROOLZ: 106142"\r\n' 09:40:58.112584 Received DATA (on stdin) 09:40:58.112718 > 24 bytes data, server => client 09:40:58.112872 'A002 OK LIST Completed\r\n' 09:40:58.155873 < 13 bytes data, client => server 09:40:58.156421 'A003 LOGOUT\r\n' 09:40:58.160556 Received DATA (on stdin) 09:40:58.160698 > 36 bytes data, server => client 09:40:58.160787 '* BYE curl IMAP server signing off\r\n' 09:40:58.161057 Received DATA (on stdin) 09:40:58.161182 > 26 bytes data, server => client 09:40:58.161257 'A003 OK LOGOUT completed\r\n' 09:40:58.161695 ====> Client disconnect 09:40:58.166572 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 677 === End of file server.cmd === Start of file valgrind677 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind677 test 0683...[netrc with multiple logins - pick second] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind683 ../src/curl -q --output log/54/curl683.out --include --trace-ascii log/54/trace683 --trace-config all --trace-time --netrc-optional --netrc-file log/54/netrc683 http://user2@127.0.0.1:44921/ > log/54/stdout683 2> log/54/stderr683 683: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 683 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind683 ../src/curl -q --output log/54/curl683.out --include --trace-ascii log/54/trace683 --trace-config all --trace-time --netrc-optional --netrc-file log/54/netrc683 http://user2@127.0.0.1:44921/ > log/54/stdout683 2> log/54/stderr683 === End of file commands.log === Start of file http_server.log 09:40:58.168719 ====> Client connect 09:40:58.169211 accept_connection 3 returned 4 09:40:58.169556 accept_connection 3 returned 0 09:40:58.169794 Read 93 bytes 09:40:58.169937 Process 93 bytes request 09:40:58.170086 Got request: GET /verifiedserver HTTP/1.1 09:40:58.170203 Are-we-friendly question received 09:40:58.170623 Wrote request (93 bytes) input to log/54/server.input 09:40:58.170900 Identifying ourselves as friends 09:40:58.172286 Response sent (56 bytes) and written to log/54/server.response 09:40:58.172576 special request received, no persistency 09:40:58.172701 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file netrc683 machine 127.0.0.1 login user1 password passwd1 machine 127.0.0.1 login user2 password passwd2 === End of file netrc683 === Start of file server.cmd Testnum 683 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind683 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind684 ../src/curl -q --output log/17/curl684.out --include --trace-ascii log/17/trace684 --trace-config all --trace-time --netrc-optional --netrc-file log/17/netrc684 http://127.0.0.1:44383/ > log/17/stdout684 2> log/17/stderr684 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind679 ../src/curl -q --output log/18/curl679.out --include --trace-ascii log/18/trace679 --trace-config all --trace-time --netrc-optional --netrc-file log/18/netrc679 http://127.0.0.1:41285/ > log/18/stdout679 2> log/18/stderr679 valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind683 test 0684...[netrc with no login] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind684 ../src/curl -q --output log/17/curl684.out --include --trace-ascii log/17/trace684 --trace-config all --trace-time --netrc-optional --netrc-file log/17/netrc684 http://127.0.0.1:44383/ > log/17/stdout684 2> log/17/stderr684 684: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 684 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind684 ../src/curl -q --output log/17/curl684.out --include --trace-ascii log/17/trace684 --trace-config all --trace-time --netrc-optional --netrc-file log/17/netrc684 http://127.0.0.1:44383/ > log/17/stdout684 2> log/17/stderr684 === End of file commands.log === Start of file http_server.log 09:40:58.191954 ====> Client connect 09:40:58.192391 accept_connection 3 returned 4 09:40:58.192727 accept_connection 3 returned 0 09:40:58.193580 Read 93 bytes 09:40:58.193733 Process 93 bytes request 09:40:58.193829 Got request: GET /verifiedserver HTTP/1.1 09:40:58.193925 Are-we-friendly question received 09:40:58.194187 Wrote request (93 bytes) input to log/17/server.input 09:40:58.194385 Identifying ourselves as friends 09:40:58.196671 Response sent (56 bytes) and written to log/17/server.response 09:40:58.196781 special request received, no persistency 09:40:58.196838 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44383... * Connected to 127.0.0.1 (127.0.0.1) port 44383 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44383 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73792 === End of file http_verify.out === Start of file netrc684 machine 127.0.0.1 password 5up3r53cr37 === End of file netrc684 === Start of file server.cmd Testnum 684 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73792 === End of file server.response === Start of file valgrind684 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind684 test 0679...[netrc with quoted password] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind679 ../src/curl -q --output log/18/curl679.out --include --trace-ascii log/18/trace679 --trace-config all --trace-time --netrc-optional --netrc-file log/18/netrc679 http://127.0.0.1:41285/ > log/18/stdout679 2> log/18/stderr679 679: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 679 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind679 ../src/curl -q --output log/18/curl679.out --include --trace-ascii log/18/trace679 --trace-config all --trace-time --netrc-optional --netrc-file log/18/netrc679 http://127.0.0.1:41285/ > log/18/stdout679 2> log/18/stderr679 === End of file commands.log === Start of file http_server.log 09:40:58.125132 ====> Client connect 09:40:58.125422 accept_connection 3 returned 4 09:40:58.125987 accept_connection 3 returned 0 09:40:58.127413 Read 93 bytes 09:40:58.127680 Process 93 bytes request 09:40:58.127866 Got request: GET /verifiedserver HTTP/1.1 09:40:58.128021 Are-we-friendly question received 09:40:58.128346 Wrote request (93 bytes) input to log/18/server.input 09:40:58.128864 Identifying ourselves as friends 09:40:58.131897 Response sent (56 bytes) and written to log/18/server.response 09:40:58.132066 special request received, no persistency 09:40:58.132202 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41285... * Connected to 127.0.0.1 (127.0.0.1) port 41285 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41285 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73790 === End of file http_verify.out === Start of file netrc679 machine 127.0.0.1 login user1 password "with spaces and \"\n\r\t\a" === End of file netrc679 === Start of file server.cmd Testnum 679 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73790 === End of file server.response === Start of file valgrind679 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 vaCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind691 ../src/curl -q --include --trace-ascii log/6/trace691 --trace-config all --trace-time http://127.0.0.1:37181/path/to/here/ -O --output-dir log/6 > log/6/stdout691 2> log/6/stderr691 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind695 ./libtest/libtests lib695 http://127.0.0.1:46607/we/want/695 > log/9/stdout695 2> log/9/stderr695 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind692 ../src/curl -q --trace-ascii log/10/trace692 --trace-config all --trace-time http://127.0.0.1:36913/ -JO --output-dir log/10 > log/10/stdout692 2> log/10/stderr692 lgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind679 test 0691...[-O with URL with path using trailing slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind691 ../src/curl -q --include --trace-ascii log/6/trace691 --trace-config all --trace-time http://127.0.0.1:37181/path/to/here/ -O --output-dir log/6 > log/6/stdout691 2> log/6/stderr691 691: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 691 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind691 ../src/curl -q --include --trace-ascii log/6/trace691 --trace-config all --trace-time http://127.0.0.1:37181/path/to/here/ -O --output-dir log/6 > log/6/stdout691 2> log/6/stderr691 === End of file commands.log === Start of file http_server.log 09:40:58.384795 ====> Client connect 09:40:58.385061 accept_connection 3 returned 4 09:40:58.385210 accept_connection 3 returned 0 09:40:58.386029 Read 93 bytes 09:40:58.386166 Process 93 bytes request 09:40:58.386245 Got request: GET /verifiedserver HTTP/1.1 09:40:58.386316 Are-we-friendly question received 09:40:58.386658 Wrote request (93 bytes) input to log/6/server.input 09:40:58.386876 Identifying ourselves as friends 09:40:58.388602 Response sent (56 bytes) and written to log/6/server.response 09:40:58.388727 special request received, no persistency 09:40:58.388798 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37181... * Connected to 127.0.0.1 (127.0.0.1) port 37181 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37181 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73803 === End of file http_verify.out === Start of file server.cmd Testnum 691 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73803 === End of file server.response === Start of file valgrind691 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind691 test 0695...[MIME parts reuse as a child part] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind695 ./libtest/libtests lib695 http://127.0.0.1:46607/we/want/695 > log/9/stdout695 2> log/9/stderr695 695: protocol FAILED! There was no content at all in the file log/9/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/9/ dir after test 695 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind695 ./libtest/libtests lib695 http://127.0.0.1:46607/we/want/695 > log/9/stdout695 2> log/9/stderr695 === End of file commands.log === Start of file http_server.log 09:40:58.475598 ====> Client connect 09:40:58.475942 accept_connection 3 returned 4 09:40:58.476123 accept_connection 3 returned 0 09:40:58.476274 Read 93 bytes 09:40:58.476383 Process 93 bytes request 09:40:58.476582 Got request: GET /verifiedserver HTTP/1.1 09:40:58.476695 Are-we-friendly question received 09:40:58.476937 Wrote request (93 bytes) input to log/9/server.input 09:40:58.477132 Identifying ourselves as friends 09:40:58.478965 Response sent (56 bytes) and written to log/9/server.response 09:40:58.479094 special request received, no persistency 09:40:58.479168 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46607... * Connected to 127.0.0.1 (127.0.0.1) port 46607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46607 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73797 === End of file http_verify.out === Start of file server.cmd Testnum 695 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73797 === End of file server.response === Start of file valgrind695 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: lCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind690 ../src/curl -q --include --trace-ascii log/43/trace690 --trace-config all --trace-time http://127.0.0.1:41267/ -O --output-dir log/43 > log/43/stdout690 2> log/43/stderr690 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind693 ../src/curl -q --output log/58/curl693.out --include --trace-ascii log/58/trace693 --trace-config all --trace-time http://127.0.0.1:46727/693 --etag-save log/58/moo/boo/etag693 --create-dirs > log/58/stdout693 2> log/58/stderr693 ibc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind695 test 0692...[-JO with URL without path using trailing slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind692 ../src/curl -q --trace-ascii log/10/trace692 --trace-config all --trace-time http://127.0.0.1:36913/ -JO --output-dir log/10 > log/10/stdout692 2> log/10/stderr692 692: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 692 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind692 ../src/curl -q --trace-ascii log/10/trace692 --trace-config all --trace-time http://127.0.0.1:36913/ -JO --output-dir log/10 > log/10/stdout692 2> log/10/stderr692 === End of file commands.log === Start of file http_server.log 09:40:58.381850 ====> Client connect 09:40:58.382133 accept_connection 3 returned 4 09:40:58.382296 accept_connection 3 returned 0 09:40:58.382436 Read 93 bytes 09:40:58.382637 Process 93 bytes request 09:40:58.382731 Got request: GET /verifiedserver HTTP/1.1 09:40:58.382804 Are-we-friendly question received 09:40:58.383026 Wrote request (93 bytes) input to log/10/server.input 09:40:58.383204 Identifying ourselves as friends 09:40:58.383990 Response sent (56 bytes) and written to log/10/server.response 09:40:58.384098 special request received, no persistency 09:40:58.384156 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36913... * Connected to 127.0.0.1 (127.0.0.1) port 36913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36913 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73804 === End of file http_verify.out === Start of file server.cmd Testnum 692 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73804 === End of file server.response === Start of file valgrind692 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind692 test 0690...[-O with URL without path using trailing slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind690 ../src/curl -q --include --trace-ascii log/43/trace690 --trace-config all --trace-time http://127.0.0.1:41267/ -O --output-dir log/43 > log/43/stdout690 2> log/43/stderr690 690: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 690 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind690 ../src/curl -q --include --trace-ascii log/43/trace690 --trace-config all --trace-time http://127.0.0.1:41267/ -O --output-dir log/43 > log/43/stdout690 2> log/43/stderr690 === End of file commands.log === Start of file http_server.log 09:40:58.388665 ====> Client connect 09:40:58.389032 accept_connection 3 returned 4 09:40:58.389219 accept_connection 3 returned 0 09:40:58.389365 Read 93 bytes 09:40:58.389564 Process 93 bytes request 09:40:58.389693 Got request: GET /verifiedserver HTTP/1.1 09:40:58.389791 Are-we-friendly question received 09:40:58.390076 Wrote request (93 bytes) input to log/43/server.input 09:40:58.390269 Identifying ourselves as friends 09:40:58.393378 Response sent (56 bytes) and written to log/43/server.response 09:40:58.394731 special request received, no persistency 09:40:58.394831 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd Testnum 690 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file valgrind690 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind690 test 0693...[--etag-save with --create-dirs] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind697 ../src/curl -q --output log/31/curl697.out --include --trace-ascii log/31/trace697 --trace-config all --trace-time --netrc --netrc-file log/31/netrc697 http://user1@http.example/ > log/31/stdout697 2> log/31/stderr697 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind694 ./libtest/libtests lib694 http://127.0.0.1:42899/path/mine http://127.0.0.1:42899/path/6940010 > log/39/stdout694 2> log/39/stderr694 ers=16 --log-file=log/58/valgrind693 ../src/curl -q --output log/58/curl693.out --include --trace-ascii log/58/trace693 --trace-config all --trace-time http://127.0.0.1:46727/693 --etag-save log/58/moo/boo/etag693 --create-dirs > log/58/stdout693 2> log/58/stderr693 693: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 693 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind693 ../src/curl -q --output log/58/curl693.out --include --trace-ascii log/58/trace693 --trace-config all --trace-time http://127.0.0.1:46727/693 --etag-save log/58/moo/boo/etag693 --create-dirs > log/58/stdout693 2> log/58/stderr693 === End of file commands.log === Start of file http_server.log 09:40:58.430196 ====> Client connect 09:40:58.430623 accept_connection 3 returned 4 09:40:58.430845 accept_connection 3 returned 0 09:40:58.430978 Read 93 bytes 09:40:58.431078 Process 93 bytes request 09:40:58.431196 Got request: GET /verifiedserver HTTP/1.1 09:40:58.431296 Are-we-friendly question received 09:40:58.431663 Wrote request (93 bytes) input to log/58/server.input 09:40:58.431888 Identifying ourselves as friends 09:40:58.432911 Response sent (56 bytes) and written to log/58/server.response 09:40:58.433045 special request received, no persistency 09:40:58.433131 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46727... * Connected to 127.0.0.1 (127.0.0.1) port 46727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73755 === End of file http_verify.out === Start of file server.cmd Testnum 693 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73755 === End of file server.response === Start of file valgrind693 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind693 * starts no server test 0697...[netrc with missing netrc file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind697 ../src/curl -q --output log/31/curl697.out --include --trace-ascii log/31/trace697 --trace-config all --trace-time --netrc --netrc-file log/31/netrc697 http://user1@http.example/ > log/31/stdout697 2> log/31/stderr697 curl returned 1, when expecting 26 697: exit FAILED == Contents of files in the log/31/ dir after test 697 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind697 ../src/curl -q --output log/31/curl697.out --include --trace-ascii log/31/trace697 --trace-config all --trace-time --netrc --netrc-file log/31/netrc697 http://user1@http.example/ > log/31/stdout697 2> log/31/stderr697 === End of file commands.log === Start of file server.cmd Testnum 697 === End of file server.cmd === Start of file valgrind697 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind697 test 0694...[HTTP with NTLM twice, verify CURLINFO_HTTPAUTH_USED] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind694 ./libtest/libtests lib694 http://127.0.0.1:42899/path/mine http://127.0.0.1:42899/path/6940010 > log/39/stdout694 2> log/39/stderr694 694: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 694 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind694 ./libtest/libtests lib694 http://127.0.0.1:42899/path/mine http://127.0.0.1:42899/path/6940010 > log/39/stdout694 2> log/39/stderr694 === End of file commands.log === Start of file http_server.log 09:40:58.484713 ====> Client connect 09:40:58.485093 accept_connection 3 returned 4 09:40:58.485296 accept_connection 3 returned 0 09:40:58.485587 Read 93 bytes 09:40:58.485741 Process 93 bytes request 09:40:58.485843 Got request: GET /verifiedserver HTTP/1.1 09:40:58.485943 Are-we-friendly question received 09:40:58.486215 Wrote request (93 bytes) input to log/39/server.input 09:40:58.486429 Identifying ourselves as friends 09:40:58.488387 Response sent (56 bytes) and written to log/39/server.response 09:40:58.491294 special request received, no persistency 09:40:58.491399 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * RequCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind696 ./libtest/libtests lib556 http://127.0.0.1:38797 > log/63/stdout696 2> log/63/stderr696 est completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 694 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind694 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind694 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind689 ./libtest/libtests lib567 rtsp://127.0.0.1:34417/689 > log/35/stdout689 2> log/35/stderr689 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind699 ../src/curl -q --output log/13/curl699.out --include --trace-ascii log/13/trace699 --trace-config all --trace-time http://127.0.0.1:44087/699 -K log/13/cmd > log/13/stdout699 2> log/13/stderr699 test 0696...[CONNECT_ONLY and doing a second curl_easy_perform] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind696 ./libtest/libtests lib556 http://127.0.0.1:38797 > log/63/stdout696 2> log/63/stderr696 696: stdout FAILED: --- log/63/check-expected 2025-07-18 09:40:59.280311883 +0000 +++ log/63/check-generated 2025-07-18 09:40:59.278598784 +0000 @@ -1,14 +0,0 @@ -HTTP/1.1 200 OK swsclose[CR][LF] -Server: test-server/fake[CR][LF] -Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -[CR][LF] --foo-[LF] -HTTP/1.1 200 OK swsclose[CR][LF] -Server: test-server/fake[CR][LF] -Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -[CR][LF] --foo-[LF] == Contents of files in the log/63/ dir after test 696 === Start of file check-expected HTTP/1.1 200 OK swsclose[CR][LF] Server: test-server/fake[CR][LF] Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] [CR][LF] -foo-[LF] HTTP/1.1 200 OK swsclose[CR][LF] Server: test-server/fake[CR][LF] Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] [CR][LF] -foo-[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind696 ./libtest/libtests lib556 http://127.0.0.1:38797 > log/63/stdout696 2> log/63/stderr696 === End of file commands.log === Start of file http_server.log 09:40:58.797934 ====> Client connect 09:40:58.798234 accept_connection 3 returned 4 09:40:58.798397 accept_connection 3 returned 0 09:40:58.798742 Read 93 bytes 09:40:58.798851 Process 93 bytes request 09:40:58.798935 Got request: GET /verifiedserver HTTP/1.1 09:40:58.799003 Are-we-friendly question received 09:40:58.799220 Wrote request (93 bytes) input to log/63/server.input 09:40:58.799392 Identifying ourselves as friends 09:40:58.800237 Response sent (56 bytes) and written to log/63/server.response 09:40:58.800356 special request received, no persistency 09:40:58.800419 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38797... * Connected to 127.0.0.1 (127.0.0.1) port 38797 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38797 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73747 === End of file http_verify.out === Start of file server.cmd Testnum 696 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73747 === End of file server.response === Start of file valgrind696 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind696 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/35/server/rtsp_server.pid" --portfile "log/35/server/rtsp_server.port" --logfile "log/35/rtsp_server.log" --logdir "log/35" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: RTSP server PID 107925 port 34417 * pid rtsp => 107925 107925 test 0689...[fuzzing crash issue #12701] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind689 ./libtest/libtests lib567 rtsp://127.0.0.1:34417/689 > log/35/stdout689 2> log/35/stderr689 689: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 689 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind689 ./libtest/libtests lib567 rtsp://127.0.0.1:34417/689 > log/35/stdout689 2> log/35/stderr689 === End of file commands.log === Start of file rtsp_server.log 09:40:58.367292 Running IPv4 version on port 34417 09:40:58.368288 Wrote pid 107925 to log/35/server/rtsp_server.pid 09:40:58.368728 Wrote port 34417 to log/35/server/rtsp_server.port === End of file rtsp_server.log === Start of file server.cmd Testnum 689 === End of file server.cmd === Start of file valgrind689 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind689 test 0699...[--config with single-letter options plus one that is cleared] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind699 ../src/curl -q --output log/13/curl699.out --include --trace-ascii log/13/trace699 --trace-config all --trace-time http://127.0.0.1:44087/699 -K log/13/cmd > log/13/stdout699 2> log/13/stderr699 699: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 699 === Start of file cmd -Lfuhej:you === End oCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind704 ../src/curl -q --output log/30/curl704.out --include --trace-ascii log/30/trace704 --trace-config all --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:43913/704 > log/30/stdout704 2> log/30/stderr704 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind705 ../src/curl -q --output log/19/curl705.out --include --trace-ascii log/19/trace705 --trace-config all --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:35697/705 > log/19/stdout705 2> log/19/stderr705 f file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind699 ../src/curl -q --output log/13/curl699.out --include --trace-ascii log/13/trace699 --trace-config all --trace-time http://127.0.0.1:44087/699 -K log/13/cmd > log/13/stdout699 2> log/13/stderr699 === End of file commands.log === Start of file http_server.log 09:40:59.085713 ====> Client connect 09:40:59.086038 accept_connection 3 returned 4 09:40:59.086200 accept_connection 3 returned 0 09:40:59.086332 Read 93 bytes 09:40:59.086426 Process 93 bytes request 09:40:59.086625 Got request: GET /verifiedserver HTTP/1.1 09:40:59.086718 Are-we-friendly question received 09:40:59.086946 Wrote request (93 bytes) input to log/13/server.input 09:40:59.087127 Identifying ourselves as friends 09:40:59.087928 Response sent (56 bytes) and written to log/13/server.response 09:40:59.088076 special request received, no persistency 09:40:59.088252 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44087... * Connected to 127.0.0.1 (127.0.0.1) port 44087 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44087 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73796 === End of file http_verify.out === Start of file server.cmd Testnum 699 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73796 === End of file server.response === Start of file valgrind699 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind699 test 0704...[Attempt connect to non-listening SOCKS4 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind704 ../src/curl -q --output log/30/curl704.out --include --trace-ascii log/30/trace704 --trace-config all --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:43913/704 > log/30/stdout704 2> log/30/stderr704 curl returned 1, when expecting 7 704: exit FAILED == Contents of files in the log/30/ dir after test 704 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind704 ../src/curl -q --output log/30/curl704.out --include --trace-ascii log/30/trace704 --trace-config all --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:43913/704 > log/30/stdout704 2> log/30/stderr704 === End of file commands.log === Start of file http_server.log 09:40:59.200961 ====> Client connect 09:40:59.201355 accept_connection 3 returned 4 09:40:59.201624 accept_connection 3 returned 0 09:40:59.201783 Read 93 bytes 09:40:59.201885 Process 93 bytes request 09:40:59.201981 Got request: GET /verifiedserver HTTP/1.1 09:40:59.202064 Are-we-friendly question received 09:40:59.202281 Wrote request (93 bytes) input to log/30/server.input 09:40:59.202554 Identifying ourselves as friends 09:40:59.203366 Response sent (56 bytes) and written to log/30/server.response 09:40:59.203906 special request received, no persistency 09:40:59.204005 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43913... * Connected to 127.0.0.1 (127.0.0.1) port 43913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43913 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73779 === End of file http_verify.out === Start of file server.cmd Testnum 704 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73779 === End of file server.response === Start of file valgrind704 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind704 test 0705...[Attempt connect to non-listening SOCKS5 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind705 ../src/curl -q --output log/19/curl705.out --include --trace-ascii log/19/trace705 --trace-config all --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:35697/705 > log/19/stdout705 2> log/19/stderr705 curl returned 1, when expecting 7 705: exit FAILED == Contents of files in the log/19/ dir after test 705 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind705 ../src/curl -q --output log/19/curl705.out --include --trace-ascii log/19/trace705 --trace-config all --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:35697/705 > log/19/stdout705 2> log/19/stderr705 === End of file commands.log === Start of file http_server.log 09:40:59.214199 ====> Client connect 09:40:59.214889 accCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind698 ../src/curl -q --output log/36/curl698.out --include --trace-ascii log/36/trace698 --trace-config all --trace-time ftp://127.0.0.1:45965/698 --ftp-account "one count" ftp://127.0.0.1:45965/698 > log/36/stdout698 2> log/36/stderr698 ept_connection 3 returned 4 09:40:59.215176 accept_connection 3 returned 0 09:40:59.215324 Read 93 bytes 09:40:59.215430 Process 93 bytes request 09:40:59.215648 Got request: GET /verifiedserver HTTP/1.1 09:40:59.215753 Are-we-friendly question received 09:40:59.216082 Wrote request (93 bytes) input to log/19/server.input 09:40:59.216309 Identifying ourselves as friends 09:40:59.217208 Response sent (56 bytes) and written to log/19/server.response 09:40:59.217327 special request received, no persistency 09:40:59.217399 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35697... * Connected to 127.0.0.1 (127.0.0.1) port 35697 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35697 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73791 === End of file http_verify.out === Start of file server.cmd Testnum 705 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73791 === End of file server.response === Start of file valgrind705 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind705 test 0698...[FTP with ACCT and connection reuse] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind698 ../src/curl -q --output log/36/curl698.out --include --trace-ascii log/36/trace698 --trace-config all --trace-time ftp://127.0.0.1:45965/698 --ftp-account "one count" ftp://127.0.0.1:45965/698 > log/36/stdout698 2> log/36/stderr698 698: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 698 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind698 ../src/curl -q --output log/36/curl698.out --include --trace-ascii log/36/trace698 --trace-config all --trace-time ftp://127.0.0.1:45965/698 --ftp-account "one count" ftp://127.0.0.1:45965/698 > log/36/stdout698 2> log/36/stderr698 === End of file commands.log === Start of file ftp_server.log 09:40:58.827432 ====> Client connect 09:40:58.828622 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:58.832899 < "USER anonymous" 09:40:58.833434 > "331 We are happy you popped in![CR][LF]" 09:40:58.837137 < "PASS ftp@example.com" 09:40:58.837565 > "230 Welcome you silly person[CR][LF]" 09:40:58.841103 < "PWD" 09:40:58.842956 > "257 "/" is current directory[CR][LF]" 09:40:58.844602 < "EPSV" 09:40:58.845018 ====> Passive DATA channel requested by client 09:40:58.845250 DATA sockfilt for passive data channel starting... 09:40:58.862630 DATA sockfilt for passive data channel started (pid 108880) 09:40:58.863897 DATA sockfilt for passive data channel listens on port 40805 09:40:58.864379 > "229 Entering Passive Mode (|||40805|)[LF]" 09:40:58.864686 Client has been notified that DATA conn will be accepted on port 40805 09:40:58.867942 Client connects to port 40805 09:40:58.868331 ====> Client established passive DATA connection on port 40805 09:40:58.869351 < "TYPE I" 09:40:58.869903 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:58.872438 < "SIZE verifiedserver" 09:40:58.873461 > "213 17[CR][LF]" 09:40:58.875413 < "RETR verifiedserver" 09:40:58.876353 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:58.877192 =====> Closing passive DATA connection... 09:40:58.877419 Server disconnects passive DATA connection 09:40:58.879888 Server disconnected passive DATA connection 09:40:58.880200 DATA sockfilt for passive data channel quits (pid 108880) 09:40:58.882296 DATA sockfilt for passive data channel quit (pid 108880) 09:40:58.882578 =====> Closed passive DATA connection 09:40:58.883074 > "226 File transfer complete[CR][LF]" 09:40:58.924013 < "QUIT" 09:40:58.925243 > "221 bye bye baby[CR][LF]" 09:40:58.929242 MAIN sockfilt said DISC 09:40:58.930222 ====> Client disconnected 09:40:58.930870 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:59.080646 ====> Client connect 09:40:59.082724 Received DATA (on stdin) 09:40:59.082858 > 160 bytes data, server => client 09:40:59.082953 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:59.083034 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:59.083111 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:59.085371 < 16 bytes data, client => server 09:40:59.085587 'USER anonymous\r\n' 09:40:59.087517 Received DATA (on stdin) 09:40:59.087650 > 33 bytes data, server => client 09:40:59.087730 '331 We are happy you popped in!\r\n' 09:40:59.089958 < 22 bytes data, client => server 09:40:59.090117 'PASS ftp@example.com\r\n' 09:40:59.091668 Received DATA (on stdin) 09:40:59.091812 > 30 bytes data, server => client 09:40:59.091894 '230 Welcome you silly person\r\n' 09:40:59.093864 < 5 bytes data, client => server 09:40:59.094031 'PWD\r\n' 09:40:59.095382 Received DATA (on stdin) 09:40:59.095649 > 30 bytes data, server => client 09:40:59.095962 '257 "/" is current directory\r\n' 09:40:59.097416 < 6 bytes data, client => server 09:40:59.097648 'EPSV\r\n' 09:40:59.118873 Received DATA (on stdin) 09:40:59.119054 > 38 bytes data, server => client 09:40:59.119170 '229 Entering Passive Mode (|||40805|)\n' 09:40:59.121231 < 8 bytes data, client => server 09:40:59.121362 'TYPE I\r\n' 09:40:59.123950 Received DATA (on stdin) 09:40:59.124129 > 33 bytes data, server => client 09:40:59.124244 '200 I modify TYPE as you wanted\r\n' 09:40:59.124906 < 21 bytes data, client => server 09:40:59.125051 'SIZE verifiedserver\r\n' 09:40:59.126743 Received DATA (on stdin) 09:40:59.126955 > 8 bytes data, server => client 09:40:59.127589 '213 17\r\n' 09:40:59.128280 < 21 bytes data, client => server 09:40:59.128424 'RETR verifiedserver\r\n' 09:40:59.129661 Received DATA (on stdin) 09:40:59.129841 > 29 bytes data, server => client 09:40:59.131381 '150 Binary junk (17 bytes).\r\n' 09:40:59.137127 Received DATA (on stdin) 09:40:59.137264 > 28 bytes data, server => client 09:40:59.137356 '226 File transfer complete\r\n' 09:40:59.176727 < 6 bytes data, client => server 09:40:59.176903 'QUIT\r\n' 09:40:59.178127 Received DACMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind703 ../src/curl -q --output log/17/curl703.out --include --trace-ascii log/17/trace703 --trace-config all --trace-time --socks5 127.0.0.1:43067 http://127.0.0.1:47 > log/17/stdout703 2> log/17/stderr703 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind702 ../src/curl -q --output log/18/curl702.out --include --trace-ascii log/18/trace702 --trace-config all --trace-time --socks4 127.0.0.1:35645 http://127.0.0.1:47 > log/18/stdout702 2> log/18/stderr702 TA (on stdin) 09:40:59.178275 > 18 bytes data, server => client 09:40:59.178534 '221 bye bye baby\r\n' 09:40:59.182648 ====> Client disconnect 09:40:59.183310 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:58.114684 Running IPv4 version 09:40:58.115392 Listening on port 40805 09:40:58.115880 Wrote pid 108880 to log/36/server/ftp_sockdata.pid 09:40:58.116063 Received PING (on stdin) 09:40:58.116928 Received PORT (on stdin) 09:40:58.120951 ====> Client connect 09:40:58.131824 Received DATA (on stdin) 09:40:58.131972 > 17 bytes data, server => client 09:40:58.132057 'WE ROOLZ: 82698\r\n' 09:40:58.132315 Received DISC (on stdin) 09:40:58.132544 ====> Client forcibly disconnected 09:40:58.134201 Received QUIT (on stdin) 09:40:58.134335 quits 09:40:58.134813 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 332 please provide account name REPLY ACCT 230 thank you Testnum 698 === End of file server.cmd === Start of file valgrind698 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind698 startnew: ./server/servers socksd --port 0 --pidfile log/17/server/socks_server.pid --portfile log/17/server/socks_server.port --reqfile log/17/socksd-request.log --logfile log/17/socks_server.log --backend 127.0.0.1 --config log/17/server.cmd RUN: SOCKS server is now running PID 108831 * pid socks => 108831 108831 test 0703...[Attempt connect to non-listening HTTP server via SOCKS5 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind703 ../src/curl -q --output log/17/curl703.out --include --trace-ascii log/17/trace703 --trace-config all --trace-time --socks5 127.0.0.1:43067 http://127.0.0.1:47 > log/17/stdout703 2> log/17/stderr703 curl returned 1, when expecting 97 703: exit FAILED == Contents of files in the log/17/ dir after test 703 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind703 ../src/curl -q --output log/17/curl703.out --include --trace-ascii log/17/trace703 --trace-config all --trace-time --socks5 127.0.0.1:43067 http://127.0.0.1:47 > log/17/stdout703 2> log/17/stderr703 === End of file commands.log === Start of file server.cmd response 1 Testnum 703 === End of file server.cmd === Start of file socks_server.log 09:40:58.066912 Running IPv4 version 09:40:58.067538 Listening on port 43067 09:40:58.068004 Wrote pid 108831 to log/17/server/socks_server.pid 09:40:58.068516 Wrote port 43067 to log/17/server/socks_server.port === End of file socks_server.log === Start of file valgrind703 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind703 startnew: ./server/servers socksd --port 0 --pidfile log/18/server/socks_server.pid --portfile log/18/server/socks_server.port --reqfile log/18/socksd-request.log --logfile log/18/socks_server.log --backend 127.0.0.1 --config log/18/server.cmd RUN: SOCKS server is now running PID 108825 * pid socks => 108825 108825 test 0702...[Attempt connect to non-listening HTTP server via SOCKS4 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind702 ../src/curl -q --output log/18/curl702.out --include --trace-ascii log/18/trace702 --trace-config all --trace-time --socks4 127.0.0.1:35645 http://127.0.0.1:47 > log/18/stdout702 2> log/18/stderr702 curl returned 1, when expecting 97 702: exit FAILED == Contents of files in the log/18/ dir after test 702 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind702 ../src/curl -q --output log/18/curl702.out --include --trace-ascii log/18/trace702 --trace-config all --trace-time --socks4 127.0.0.1:35645 http://127.0.0.1:47 > log/18/stdout702 2> log/18/stderr702 === End of file commands.log === Start of file server.cmd response 91 Testnum 702 === End of file server.cmd === Start of file socks_server.log 09:40:58.051403 Running IPv4 version 09:40:58.052372 Listening on port 35645 09:40:58.052946 Wrote pid 108825 to log/18/server/socks_server.pid 09:40:58.053290 Wrote port 35645 to log/18/server/socks_server.port === End of file socks_server.log === Start of file valgrind702 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the aboCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind700 ../src/curl -q --output log/4/curl700.out --include --trace-ascii log/4/trace700 --trace-config all --trace-time --socks4 127.0.0.1:32783 http://127.0.0.1:43013/700 > log/4/stdout700 2> log/4/stderr700 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind718 ../src/curl -q --output log/36/curl718.out --include --trace-ascii log/36/trace718 --trace-config all --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:44255 --proxytunnel > log/36/stdout718 2> log/36/stderr718 ve-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind702 startnew: ./server/servers socksd --port 0 --pidfile log/4/server/socks_server.pid --portfile log/4/server/socks_server.port --reqfile log/4/socksd-request.log --logfile log/4/socks_server.log --backend 127.0.0.1 --config log/4/server.cmd RUN: SOCKS server is now running PID 108952 * pid socks => 108952 108952 test 0700...[HTTP GET via SOCKS4 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind700 ../src/curl -q --output log/4/curl700.out --include --trace-ascii log/4/trace700 --trace-config all --trace-time --socks4 127.0.0.1:32783 http://127.0.0.1:43013/700 > log/4/stdout700 2> log/4/stderr700 700: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 700 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind700 ../src/curl -q --output log/4/curl700.out --include --trace-ascii log/4/trace700 --trace-config all --trace-time --socks4 127.0.0.1:32783 http://127.0.0.1:43013/700 > log/4/stdout700 2> log/4/stderr700 === End of file commands.log === Start of file http_server.log 09:40:59.167092 ====> Client connect 09:40:59.167399 accept_connection 3 returned 4 09:40:59.167655 accept_connection 3 returned 0 09:40:59.167811 Read 93 bytes 09:40:59.167916 Process 93 bytes request 09:40:59.168021 Got request: GET /verifiedserver HTTP/1.1 09:40:59.168117 Are-we-friendly question received 09:40:59.168345 Wrote request (93 bytes) input to log/4/server.input 09:40:59.168606 Identifying ourselves as friends 09:40:59.169303 Response sent (56 bytes) and written to log/4/server.response 09:40:59.169422 special request received, no persistency 09:40:59.169578 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43013... * Connected to 127.0.0.1 (127.0.0.1) port 43013 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43013 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73808 === End of file http_verify.out === Start of file server.cmd Testnum 700 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73808 === End of file server.response === Start of file socks_server.log 09:40:58.225353 Running IPv4 version 09:40:58.225950 Listening on port 32783 09:40:58.226548 Wrote pid 108952 to log/4/server/socks_server.pid 09:40:58.226899 Wrote port 32783 to log/4/server/socks_server.port === End of file socks_server.log === Start of file valgrind700 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind700 test 0718...[HTTP proxy CONNECT (no auth) with proxy returning 407 and closing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind718 ../src/curl -q --output log/36/curl718.out --include --trace-ascii log/36/trace718 --trace-config all --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:44255 --proxytunnel > log/36/stdout718 2> log/36/stderr718 718: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 718 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind718 ../src/curl -q --output log/36/curl718.out --include --trace-ascii log/36/trace718 --trace-config all --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:44255 --proxytunnel > log/36/stdout718 2> log/36/stderr718 === End of file commands.log === Start of file http_server.log 09:41:00.164945 ====> Client connect 09:41:00.165300 accept_connection 3 returned 4 09:41:00.165844 accept_connection 3 returned 0 09:41:00.166167 Read 93 bytes 09:41:00.166334 Process 93 bytes request 09:41:00.166605 Got request: GET /verifiedserver HTTP/1.1 09:41:00.166773 Are-we-friendly question received 09:41:00.167211 Wrote request (93 bytes) input to log/36/server.input 09:41:00.169685 Identifying ourselves as friends 09:41:00.170654 Response sent (56 bytes) and written to log/36/server.response 09:41:00.170774 special request received, no persistency 09:41:00.170845 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44255... * Connected to 127.0.0.1 (127.0.0.1) port 44255 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44255 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 77175 === End of file http_verify.out === Start of file server.cmd Testnum 718 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 77175 === End of file server.response === Start of file valgrind718 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, shCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind701 ../src/curl -q --output log/54/curl701.out --include --trace-ascii log/54/trace701 --trace-config all --trace-time --socks5 127.0.0.1:37055 http://127.0.0.1:44921/701 > log/54/stdout701 2> log/54/stderr701 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind709 ../src/curl -q --output log/10/curl709.out --include --trace-ascii log/10/trace709 --trace-config all --trace-time http://127.0.0.1:36913/709 > log/10/stdout709 2> log/10/stderr709 ort term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind718 startnew: ./server/servers socksd --port 0 --pidfile log/54/server/socks_server.pid --portfile log/54/server/socks_server.port --reqfile log/54/socksd-request.log --logfile log/54/socks_server.log --backend 127.0.0.1 --config log/54/server.cmd RUN: SOCKS server is now running PID 108949 * pid socks => 108949 108949 test 0701...[HTTP GET via SOCKS5 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind701 ../src/curl -q --output log/54/curl701.out --include --trace-ascii log/54/trace701 --trace-config all --trace-time --socks5 127.0.0.1:37055 http://127.0.0.1:44921/701 > log/54/stdout701 2> log/54/stderr701 701: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 701 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind701 ../src/curl -q --output log/54/curl701.out --include --trace-ascii log/54/trace701 --trace-config all --trace-time --socks5 127.0.0.1:37055 http://127.0.0.1:44921/701 > log/54/stdout701 2> log/54/stderr701 === End of file commands.log === Start of file http_server.log 09:40:59.179860 ====> Client connect 09:40:59.180120 accept_connection 3 returned 4 09:40:59.180256 accept_connection 3 returned 0 09:40:59.180380 Read 93 bytes 09:40:59.180572 Process 93 bytes request 09:40:59.180669 Got request: GET /verifiedserver HTTP/1.1 09:40:59.180754 Are-we-friendly question received 09:40:59.180968 Wrote request (93 bytes) input to log/54/server.input 09:40:59.181118 Identifying ourselves as friends 09:40:59.181852 Response sent (56 bytes) and written to log/54/server.response 09:40:59.181944 special request received, no persistency 09:40:59.182006 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 701 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file socks_server.log 09:40:58.226656 Running IPv4 version 09:40:58.227160 Listening on port 37055 09:40:58.230752 Wrote pid 108949 to log/54/server/socks_server.pid 09:40:58.231148 Wrote port 37055 to log/54/server/socks_server.port === End of file socks_server.log === Start of file valgrind701 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind701 startnew: ./server/servers socksd --port 0 --pidfile log/10/server/socks_server.pid --portfile log/10/server/socks_server.port --reqfile log/10/socksd-request.log --logfile log/10/socks_server.log --backend 127.0.0.1 --config log/10/server.cmd RUN: SOCKS server is now running PID 109110 * pid socks => 109110 109110 setenv http_proxy = socks5://127.0.0.1:39119 test 0709...[HTTP GET via SOCKS5 set in http_proxy environment variable] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind709 ../src/curl -q --output log/10/curl709.out --include --trace-ascii log/10/trace709 --trace-config all --trace-time http://127.0.0.1:36913/709 > log/10/stdout709 2> log/10/stderr709 709: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 709 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind709 ../src/curl -q --output log/10/curl709.out --include --trace-ascii log/10/trace709 --trace-config all --trace-time http://127.0.0.1:36913/709 > log/10/stdout709 2> log/10/stderr709 === End of file commands.log === Start of file http_server.log 09:40:59.382964 ====> Client connect 09:40:59.383252 accept_connection 3 returned 4 09:40:59.383415 accept_connection 3 returned 0 09:40:59.384344 Read 93 bytes 09:40:59.384555 Process 93 bytes request 09:40:59.384666 Got request: GET /verifiedserver HTTP/1.1 09:40:59.384765 Are-we-friendly question received 09:40:59.385006 Wrote request (93 bytes) input to log/10/server.input 09:40:59.385217 Identifying ourselves as friends 09:40:59.386939 Response sent (56 bytes) and written to log/10/server.response 09:40:59.387056 special request received, no persistency 09:40:59.387129 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36913... * Connected to 127.0.0.1 (127.0.0.1) port 36913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36913 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73804 === End of file http_verify.out === Start of file server.cmd Testnum 709 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73804 === End of file server.response === Start of file socks_server.log 09:40:5CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind710 ../src/curl -q --output log/58/curl710.out --include --trace-ascii log/58/trace710 --trace-config all --trace-time http://127.0.0.1:46727/710 --proxy socks5://127.0.0.1:43307 > log/58/stdout710 2> log/58/stderr710 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind706 ../src/curl -q --output log/6/curl706.out --include --trace-ascii log/6/trace706 --trace-config all --trace-time --socks4 127.0.0.1:33971 ftp://127.0.0.1:34161/ > log/6/stdout706 2> log/6/stderr706 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind708 ../src/curl -q --output log/43/curl708.out --include --trace-ascii log/43/trace708 --trace-config all --trace-time http://127.0.0.1:41267/708 > log/43/stdout708 2> log/43/stderr708 9.441150 Running IPv4 version 09:40:59.441735 Listening on port 39119 09:40:59.442145 Wrote pid 109110 to log/10/server/socks_server.pid 09:40:59.442689 Wrote port 39119 to log/10/server/socks_server.port === End of file socks_server.log === Start of file valgrind709 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind709 startnew: ./server/servers socksd --port 0 --pidfile log/58/server/socks_server.pid --portfile log/58/server/socks_server.port --reqfile log/58/socksd-request.log --logfile log/58/socks_server.log --backend 127.0.0.1 --config log/58/server.cmd RUN: SOCKS server is now running PID 109157 * pid socks => 109157 109157 test 0710...[HTTP GET via SOCKS5 set with --proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind710 ../src/curl -q --output log/58/curl710.out --include --trace-ascii log/58/trace710 --trace-config all --trace-time http://127.0.0.1:46727/710 --proxy socks5://127.0.0.1:43307 > log/58/stdout710 2> log/58/stderr710 710: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 710 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind710 ../src/curl -q --output log/58/curl710.out --include --trace-ascii log/58/trace710 --trace-config all --trace-time http://127.0.0.1:46727/710 --proxy socks5://127.0.0.1:43307 > log/58/stdout710 2> log/58/stderr710 === End of file commands.log === Start of file http_server.log 09:40:59.439160 ====> Client connect 09:40:59.439546 accept_connection 3 returned 4 09:40:59.439725 accept_connection 3 returned 0 09:40:59.439867 Read 93 bytes 09:40:59.439965 Process 93 bytes request 09:40:59.440050 Got request: GET /verifiedserver HTTP/1.1 09:40:59.440139 Are-we-friendly question received 09:40:59.440389 Wrote request (93 bytes) input to log/58/server.input 09:40:59.440650 Identifying ourselves as friends 09:40:59.441356 Response sent (56 bytes) and written to log/58/server.response 09:40:59.441532 special request received, no persistency 09:40:59.441650 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46727... * Connected to 127.0.0.1 (127.0.0.1) port 46727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73755 === End of file http_verify.out === Start of file server.cmd Testnum 710 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73755 === End of file server.response === Start of file socks_server.log 09:40:59.480739 Running IPv4 version 09:40:59.481273 Listening on port 43307 09:40:59.483844 Wrote pid 109157 to log/58/server/socks_server.pid 09:40:59.484162 Wrote port 43307 to log/58/server/socks_server.port === End of file socks_server.log === Start of file valgrind710 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind710 startnew: ./server/servers socksd --port 0 --pidfile log/6/server/socks_server.pid --portfile log/6/server/socks_server.port --reqfile log/6/socksd-request.log --logfile log/6/socks_server.log --backend 127.0.0.1 --config log/6/server.cmd RUN: SOCKS server is now running PID 109146 * pid socks => 109146 109146 test 0706...[FTP dir list PASV via SOCKS4] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind706 ../src/curl -q --output log/6/curl706.out --include --trace-ascii log/6/trace706 --trace-config all --trace-time --socks4 127.0.0.1:33971 ftp://127.0.0.1:34161/ > log/6/stdout706 2> log/6/stderr706 706: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 706 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind706 ../src/curl -q --output log/6/curl706.out --include --trace-ascii log/6/trace706 --trace-config all --trace-time --socks4 127.0.0.1:33971 ftp://127.0.0.1:34161/ > log/6/stdout706 2> log/6/stderr706 === End of file commands.log === Start of file ftp_server.log 09:40:59.083456 ====> Client connect 09:40:59.085964 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:59.087546 < "USER anonymous" 09:40:59.088418 > "331 We are happy you popped in![CR][LF]" 09:40:59.090555 < "PASS ftp@example.com" 09:40:59.091058 > "230 Welcome you silly person[CR][LF]" 09:40:59.093278 < "PWD" 09:40:59.094289 > "257 "/" is current directory[CR][LF]" 09:40:59.096939 < "EPSV" 09:40:59.097638 ====> PassiCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind707 ../src/curl -q --output log/9/curl707.out --include --trace-ascii log/9/trace707 --trace-config all --trace-time --socks5 127.0.0.1:45189 ftp://127.0.0.1:36293/ > log/9/stdout707 2> log/9/stderr707 ve DATA channel requested by client 09:40:59.098402 DATA sockfilt for passive data channel starting... 09:40:59.114358 DATA sockfilt for passive data channel started (pid 109088) 09:40:59.115521 DATA sockfilt for passive data channel listens on port 37383 09:40:59.116087 > "229 Entering Passive Mode (|||37383|)[LF]" 09:40:59.116350 Client has been notified that DATA conn will be accepted on port 37383 09:40:59.119039 Client connects to port 37383 09:40:59.119324 ====> Client established passive DATA connection on port 37383 09:40:59.120166 < "TYPE I" 09:40:59.121374 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:59.122318 < "SIZE verifiedserver" 09:40:59.122687 > "213 17[CR][LF]" 09:40:59.125263 < "RETR verifiedserver" 09:40:59.126508 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:59.127475 =====> Closing passive DATA connection... 09:40:59.127702 Server disconnects passive DATA connection 09:40:59.128411 Server disconnected passive DATA connection 09:40:59.128684 DATA sockfilt for passive data channel quits (pid 109088) 09:40:59.130667 DATA sockfilt for passive data channel quit (pid 109088) 09:40:59.131024 =====> Closed passive DATA connection 09:40:59.131704 > "226 File transfer complete[CR][LF]" 09:40:59.168944 < "QUIT" 09:40:59.170189 > "221 bye bye baby[CR][LF]" 09:40:59.174230 MAIN sockfilt said DISC 09:40:59.175146 ====> Client disconnected 09:40:59.175699 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:59.336437 ====> Client connect 09:40:59.338385 Received DATA (on stdin) 09:40:59.338628 > 160 bytes data, server => client 09:40:59.338848 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:59.338993 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:59.339085 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:59.340117 < 16 bytes data, client => server 09:40:59.340265 'USER anonymous\r\n' 09:40:59.341740 Received DATA (on stdin) 09:40:59.341899 > 33 bytes data, server => client 09:40:59.342531 '331 We are happy you popped in!\r\n' 09:40:59.343275 < 22 bytes data, client => server 09:40:59.343428 'PASS ftp@example.com\r\n' 09:40:59.345111 Received DATA (on stdin) 09:40:59.345266 > 30 bytes data, server => client 09:40:59.345364 '230 Welcome you silly person\r\n' 09:40:59.346063 < 5 bytes data, client => server 09:40:59.346231 'PWD\r\n' 09:40:59.347387 Received DATA (on stdin) 09:40:59.347623 > 30 bytes data, server => client 09:40:59.348333 '257 "/" is current directory\r\n' 09:40:59.349381 < 6 bytes data, client => server 09:40:59.349652 'EPSV\r\n' 09:40:59.370440 Received DATA (on stdin) 09:40:59.370694 > 38 bytes data, server => client 09:40:59.370794 '229 Entering Passive Mode (|||37383|)\n' 09:40:59.372301 < 8 bytes data, client => server 09:40:59.372519 'TYPE I\r\n' 09:40:59.374228 Received DATA (on stdin) 09:40:59.374368 > 33 bytes data, server => client 09:40:59.374619 '200 I modify TYPE as you wanted\r\n' 09:40:59.375381 < 21 bytes data, client => server 09:40:59.376825 'SIZE verifiedserver\r\n' 09:40:59.376952 Received DATA (on stdin) 09:40:59.377031 > 8 bytes data, server => client 09:40:59.377107 '213 17\r\n' 09:40:59.378127 < 21 bytes data, client => server 09:40:59.378282 'RETR verifiedserver\r\n' 09:40:59.379370 Received DATA (on stdin) 09:40:59.379590 > 29 bytes data, server => client 09:40:59.379774 '150 Binary junk (17 bytes).\r\n' 09:40:59.385057 Received DATA (on stdin) 09:40:59.385203 > 28 bytes data, server => client 09:40:59.385822 '226 File transfer complete\r\n' 09:40:59.421650 < 6 bytes data, client => server 09:40:59.421850 'QUIT\r\n' 09:40:59.423055 Received DATA (on stdin) 09:40:59.423210 > 18 bytes data, server => client 09:40:59.423398 '221 bye bye baby\r\n' 09:40:59.427643 ====> Client disconnect 09:40:59.428282 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:59.366313 Running IPv4 version 09:40:59.366966 Listening on port 37383 09:40:59.367328 Wrote pid 109088 to log/6/server/ftp_sockdata.pid 09:40:59.367697 Received PING (on stdin) 09:40:59.368614 Received PORT (on stdin) 09:40:59.372018 ====> Client connect 09:40:59.380772 Received DATA (on stdin) 09:40:59.381037 > 17 bytes data, server => client 09:40:59.381143 'WE ROOLZ: 79493\r\n' 09:40:59.381812 Received DISC (on stdin) 09:40:59.382030 ====> Client forcibly disconnected 09:40:59.382911 Received QUIT (on stdin) 09:40:59.383055 quits 09:40:59.383421 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 706 === End of file server.cmd === Start of file socks_server.log 09:40:59.474240 Running IPv4 version 09:40:59.474886 Listening on port 33971 09:40:59.475254 Wrote pid 109146 to log/6/server/socks_server.pid 09:40:59.475762 Wrote port 33971 to log/6/server/socks_server.port === End of file socks_server.log === Start of file valgrind706 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind706 startnew: ./server/servers socksd --port 0 --pidfile log/9/server/socks_server.pid --portfile log/9/server/socks_server.port --reqfile log/9/socksd-request.log --logfile log/9/socks_server.log --backend 127.0.0.1 --config log/9/server.cmd RUN: SOCKS server is now running PID 109167 * pid socks => 109167 109167 test 0707...[FTP dir list PASV via SOCKS5] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind707 ../src/curl -q --output log/9/curl707.out --include --trace-ascii log/9/trace707 --trace-config all --trace-time --socks5 127.0.0.1:45189 ftp://127.0.0.1:36293/ > log/9/stdout707 2> log/9/stderr707 707: protocol FAILED! There was no content at all in the file log/9/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/9/ dir after test 707 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind707 ../src/curl -q --output log/9/curl707.out --include --trace-ascii log/9/trace707 --trace-config all --trace-time --socks5 127.0.0.1:45189 ftp://127.0.0.1:36293/ > log/9/stdout707 2> log/9/stderr707 === End of file commands.log === Start of file ftp_server.log 09:40:59.106155 ====> Client connect 09:40:59.108693 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:59.109718 < "USER anonymous" 09:40:59.110983 > "331 We are happy you popped in![CR][LF]" 09:40:59.113561 < "PASS ftp@example.com" 09:40:59.114436 > "230 Welcome you silly person[CR][LF]" 09:40:59.116483 < "PWD" 09:40:59.117406 > "257 "/" is current directory[CR][LF]" 09:40:59.119339 < "EPSV" 09:40:59.119608 ====> Passive DATA channel requested by client 09:40:59.119905 DATA sockfilt for passive data channel starting... 09:40:59.131664 DATA sockfilt for passive data channel started (pid 109097) 09:40:59.132980 DATA sockfilt for passive data channel listens on port 43611 09:40:59.133512 > "229 Entering Passive Mode (|||43611|)[LF]" 09:40:59.133911 Client has been notified that DATA conn will be accepted on port 43611 09:40:59.135704 Client connects to port 43611 09:40:59.136159 ====> Client established passive DATA connection on port 43611 09:40:59.137228 < "TYPE I" 09:40:59.137901 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:59.141230 < "SIZE verifiedserver" 09:40:59.141666 > "213 17[CR][LF]" 09:40:59.146225 < "RETR verifiedserver" 09:40:59.146833 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:59.148875 =====> Closing passive DATA connection... 09:40:59.149155 Server disconnects passive DATA connection 09:40:59.150093 Server disconnected passive DATA connection 09:40:59.150388 DATA sockfilt for passive data channel quits (pid 109097) 09:40:59.152390 DATA sockfilt for passive data channel quit (pid 109097) 09:40:59.152737 =====> Closed passive DATA connection 09:40:59.153209 > "226 File transfer complete[CR][LF]" 09:40:59.189448 < "QUIT" 09:40:59.191653 > "221 bye bye baby[CR][LF]" 09:40:59.196635 MAIN sockfilt said DISC 09:40:59.197709 ====> Client disconnected 09:40:59.198389 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:58.358670 ====> Client connect 09:40:58.361040 Received DATA (on stdin) 09:40:58.361207 > 160 bytes data, server => client 09:40:58.361414 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:58.361628 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:58.361716 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:58.362685 < 16 bytes data, client => server 09:40:58.362851 'USER anonymous\r\n' 09:40:58.364001 Received DATA (on stdin) 09:40:58.364194 > 33 bytes data, server => client 09:40:58.365317 '331 We are happy you popped in!\r\n' 09:40:58.366354 < 22 bytes data, client => server 09:40:58.366577 'PASS ftp@example.com\r\n' 09:40:58.367759 Received DATA (on stdin) 09:40:58.367910 > 30 bytes data, server => client 09:40:58.368526 '230 Welcome you silly person\r\n' 09:40:58.369292 < 5 bytes data, client => server 09:40:58.369525 'PWD\r\n' 09:40:58.370747 Received DATA (on stdin) 09:40:58.370897 > 30 bytes data, server => client 09:40:58.371423 '257 "/" is current directory\r\n' 09:40:58.372242 < 6 bytes data, client => server 09:40:58.372387 'EPSV\r\n' 09:40:58.387570 Received DATA (on stdin) 09:40:58.387758 > 38 bytes data, server => client 09:40:58.387892 '229 Entering Passive Mode (|||43611|)\n' 09:40:58.389248 < 8 bytes data, client => server 09:40:58.389410 'TYPE I\r\n' 09:40:58.391514 Received DATA (on stdin) 09:40:58.391711 > 33 bytes data, server => client 09:40:58.391823 '200 I modify TYPE as you wanted\r\n' 09:40:58.394143 < 21 bytes data, client => server 09:40:58.394363 'SIZE verifiedserver\r\n' 09:40:58.395371 Received DATA (on stdin) 09:40:58.395595 > 8 bytes data, server => client 09:40:58.395713 '213 17\r\n' 09:40:58.398687 < 21 bytes data, client => server 09:40:58.398877 'RETR verifiedserver\r\n' 09:40:58.400435 Received DATA (on stdin) 09:40:58.400702 > 29 bytes data, server => client 09:40:58.400816 '150 Binary junk (17 bytes).\r\n' 09:40:58.406895 Received DATA (on stdin) 09:40:58.407065 > 28 bytes data, server => client 09:40:58.407176 '226 File transfer complete\r\n' 09:40:58.442600 < 6 bytes data, client => server 09:40:58.442776 'QUIT\r\n' 09:40:58.445856 Received DATA (on stdin) 09:40:58.446078 > 18 bytes data, server => client 09:40:58.446247 '221 bye bye baby\r\n' 09:40:58.449125 ====> Client disconnect 09:40:58.450775 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:59.384097 Running IPv4 version 09:40:59.384628 Listening on port 43611 09:40:59.384976 Wrote pid 109097 to log/9/server/ftp_sockdata.pid 09:40:59.385117 Received PING (on stdin) 09:40:59.385931 Received PORT (on stdin) 09:40:59.389056 ====> Client connect 09:40:59.401029 Received DATA (on stdin) 09:40:59.401193 > 17 bytes data, server => client 09:40:59.401401 'WE ROOLZ: 77386\r\n' 09:40:59.403111 Received DISC (on stdin) 09:40:59.403252 ====> Client forcibly disconnected 09:40:59.404319 Received QUIT (on stdin) 09:40:59.404506 quits 09:40:59.404927 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 707 === End of file server.cmd === Start of file socks_server.log 09:40:59.490625 Running IPv4 version 09:40:59.491210 Listening on port 45189 09:40:59.491645 Wrote pid 109167 to log/9/server/socks_server.pid 09:40:59.491989 Wrote port 45189 to log/9/server/socks_server.port === End of file socks_server.log === Start of file valgrind707 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind707 startnew: ./server/servers socksd --port 0 --pidfile log/43/server/socks_server.pid --portfile log/43/server/socks_server.port --reqfile log/43/socksd-request.log --logfile log/43/socks_server.log --backend 127.0.0.1 --config log/43/server.cmd RUN: SOCKS server is now running PID 109117 * pid socks => 109117 109117 setenv all_proxy = socks4://127.0.0.1:46733 test 0708...[HTTP GET via SOCKS4 proxy] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind708 ../src/curl -q --output log/43/curl708.out --include --trace-ascii log/43/trace708 --trace-config all --trace-time http://127.0.0.1:41267/708 > log/43/stdout708 2> log/43/stderr708 708: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 708 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind708 ../src/curl -q --output log/43/curl708.out --include --trace-ascii log/43/trace708 --trace-config all --trace-time http://127.0.0.1:41267/708 > log/43/stdout708 2> log/43/stderr708 === End of file commands.log === Start of file http_server.log 09:40:59.382976 ====> Client connect 09:40:59.383262 accept_connection 3 returned 4 09:40:59.383430 accept_connection 3 returned 0 09:40:59.388305 Read 9CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind712 ../src/curl -q --output log/39/curl712.out --include --trace-ascii log/39/trace712 --trace-config all --trace-time ftp://127.0.0.1:35393/712 --proxy socks5://127.0.0.1:45999 > log/39/stdout712 2> log/39/stderr712 3 bytes 09:40:59.388539 Process 93 bytes request 09:40:59.388669 Got request: GET /verifiedserver HTTP/1.1 09:40:59.388761 Are-we-friendly question received 09:40:59.389007 Wrote request (93 bytes) input to log/43/server.input 09:40:59.389196 Identifying ourselves as friends 09:40:59.389911 Response sent (56 bytes) and written to log/43/server.response 09:40:59.390035 special request received, no persistency 09:40:59.390109 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd Testnum 708 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file socks_server.log 09:40:59.440001 Running IPv4 version 09:40:59.440681 Listening on port 46733 09:40:59.441167 Wrote pid 109117 to log/43/server/socks_server.pid 09:40:59.441624 Wrote port 46733 to log/43/server/socks_server.port === End of file socks_server.log === Start of file valgrind708 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind708 startnew: ./server/servers socksd --port 0 --pidfile log/39/server/socks_server.pid --portfile log/39/server/socks_server.port --reqfile log/39/socksd-request.log --logfile log/39/socks_server.log --backend 127.0.0.1 --config log/39/server.cmd RUN: SOCKS server is now running PID 109352 * pid socks => 109352 109352 test 0712...[FTP fetch with --proxy set to socks5://] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind712 ../src/curl -q --output log/39/curl712.out --include --trace-ascii log/39/trace712 --trace-config all --trace-time ftp://127.0.0.1:35393/712 --proxy socks5://127.0.0.1:45999 > log/39/stdout712 2> log/39/stderr712 712: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 712 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind712 ../src/curl -q --output log/39/curl712.out --include --trace-ascii log/39/trace712 --trace-config all --trace-time ftp://127.0.0.1:35393/712 --proxy socks5://127.0.0.1:45999 > log/39/stdout712 2> log/39/stderr712 === End of file commands.log === Start of file ftp_server.log 09:40:59.398207 ====> Client connect 09:40:59.399732 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:59.402016 < "USER anonymous" 09:40:59.402438 > "331 We are happy you popped in![CR][LF]" 09:40:59.404672 < "PASS ftp@example.com" 09:40:59.405461 > "230 Welcome you silly person[CR][LF]" 09:40:59.407329 < "PWD" 09:40:59.408498 > "257 "/" is current directory[CR][LF]" 09:40:59.409596 < "EPSV" 09:40:59.410032 ====> Passive DATA channel requested by client 09:40:59.410290 DATA sockfilt for passive data channel starting... 09:40:59.428010 DATA sockfilt for passive data channel started (pid 109317) 09:40:59.429092 DATA sockfilt for passive data channel listens on port 44673 09:40:59.429605 > "229 Entering Passive Mode (|||44673|)[LF]" 09:40:59.430156 Client has been notified that DATA conn will be accepted on port 44673 09:40:59.431641 Client connects to port 44673 09:40:59.431990 ====> Client established passive DATA connection on port 44673 09:40:59.432868 < "TYPE I" 09:40:59.433294 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:59.435372 < "SIZE verifiedserver" 09:40:59.436091 > "213 17[CR][LF]" 09:40:59.438450 < "RETR verifiedserver" 09:40:59.439316 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:59.440130 =====> Closing passive DATA connection... 09:40:59.440358 Server disconnects passive DATA connection 09:40:59.442533 Server disconnected passive DATA connection 09:40:59.442895 DATA sockfilt for passive data channel quits (pid 109317) 09:40:59.444933 DATA sockfilt for passive data channel quit (pid 109317) 09:40:59.445191 =====> Closed passive DATA connection 09:40:59.445513 > "226 File transfer complete[CR][LF]" 09:40:59.485149 < "QUIT" 09:40:59.486331 > "221 bye bye baby[CR][LF]" 09:40:59.490286 MAIN sockfilt said DISC 09:40:59.491498 ====> Client disconnected 09:40:59.492153 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:59.651098 ====> Client connect 09:40:59.653433 Received DATA (on stdin) 09:40:59.653661 > 160 bytes data, server => client 09:40:59.653761 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:59.653848 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:59.653927 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:59.654763 < 16 bytes data, client => server 09:40:59.654909 'USER anonymous\r\n' 09:40:59.656530 Received DATA (on stdin) 09:40:59.656677 > 33 bytes data, server => client 09:40:59.656768 '331 We are happy you popped in!\r\n' 09:40:59.657516 < 22 bytes data, client => server 09:40:59.657663 'PASS ftp@example.com\r\n' 09:40:59.658836 Received DATA (on stdin) 09:40:59.658970 > 30 bytes data, server => client 09:40:59.659528 '230 Welcome you silly person\r\n' 09:40:59.660233 < 5 bytes data, client => server 09:40:59.660375 'PWD\r\n' 09:40:59.661373 Received DATA (on stdin) 09:40:59.661580 > 30 bytes data, server => client 09:40:59.661782 '257 "/" is current directory\r\n' 09:40:59.662531 < 6 bytes data, client => server 09:40:59.662669 'EPSV\r\n' 09:40:59.683277 Received DATA (on stdin) 09:40:59.683685 > 38 bytes data, server => client 09:40:59.683952 '229 Entering Passive Mode (|||44673|)\n' 09:40:59.685322 < 8 bytes data, client => server 09:40:59.685511 'TYPE I\r\n' 09:40:59.687301 Received DATA (on stdin) 09:40:59.687440 > 33 bytes data, server => client 09:40:59.687626 '200 I modify TYPE as you wanted\r\n' 09:40:59.688327 < 21 bytes data, client => server 09:40:59.688533 'SIZE verifiedserver\r\n' 09:40:59.690151 Received DATA (on stdin) 09:40:59.690310 > 8 bytes data, server => client 09:40:59.690415 '213 17\r\n' 09:40:59.691233 log/31/stdout711 2> log/31/stderr711 21 bytes data, client => server 09:40:59.691404 'RETR verifiedserver\r\n' 09:40:59.692649 Received DATA (on stdin) 09:40:59.692796 > 29 bytes data, server => client 09:40:59.694289 '150 Binary junk (17 bytes).\r\n' 09:40:59.699582 Received DATA (on stdin) 09:40:59.699722 > 28 bytes data, server => client 09:40:59.699801 '226 File transfer complete\r\n' 09:40:59.737515 < 6 bytes data, client => server 09:40:59.737754 'QUIT\r\n' 09:40:59.739237 Received DATA (on stdin) 09:40:59.739382 > 18 bytes data, server => client 09:40:59.739639 '221 bye bye baby\r\n' 09:40:59.743600 ====> Client disconnect 09:40:59.744394 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:59.677725 Running IPv4 version 09:40:59.678353 Listening on port 44673 09:40:59.678846 Wrote pid 109317 to log/39/server/ftp_sockdata.pid 09:40:59.679063 Received PING (on stdin) 09:40:59.682140 Received PORT (on stdin) 09:40:59.685091 ====> Client connect 09:40:59.694695 Received DATA (on stdin) 09:40:59.694838 > 17 bytes data, server => client 09:40:59.694911 'WE ROOLZ: 77518\r\n' 09:40:59.695152 Received DISC (on stdin) 09:40:59.695298 ====> Client forcibly disconnected 09:40:59.696903 Received QUIT (on stdin) 09:40:59.697022 quits 09:40:59.697555 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 712 === End of file server.cmd === Start of file socks_server.log 09:40:59.782123 Running IPv4 version 09:40:59.783017 Listening on port 45999 09:40:59.783402 Wrote pid 109352 to log/39/server/socks_server.pid 09:40:59.783835 Wrote port 45999 to log/39/server/socks_server.port === End of file socks_server.log === Start of file valgrind712 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind712 startnew: ./server/servers socksd --port 0 --pidfile log/31/server/socks_server.pid --portfile log/31/server/socks_server.port --reqfile log/31/socksd-request.log --logfile log/31/socks_server.log --backend 127.0.0.1 --config log/31/server.cmd RUN: SOCKS server is now running PID 109342 * pid socks => 109342 109342 setenv all_proxy = socks5://127.0.0.1:43465 test 0711...[FTP fetch with all_proxy set to socks5] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind711 ../src/curl -q --output log/31/curl711.out --include --trace-ascii log/31/trace711 --trace-config all --trace-time ftp://127.0.0.1:40969/711 > log/31/stdout711 2> log/31/stderr711 711: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 711 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind711 ../src/curl -q --output log/31/curl711.out --include --trace-ascii log/31/trace711 --trace-config all --trace-time ftp://127.0.0.1:40969/711 > log/31/stdout711 2> log/31/stderr711 === End of file commands.log === Start of file ftp_server.log 09:40:59.343109 ====> Client connect 09:40:59.345729 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:59.348022 < "USER anonymous" 09:40:59.352133 > "331 We are happy you popped in![CR][LF]" 09:40:59.353127 < "PASS ftp@example.com" 09:40:59.353549 > "230 Welcome you silly person[CR][LF]" 09:40:59.355874 < "PWD" 09:40:59.357390 > "257 "/" is current directory[CR][LF]" 09:40:59.358714 < "EPSV" 09:40:59.359137 ====> Passive DATA channel requested by client 09:40:59.359338 DATA sockfilt for passive data channel starting... 09:40:59.372278 DATA sockfilt for passive data channel started (pid 109280) 09:40:59.373328 DATA sockfilt for passive data channel listens on port 45203 09:40:59.374728 > "229 Entering Passive Mode (|||45203|)[LF]" 09:40:59.375089 Client has been notified that DATA conn will be accepted on port 45203 09:40:59.375843 Client connects to port 45203 09:40:59.376177 ====> Client established passive DATA connection on port 45203 09:40:59.377885 < "TYPE I" 09:40:59.379168 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:59.380863 < "SIZE verifiedserver" 09:40:59.382120 > "213 18[CR][LF]" 09:40:59.383925 < "RETR verifiedserver" 09:40:59.385271 > "150 Binary junk (18 bytes).[CR][LF]" 09:40:59.386135 =====> Closing passive DATA connection... 09:40:59.386353 Server disconnects passive DATA connection 09:40:59.388625 Server disconnected passive DATA connection 09:40:59.388980 DATA sockfilt for passive data channel quits (pid 109280) 09:40:59.390933 DATA sockfilt for passive data channel quit (pid 109280) 09:40:59.391238 =====> Closed passive DATA connection 09:40:59.391588 > "226 File transfer complete[CR][LF]" 09:40:59.427877 < "QUIT" 09:40:59.429287 > "221 bye bye baby[CR][LF]" 09:40:59.433149 MAIN sockfilt said DISC 09:40:59.434023 ====> Client disconnected 09:40:59.434552 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:59.596140 ====> Client connect 09:40:59.598275 Received DATA (on stdin) 09:40:59.598437 > 160 bytes data, server => client 09:40:59.598720 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:59.598878 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:59.598969 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:59.600204 < 16 bytes data, client => server 09:40:59.600396 'USER anonymous\r\n' 09:40:59.602169 Received DATA (on stdin) 09:40:59.602318 > 33 bytes data, server => client 09:40:59.602541 '331 We are happy you popped in!\r\n' 09:40:59.605084 < 22 bytes data, client => server 09:40:59.605252 'PASS ftp@example.com\r\n' 09:40:59.607666 Received DATA (on stdin) 09:40:59.607814 > 30 bytes data, server => client 09:40:59.607906 '230 Welcome you silly person\r\n' 09:40:59.608599 < 5 bytes data, client => server 09:40:59.608742 'PWD\r\n' 09:40:59.610031 Received DATA (on stdin) 09:40:59.610180 > 30 bytes data, server => client 09:40:59.610347 '257 "/" is current directory\r\n' 09:40:59.615548 < 6 bytes data, client => server 09:40:59.615720 'EPSV\r\n' 09:40:59.627524 Received DATA (on stdin) 09:40:59.627689 > 38 bytes data, server => client 09:40:59.627880 '229 Entering Passive Mode (|||45203|)\n' 09:40:59.630616 < 8 bytes data, client => server 09:40:59.630767 'TYPE I\r\n' 09:40:59.631998 Received DATA (on stdin) 09:40:59.632145 > 33 bytes data, server => client 09:40:59.632330 '200 I modify TYPE as you wanted\r\n'CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind713 ../src/curl -q --output log/63/curl713.out --include --trace-ascii log/63/trace713 --trace-config all --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:33267 --proxy socks5://127.0.0.1:33969 > log/63/stdout713 2> log/63/stderr713 09:40:59.633693 < 21 bytes data, client => server 09:40:59.633854 'SIZE verifiedserver\r\n' 09:40:59.635008 Received DATA (on stdin) 09:40:59.635157 > 8 bytes data, server => client 09:40:59.635331 '213 18\r\n' 09:40:59.636963 < 21 bytes data, client => server 09:40:59.637131 'RETR verifiedserver\r\n' 09:40:59.638049 Received DATA (on stdin) 09:40:59.638191 > 29 bytes data, server => client 09:40:59.638377 '150 Binary junk (18 bytes).\r\n' 09:40:59.645718 Received DATA (on stdin) 09:40:59.645875 > 28 bytes data, server => client 09:40:59.646020 '226 File transfer complete\r\n' 09:40:59.680576 < 6 bytes data, client => server 09:40:59.680777 'QUIT\r\n' 09:40:59.682013 Received DATA (on stdin) 09:40:59.682176 > 18 bytes data, server => client 09:40:59.682398 '221 bye bye baby\r\n' 09:40:59.686579 ====> Client disconnect 09:40:59.687178 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:59.624354 Running IPv4 version 09:40:59.624992 Listening on port 45203 09:40:59.625417 Wrote pid 109280 to log/31/server/ftp_sockdata.pid 09:40:59.625694 Received PING (on stdin) 09:40:59.626496 Received PORT (on stdin) 09:40:59.629180 ====> Client connect 09:40:59.640620 Received DATA (on stdin) 09:40:59.640778 > 18 bytes data, server => client 09:40:59.640871 'WE ROOLZ: 100730\r\n' 09:40:59.641210 Received DISC (on stdin) 09:40:59.641378 ====> Client forcibly disconnected 09:40:59.642986 Received QUIT (on stdin) 09:40:59.643117 quits 09:40:59.643617 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 711 === End of file server.cmd === Start of file socks_server.log 09:40:59.733881 Running IPv4 version 09:40:59.734587 Listening on port 43465 09:40:59.735066 Wrote pid 109342 to log/31/server/socks_server.pid 09:40:59.735563 Wrote port 43465 to log/31/server/socks_server.port === End of file socks_server.log === Start of file valgrind711 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind711 startnew: ./server/servers socksd --port 0 --pidfile log/63/server/socks_server.pid --portfile log/63/server/socks_server.port --reqfile log/63/socksd-request.log --logfile log/63/socks_server.log --backend 127.0.0.1 --config log/63/server.cmd RUN: SOCKS server is now running PID 109369 * pid socks => 109369 109369 test 0713...[FTP fetch with --proxy set to socks5:// and with --connect-to] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind713 ../src/curl -q --output log/63/curl713.out --include --trace-ascii log/63/trace713 --trace-config all --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:33267 --proxy socks5://127.0.0.1:33969 > log/63/stdout713 2> log/63/stderr713 713: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 713 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind713 ../src/curl -q --output log/63/curl713.out --include --trace-ascii log/63/trace713 --trace-config all --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:33267 --proxy socks5://127.0.0.1:33969 > log/63/stdout713 2> log/63/stderr713 === End of file commands.log === Start of file ftp_server.log 09:40:59.501312 ====> Client connect 09:40:59.504349 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:59.506131 < "USER anonymous" 09:40:59.507470 > "331 We are happy you popped in![CR][LF]" 09:40:59.508831 < "PASS ftp@example.com" 09:40:59.510051 > "230 Welcome you silly person[CR][LF]" 09:40:59.511230 < "PWD" 09:40:59.512643 > "257 "/" is current directory[CR][LF]" 09:40:59.514074 < "EPSV" 09:40:59.514331 ====> Passive DATA channel requested by client 09:40:59.514512 DATA sockfilt for passive data channel starting... 09:40:59.525512 DATA sockfilt for passive data channel started (pid 109356) 09:40:59.526659 DATA sockfilt for passive data channel listens on port 34461 09:40:59.527199 > "229 Entering Passive Mode (|||34461|)[LF]" 09:40:59.527475 Client has been notified that DATA conn will be accepted on port 34461 09:40:59.530210 Client connects to port 34461 09:40:59.530524 ====> Client established passive DATA connection on port 34461 09:40:59.531634 < "TYPE I" 09:40:59.532528 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:59.534452 < "SIZE verifiedserver" 09:40:59.535261 > "213 17[CR][LF]" 09:40:59.537173 < "RETR verifiedserver" 09:40:59.538465 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:59.539331 =====> Closing passive DATA connection... 09:40:59.539561 Server disconnects passive DATA connection 09:40:59.540238 Server disconnected passive DATA connection 09:40:59.540516 DATA sockfilt for passive data channel quits (pid 109356) 09:40:59.542346 DATA sockfilt for passive data channel quit (pid 109356) 09:40:59.542590 =====> Closed passive DATA connection 09:40:59.543336 > "226 File transfer complete[CR][LF]" 09:40:59.581642 < "QUIT" 09:40:59.583689 > "221 bye bye baby[CR][LF]" 09:40:59.587554 MAIN sockfilt said DISC 09:40:59.589211 ====> Client disconnected 09:40:59.590079 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:59.754332 ====> Client connect 09:40:59.756612 Received DATA (on stdin) 09:40:59.756829 > 160 bytes data, server => client 09:40:59.757095 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:59.757259 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:59.757378 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:59.758224 < 16 bytes data, client => server 09:40:59.758406 'USER anonymous\r\n' 09:40:59.760219 Received DATA (on stdin) 09:40:59.760382 > 33 bytes data, server => client 09:40:59.760705 '331 We are happy you popped in!\r\n' 09:40:59.761410 < 22 bytes data, client => server 09:40:59.761671 'PASS ftp@example.com\r\n' 09:40:59.762942 Received DATA (on stdin) 09:40:59.763091 > 30 bytes data, server => client 09:40:59.763271 '230 Welcome you silly person\r\n' 09:40:59.764123 < 5 bytes data, client => server 09:40:59.764260 'PWD\r\n' 09:40:59.765366 Received DATA (on stdin) 09:40:59.765610 > 30 bytes data, server => client 09:40:59.765826 '257 "/" is current directory\r\n' 09:40:59.766619 < 6 bytes data, client => server 09:40:59.766796 'EPSV\r\n' 09:40:59.781565 Received DATA (on sCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind716 ../src/curl -q --output log/30/curl716.out --include --trace-ascii log/30/trace716 --trace-config all --trace-time http://hohoho.example.com:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:46473 > log/30/stdout716 2> log/30/stderr716 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind719 ../src/curl -q --output log/17/curl719.out --include --trace-ascii log/17/trace719 --trace-config all --trace-time http://[2200::33]:44383/719 --proxy socks5h://127.0.0.1:43067 > log/17/stdout719 2> log/17/stderr719 tdin) 09:40:59.781730 > 38 bytes data, server => client 09:40:59.781828 '229 Entering Passive Mode (|||34461|)\n' 09:40:59.783542 < 8 bytes data, client => server 09:40:59.783696 'TYPE I\r\n' 09:40:59.785835 Received DATA (on stdin) 09:40:59.785993 > 33 bytes data, server => client 09:40:59.786567 '200 I modify TYPE as you wanted\r\n' 09:40:59.787311 < 21 bytes data, client => server 09:40:59.787549 'SIZE verifiedserver\r\n' 09:40:59.788624 Received DATA (on stdin) 09:40:59.788776 > 8 bytes data, server => client 09:40:59.789260 '213 17\r\n' 09:40:59.790028 < 21 bytes data, client => server 09:40:59.790181 'RETR verifiedserver\r\n' 09:40:59.791284 Received DATA (on stdin) 09:40:59.791432 > 29 bytes data, server => client 09:40:59.791705 '150 Binary junk (17 bytes).\r\n' 09:40:59.796684 Received DATA (on stdin) 09:40:59.796838 > 28 bytes data, server => client 09:40:59.797335 '226 File transfer complete\r\n' 09:40:59.834424 < 6 bytes data, client => server 09:40:59.834674 'QUIT\r\n' 09:40:59.836042 Received DATA (on stdin) 09:40:59.836291 > 18 bytes data, server => client 09:40:59.836701 '221 bye bye baby\r\n' 09:40:59.840780 ====> Client disconnect 09:40:59.841883 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:59.777610 Running IPv4 version 09:40:59.778247 Listening on port 34461 09:40:59.778709 Wrote pid 109356 to log/63/server/ftp_sockdata.pid 09:40:59.778874 Received PING (on stdin) 09:40:59.779786 Received PORT (on stdin) 09:40:59.783211 ====> Client connect 09:40:59.792709 Received DATA (on stdin) 09:40:59.792863 > 17 bytes data, server => client 09:40:59.792953 'WE ROOLZ: 77431\r\n' 09:40:59.793650 Received DISC (on stdin) 09:40:59.793847 ====> Client forcibly disconnected 09:40:59.794573 Received QUIT (on stdin) 09:40:59.794728 quits 09:40:59.795130 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 713 === End of file server.cmd === Start of file socks_server.log 09:40:59.879178 Running IPv4 version 09:40:59.879851 Listening on port 33969 09:40:59.880239 Wrote pid 109369 to log/63/server/socks_server.pid 09:40:59.880686 Wrote port 33969 to log/63/server/socks_server.port === End of file socks_server.log === Start of file valgrind713 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind713 startnew: ./server/servers socksd --port 0 --pidfile log/30/server/socks_server.pid --portfile log/30/server/socks_server.port --reqfile log/30/socksd-request.log --logfile log/30/socks_server.log --backend 127.0.0.1 --config log/30/server.cmd RUN: SOCKS server is now running PID 109387 * pid socks => 109387 109387 test 0716...[SOCKS5 proxy with too long user name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind716 ../src/curl -q --output log/30/curl716.out --include --trace-ascii log/30/trace716 --trace-config all --trace-time http://hohoho.example.com:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:46473 > log/30/stdout716 2> log/30/stderr716 curl returned 1, when expecting 97 716: exit FAILED == Contents of files in the log/30/ dir after test 716 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind716 ../src/curl -q --output log/30/curl716.out --include --trace-ascii log/30/trace716 --trace-config all --trace-time http://hohoho.example.com:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:46473 > log/30/stdout716 2> log/30/stderr716 === End of file commands.log === Start of file server.cmd method 2 Testnum 716 === End of file server.cmd === Start of file socks_server.log 09:40:59.941698 Running IPv4 version 09:40:59.942302 Listening on port 46473 09:40:59.942870 Wrote pid 109387 to log/30/server/socks_server.pid 09:40:59.943237 Wrote port 46473 to log/30/server/socks_server.port === End of file socks_server.log === Start of file valgrind716 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind716 test 0719...[HTTP GET with IPv6 numerical via SOCKS5h] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind719 ../src/curl -q --output log/17/curl719.out --include --trace-ascii log/17/trace719 --trace-config all --trace-time http://[2200::33]:44383/719 --proxy socks5h://127.0.0.1:43067 > log/17/stdout719 2> log/17/stderr719 719: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 719 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/buCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind720 ../src/curl -q --output log/18/curl720.out --include --trace-ascii log/18/trace720 --trace-config all --trace-time http://12.34.56.78:41285/720 --proxy socks5h://127.0.0.1:35645 > log/18/stdout720 2> log/18/stderr720 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind721 ../src/curl -q --output log/4/curl721.out --include --trace-ascii log/4/trace721 --trace-config all --trace-time http://this.is.a.host.name:43013/721 --proxy socks5h://127.0.0.1:32783 > log/4/stdout721 2> log/4/stderr721 ild/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind719 ../src/curl -q --output log/17/curl719.out --include --trace-ascii log/17/trace719 --trace-config all --trace-time http://[2200::33]:44383/719 --proxy socks5h://127.0.0.1:43067 > log/17/stdout719 2> log/17/stderr719 === End of file commands.log === Start of file http_server.log 09:41:00.895837 ====> Client connect 09:41:00.896171 accept_connection 3 returned 4 09:41:00.896357 accept_connection 3 returned 0 09:41:00.897288 Read 93 bytes 09:41:00.897508 Process 93 bytes request 09:41:00.897649 Got request: GET /verifiedserver HTTP/1.1 09:41:00.897758 Are-we-friendly question received 09:41:00.898027 Wrote request (93 bytes) input to log/17/server.input 09:41:00.898240 Identifying ourselves as friends 09:41:00.899084 Response sent (56 bytes) and written to log/17/server.response 09:41:00.899206 special request received, no persistency 09:41:00.899284 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44383... * Connected to 127.0.0.1 (127.0.0.1) port 44383 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44383 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73792 === End of file http_verify.out === Start of file server.cmd Testnum 719 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73792 === End of file server.response === Start of file valgrind719 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind719 test 0720...[HTTP GET with IPv4 numerical via SOCKS5h] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind720 ../src/curl -q --output log/18/curl720.out --include --trace-ascii log/18/trace720 --trace-config all --trace-time http://12.34.56.78:41285/720 --proxy socks5h://127.0.0.1:35645 > log/18/stdout720 2> log/18/stderr720 720: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 720 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind720 ../src/curl -q --output log/18/curl720.out --include --trace-ascii log/18/trace720 --trace-config all --trace-time http://12.34.56.78:41285/720 --proxy socks5h://127.0.0.1:35645 > log/18/stdout720 2> log/18/stderr720 === End of file commands.log === Start of file http_server.log 09:41:00.963604 ====> Client connect 09:41:00.963917 accept_connection 3 returned 4 09:41:00.964058 accept_connection 3 returned 0 09:41:00.964175 Read 93 bytes 09:41:00.964266 Process 93 bytes request 09:41:00.964357 Got request: GET /verifiedserver HTTP/1.1 09:41:00.964523 Are-we-friendly question received 09:41:00.964795 Wrote request (93 bytes) input to log/18/server.input 09:41:00.964976 Identifying ourselves as friends 09:41:00.965857 Response sent (56 bytes) and written to log/18/server.response 09:41:00.965974 special request received, no persistency 09:41:00.966045 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41285... * Connected to 127.0.0.1 (127.0.0.1) port 41285 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41285 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73790 === End of file http_verify.out === Start of file server.cmd Testnum 720 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73790 === End of file server.response === Start of file valgrind720 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind720 test 0721...[HTTP GET with host name using SOCKS5h] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind721 ../src/curl -q --output log/4/curl721.out --include --trace-ascii log/4/trace721 --trace-config all --trace-time http://this.is.a.host.name:43013/721 --proxy socks5h://127.0.0.1:32783 > log/4/stdout721 2> log/4/stderr721 721: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 721 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind721 ../src/curl -q --output log/4/curl721.out --include --trace-ascii log/4/trace721 --trace-config all --trace-time http://this.is.a.host.name:43013/721 --proxy socks5h://127.0.0.1:32783 > log/4/stdout721 2> log/4/stderr721 === End of file commands.log === StarCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind723 ../src/curl -q --output log/54/curl723.out --include --trace-ascii log/54/trace723 --trace-config all --trace-time --ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/54/stdout723 2> log/54/stderr723 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind714 ../src/curl -q --output log/35/curl714.out --include --trace-ascii log/35/trace714 --trace-config all --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:39447 --proxytunnel --proxy http://127.0.0.1:41019 > log/35/stdout714 2> log/35/stderr714 t of file http_server.log 09:41:01.036863 ====> Client connect 09:41:01.037177 accept_connection 3 returned 4 09:41:01.037335 accept_connection 3 returned 0 09:41:01.038235 Read 93 bytes 09:41:01.038375 Process 93 bytes request 09:41:01.038521 Got request: GET /verifiedserver HTTP/1.1 09:41:01.038627 Are-we-friendly question received 09:41:01.038861 Wrote request (93 bytes) input to log/4/server.input 09:41:01.039049 Identifying ourselves as friends 09:41:01.043702 Response sent (56 bytes) and written to log/4/server.response 09:41:01.043833 special request received, no persistency 09:41:01.043909 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43013... * Connected to 127.0.0.1 (127.0.0.1) port 43013 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43013 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73808 === End of file http_verify.out === Start of file server.cmd Testnum 721 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73808 === End of file server.response === Start of file valgrind721 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind721 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/35/server/http2_server.pid" --logfile "log/35/http2_server.log" --logdir "log/35" --portfile log/35/server/http2_server.port --config log/35/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 109407 port 41019 * pid http-proxy => 109407 109407 test 0714...[FTP fetch with --proxy set to http:// and with --connect-to] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind714 ../src/curl -q --output log/35/curl714.out --include --trace-ascii log/35/trace714 --trace-config all --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:39447 --proxytunnel --proxy http://127.0.0.1:41019 > log/35/stdout714 2> log/35/stderr714 714: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 714 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind714 ../src/curl -q --output log/35/curl714.out --include --trace-ascii log/35/trace714 --trace-config all --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:39447 --proxytunnel --proxy http://127.0.0.1:41019 > log/35/stdout714 2> log/35/stderr714 === End of file commands.log === Start of file ftp_server.log 09:40:59.711224 ====> Client connect 09:40:59.712936 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:59.716306 < "USER anonymous" 09:40:59.717831 > "331 We are happy you popped in![CR][LF]" 09:40:59.719051 < "PASS ftp@example.com" 09:40:59.719736 > "230 Welcome you silly person[CR][LF]" 09:40:59.721526 < "PWD" 09:40:59.721985 > "257 "/" is current directory[CR][LF]" 09:40:59.723997 < "EPSV" 09:40:59.724293 ====> Passive DATA channel requested by client 09:40:59.724488 DATA sockfilt for passive data channel starting... 09:40:59.736430 DATA sockfilt for passive data channel started (pid 109397) 09:40:59.738092 DATA sockfilt for passive data channel listens on port 40487 09:40:59.738541 > "229 Entering Passive Mode (|||40487|)[LF]" 09:40:59.738864 Client has been notified that DATA conn will be accepted on port 40487 09:40:59.741000 Client connects to port 40487 09:40:59.741300 ====> Client established passive DATA connection on port 40487 09:40:59.742207 < "TYPE I" 09:40:59.742626 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:59.744534 < "SIZE verifiedserver" 09:40:59.745115 > "213 18[CR][LF]" 09:40:59.747070 < "RETR verifiedserver" 09:40:59.748433 > "150 Binary junk (18 bytes).[CR][LF]" 09:40:59.749273 =====> Closing passive DATA connection... 09:40:59.750131 Server disconnects passive DATA connection 09:40:59.750440 Fancy that; client wants to DISC, too 09:40:59.751063 Server disconnected passive DATA connection 09:40:59.751336 DATA sockfilt for passive data channel quits (pid 109397) 09:40:59.753125 DATA sockfilt for passive data channel quit (pid 109397) 09:40:59.753382 =====> Closed passive DATA connection 09:40:59.754140 > "226 File transfer complete[CR][LF]" 09:40:59.791875 < "QUIT" 09:40:59.793215 > "221 bye bye baby[CR][LF]" 09:40:59.794206 MAIN sockfilt said DISC 09:40:59.794511 ====> Client disconnected 09:40:59.795132 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:59.964175 ====> Client connect 09:40:59.967263 Received DATA (on stdin) 09:40:59.967429 > 160 bytes data, server => client 09:40:59.967641 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:59.967745 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:59.967866 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:59.968786 < 16 bytes data, client => server 09:40:59.968955 'USER anonymous\r\n' 09:40:59.970371 Received DATA (on stdin) 09:40:59.970596 > 33 bytes data, server => client 09:40:59.970776 '331 We are happy you popped in!\r\n' 09:40:59.971967 < 22 bytes data, client => server 09:40:59.972098 'PASS ftp@example.com\r\n' 09:40:59.973114 Received DATA (on stdin) 09:40:59.973258 > 30 bytes data, server => client 09:40:59.973800 '230 Welcome you silly person\r\n' 09:40:59.974388 < 5 bytes data, client => server 09:40:59.974586 'PWD\r\n' 09:40:59.975988 Received DATA (on stdin) 09:40:59.976115 > 30 bytes data, server => client 09:40:59.976199 '257 "/" is current directory\r\n' 09:40:59.976827 < 6 bytes data, client => server 09:40:59.976959 'EPSV\r\n' 09:40:59.992947 Received DATA (on stdin) 09:40:59.993112 > 38 bytes data, server => client 09:40:59.993200 '229 Entering Passive Mode (|||40487|)\n' 09:40:59.994633 < 8 bytes data, client => server 09:40:59.994794 'TYPE I\r\n' 09:40:59.996363 Received DATA (on stdin) 09:40:59.996600 > 33 bytes data, server => client 09:40:59.996701 '200 I modify TYPE as you wanted\r\n' 09:40:59.997342CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind722 ../src/curl -q --output log/36/curl722.out --include --trace-ascii log/36/trace722 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:44255 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/36/stdout722 2> log/36/stderr722 < 21 bytes data, client => server 09:40:59.997546 'SIZE verifiedserver\r\n' 09:40:59.999152 Received DATA (on stdin) 09:40:59.999274 > 8 bytes data, server => client 09:40:59.999355 '213 18\r\n' 09:40:59.999965 < 21 bytes data, client => server 09:41:00.000103 'RETR verifiedserver\r\n' 09:41:00.001162 Received DATA (on stdin) 09:41:00.001304 > 29 bytes data, server => client 09:41:00.001525 '150 Binary junk (18 bytes).\r\n' 09:41:00.007379 Received DATA (on stdin) 09:41:00.007603 > 28 bytes data, server => client 09:41:00.008151 '226 File transfer complete\r\n' 09:41:00.044557 < 6 bytes data, client => server 09:41:00.044744 'QUIT\r\n' 09:41:00.046016 Received DATA (on stdin) 09:41:00.046190 > 18 bytes data, server => client 09:41:00.046386 '221 bye bye baby\r\n' 09:41:00.047589 ====> Client disconnect 09:41:00.049190 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:59.988630 Running IPv4 version 09:40:59.989157 Listening on port 40487 09:40:59.989637 Wrote pid 109397 to log/35/server/ftp_sockdata.pid 09:40:59.989815 Received PING (on stdin) 09:40:59.990885 Received PORT (on stdin) 09:40:59.994349 ====> Client connect 09:41:00.002641 Received DATA (on stdin) 09:41:00.002799 > 18 bytes data, server => client 09:41:00.002875 'WE ROOLZ: 100686\r\n' 09:41:00.003629 ====> Client disconnect 09:41:00.004165 Received DISC (on stdin) 09:41:00.004341 Crikey! Client also wants to disconnect 09:41:00.004605 Received ACKD (on stdin) 09:41:00.005337 Received QUIT (on stdin) 09:41:00.005539 quits 09:41:00.005917 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file http2_server.log 09:41:00.273382 Run as proxy, CONNECT to host 127.0.0.1 09:41:00.274269 Running HTTP IPv4 version on port 41019 09:41:00.274749 Wrote pid 109407 to log/35/server/http2_server.pid 09:41:00.275070 Wrote port 41019 to log/35/server/http2_server.port === End of file http2_server.log === Start of file server.cmd Testnum 714 === End of file server.cmd === Start of file valgrind714 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind714 test 0723...[IPFS with malformed gateway URL (bad function argument error)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind723 ../src/curl -q --output log/54/curl723.out --include --trace-ascii log/54/trace723 --trace-config all --trace-time --ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/54/stdout723 2> log/54/stderr723 curl returned 1, when expecting 43 723: exit FAILED == Contents of files in the log/54/ dir after test 723 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind723 ../src/curl -q --output log/54/curl723.out --include --trace-ascii log/54/trace723 --trace-config all --trace-time --ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/54/stdout723 2> log/54/stderr723 === End of file commands.log === Start of file http_server.log 09:41:01.135700 ====> Client connect 09:41:01.136320 accept_connection 3 returned 4 09:41:01.136628 accept_connection 3 returned 0 09:41:01.136830 Read 93 bytes 09:41:01.136953 Process 93 bytes request 09:41:01.137070 Got request: GET /verifiedserver HTTP/1.1 09:41:01.137169 Are-we-friendly question received 09:41:01.137904 Wrote request (93 bytes) input to log/54/server.input 09:41:01.138170 Identifying ourselves as friends 09:41:01.141737 Response sent (56 bytes) and written to log/54/server.response 09:41:01.141887 special request received, no persistency 09:41:01.141973 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 723 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind723 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind723 test 0722...[IPFS] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind722 ../src/curl -q --output log/36/curl722.out --include --trace-ascii log/36/trace722 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:44255 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/36/stdout722 2> log/36/stderr722 722: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 722 === Start of file commands.log ../libtool --mode=execute /usr/bin/valCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind717 ../src/curl -q --output log/19/curl717.out --include --trace-ascii log/19/trace717 --trace-config all --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:42775 > log/19/stdout717 2> log/19/stderr717 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind726 ../src/curl -q --output log/6/curl726.out --include --trace-ascii log/6/trace726 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout726 2> log/6/stderr726 grind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind722 ../src/curl -q --output log/36/curl722.out --include --trace-ascii log/36/trace722 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:44255 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/36/stdout722 2> log/36/stderr722 === End of file commands.log === Start of file http_server.log 09:41:01.136958 ====> Client connect 09:41:01.137303 accept_connection 3 returned 4 09:41:01.137630 accept_connection 3 returned 0 09:41:01.137805 Read 93 bytes 09:41:01.137898 Process 93 bytes request 09:41:01.137993 Got request: GET /verifiedserver HTTP/1.1 09:41:01.138071 Are-we-friendly question received 09:41:01.138294 Wrote request (93 bytes) input to log/36/server.input 09:41:01.138561 Identifying ourselves as friends 09:41:01.139327 Response sent (56 bytes) and written to log/36/server.response 09:41:01.139506 special request received, no persistency 09:41:01.139602 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44255... * Connected to 127.0.0.1 (127.0.0.1) port 44255 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44255 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 77175 === End of file http_verify.out === Start of file server.cmd Testnum 722 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 77175 === End of file server.response === Start of file valgrind722 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind722 startnew: ./server/servers socksd --port 0 --pidfile log/19/server/socks_server.pid --portfile log/19/server/socks_server.port --reqfile log/19/socksd-request.log --logfile log/19/socks_server.log --backend 127.0.0.1 --config log/19/server.cmd RUN: SOCKS server is now running PID 109392 * pid socks => 109392 109392 test 0717...[SOCKS5 proxy auth] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind717 ../src/curl -q --output log/19/curl717.out --include --trace-ascii log/19/trace717 --trace-config all --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:42775 > log/19/stdout717 2> log/19/stderr717 717: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 717 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind717 ../src/curl -q --output log/19/curl717.out --include --trace-ascii log/19/trace717 --trace-config all --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:42775 > log/19/stdout717 2> log/19/stderr717 === End of file commands.log === Start of file http_server.log 09:41:01.197881 ====> Client connect 09:41:01.198215 accept_connection 3 returned 4 09:41:01.198393 accept_connection 3 returned 0 09:41:01.198693 Read 93 bytes 09:41:01.198814 Process 93 bytes request 09:41:01.198946 Got request: GET /verifiedserver HTTP/1.1 09:41:01.199069 Are-we-friendly question received 09:41:01.199378 Wrote request (93 bytes) input to log/19/server.input 09:41:01.199755 Identifying ourselves as friends 09:41:01.200727 Response sent (56 bytes) and written to log/19/server.response 09:41:01.200854 special request received, no persistency 09:41:01.200931 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35697... * Connected to 127.0.0.1 (127.0.0.1) port 35697 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35697 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73791 === End of file http_verify.out === Start of file server.cmd method 2 user uz3r password p4ssworm backendport 35697 Testnum 717 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73791 === End of file server.response === Start of file socks_server.log 09:40:59.978295 Running IPv4 version 09:40:59.979255 Listening on port 42775 09:40:59.979738 Wrote pid 109392 to log/19/server/socks_server.pid 09:40:59.980102 Wrote port 42775 to log/19/server/socks_server.port === End of file socks_server.log === Start of file valgrind717 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind717 setenv HOME = /build/curl/src/build-curl/tests test 0726...[IPFS with no gateway URL (no environment or home file either)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind726 ../src/curl -q --output log/6/curl726.out --include --trace-ascii log/6/trace726 --trace-config alCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind728 ../src/curl -q --output log/9/curl728.out --include --trace-ascii log/9/trace728 --trace-config all --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:45189 http://127.0.0.1:46607/728 > log/9/stdout728 2> log/9/stderr728 l --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout726 2> log/6/stderr726 curl returned 1, when expecting 37 726: exit FAILED == Contents of files in the log/6/ dir after test 726 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind726 ../src/curl -q --output log/6/curl726.out --include --trace-ascii log/6/trace726 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout726 2> log/6/stderr726 === End of file commands.log === Start of file http_server.log 09:41:01.405853 ====> Client connect 09:41:01.406193 accept_connection 3 returned 4 09:41:01.406366 accept_connection 3 returned 0 09:41:01.407296 Read 93 bytes 09:41:01.407542 Process 93 bytes request 09:41:01.407643 Got request: GET /verifiedserver HTTP/1.1 09:41:01.407751 Are-we-friendly question received 09:41:01.408016 Wrote request (93 bytes) input to log/6/server.input 09:41:01.408220 Identifying ourselves as friends 09:41:01.410161 Response sent (56 bytes) and written to log/6/server.response 09:41:01.410273 special request received, no persistency 09:41:01.410339 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37181... * Connected to 127.0.0.1 (127.0.0.1) port 37181 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37181 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73803 === End of file http_verify.out === Start of file server.cmd Testnum 726 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73803 === End of file server.response === Start of file valgrind726 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind726 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind727 ../src/curl -q --output log/43/curl727.out --include --trace-ascii log/43/trace727 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41267 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/43/stdout727 2> log/43/stderr727 test 0728...[SOCKS5h with HTTP redirect to hostname too long] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind728 ../src/curl -q --output log/9/curl728.out --include --trace-ascii log/9/trace728 --trace-config all --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:45189 http://127.0.0.1:46607/728 > log/9/stdout728 2> log/9/stderr728 728: stderr FAILED: --- log/9/check-expected 2025-07-18 09:41:01.844510484 +0000 +++ log/9/check-generated 2025-07-18 09:41:01.843597485 +0000 @@ -1 +0,0 @@ -curl: (97) SOCKS5: the destination hostname is too long to be resolved remotely by the proxy.[CR][LF] == Contents of files in the log/9/ dir after test 728 === Start of file check-expected curl: (97) SOCKS5: the destination hostname is too long to be resolved remotely by the proxy.[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind728 ../src/curl -q --output log/9/curl728.out --include --trace-ascii log/9/trace728 --trace-config all --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:45189 http://127.0.0.1:46607/728 > log/9/stdout728 2> log/9/stderr728 === End of file commands.log === Start of file http_server.log 09:41:01.441437 ====> Client connect 09:41:01.441906 accept_connection 3 returned 4 09:41:01.442090 accept_connection 3 returned 0 09:41:01.444831 Read 93 bytes 09:41:01.444988 Process 93 bytes request 09:41:01.445076 Got request: GET /verifiedserver HTTP/1.1 09:41:01.445161 Are-we-friendly question received 09:41:01.445414 Wrote request (93 bytes) input to log/9/server.input 09:41:01.445702 Identifying ourselves as friends 09:41:01.446234 Response sent (56 bytes) and written to log/9/server.response 09:41:01.446339 special request received, no persistency 09:41:01.446405 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46607... * Connected to 127.0.0.1 (127.0.0.1) port 46607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46607 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73797 === End of file http_verify.out === Start of file server.cmd Testnum 728 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73797 === End of file server.response === Start of file valgrind728 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind728 test 0727...[IPNS] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind727 ../src/curl -q --output log/43/curl727.out --include --trace-ascii log/43/trace727 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41267 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/43/stdout727 2> log/43/stderr727 727: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 727 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind727 ../src/curl -q --output log/43/curl727.out --include --trace-ascii log/43/trace727 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41267 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/43/stdout727 2> log/43/stderr727 === End of file commands.log === Start of file http_server.log 09:41:01.429820 ====> Client connect 09:41:01.430163 accept_connection 3 returned 4 09:41:01.430339 accept_connection 3 returned 0 09:41:01.430594 Read 93 bytes 09:41:01.430736 Process 93 bytes request 09:41:01.430834 Got request: GET /verifiedserver HTTP/1.1 09:41:01.430918 Are-we-friendly question received 09:41:01.431152 Wrote request (93 bytes) input to log/43/server.input 09:41:01.431356 Identifying ourselves as friends 09:41:01.432343 Response sent (56 bytes) and written to log/43/server.response 09:41:01.432568 special request received, no persistency 09:41:01.432673 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd Testnum 727 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file valgrind727 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind729 ../src/curl -q --output log/39/curl729.out --include --trace-ascii log/39/trace729 --trace-config all --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:45999 > log/39/stdout729 2> log/39/stderr729 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind732 ../src/curl -q --output log/30/curl732.out --include --trace-ascii log/30/trace732 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43913 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/30/stdout732 2> log/30/stderr732 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind724 ../src/curl -q --output log/10/curl724.out --include --trace-ascii log/10/trace724 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/10/stdout724 2> log/10/stderr724 End of file valgrind727 test 0729...[SOCKS4 with very long proxy user name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind729 ../src/curl -q --output log/39/curl729.out --include --trace-ascii log/39/trace729 --trace-config all --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:45999 > log/39/stdout729 2> log/39/stderr729 curl returned 1, when expecting 97 729: exit FAILED == Contents of files in the log/39/ dir after test 729 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind729 ../src/curl -q --output log/39/curl729.out --include --trace-ascii log/39/trace729 --trace-config all --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:45999 > log/39/stdout729 2> log/39/stderr729 === End of file commands.log === Start of file http_server.log 09:41:01.666745 ====> Client connect 09:41:01.667049 accept_connection 3 returned 4 09:41:01.667214 accept_connection 3 returned 0 09:41:01.667348 Read 93 bytes 09:41:01.667537 Process 93 bytes request 09:41:01.667659 Got request: GET /verifiedserver HTTP/1.1 09:41:01.667743 Are-we-friendly question received 09:41:01.667963 Wrote request (93 bytes) input to log/39/server.input 09:41:01.668149 Identifying ourselves as friends 09:41:01.668942 Response sent (56 bytes) and written to log/39/server.response 09:41:01.669049 special request received, no persistency 09:41:01.669113 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 729 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind729 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind729 test 0732...[IPFS with path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind732 ../src/curl -q --output log/30/curl732.out --include --trace-ascii log/30/trace732 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43913 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/30/stdout732 2> log/30/stderr732 732: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 732 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind732 ../src/curl -q --output log/30/curl732.out --include --trace-ascii log/30/trace732 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43913 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/30/stdout732 2> log/30/stderr732 === End of file commands.log === Start of file http_server.log 09:41:01.825406 ====> Client connect 09:41:01.825885 accept_connection 3 returned 4 09:41:01.826076 accept_connection 3 returned 0 09:41:01.826765 Read 93 bytes 09:41:01.826920 Process 93 bytes request 09:41:01.827016 Got request: GET /verifiedserver HTTP/1.1 09:41:01.827112 Are-we-friendly question received 09:41:01.827371 Wrote request (93 bytes) input to log/30/server.input 09:41:01.827663 Identifying ourselves as friends 09:41:01.828234 Response sent (56 bytes) and written to log/30/server.response 09:41:01.828344 special request received, no persistency 09:41:01.828413 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43913... * Connected to 127.0.0.1 (127.0.0.1) port 43913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43913 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73779 === EnCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind734 ../src/curl -q --output log/18/curl734.out --include --trace-ascii log/18/trace734 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41285/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/18/stdout734 2> log/18/stderr734 d of file http_verify.out === Start of file server.cmd Testnum 732 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73779 === End of file server.response === Start of file valgrind732 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind732 setenv HOME = /build/curl/src/build-curl/tests/log/10 test 0724...[IPFS with gateway URL from gateway file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind724 ../src/curl -q --output log/10/curl724.out --include --trace-ascii log/10/trace724 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/10/stdout724 2> log/10/stderr724 724: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 724 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind724 ../src/curl -q --output log/10/curl724.out --include --trace-ascii log/10/trace724 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/10/stdout724 2> log/10/stderr724 === End of file commands.log === Start of file http_server.log 09:41:01.253801 ====> Client connect 09:41:01.254137 accept_connection 3 returned 4 09:41:01.254324 accept_connection 3 returned 0 09:41:01.256102 Read 93 bytes 09:41:01.256245 Process 93 bytes request 09:41:01.256337 Got request: GET /verifiedserver HTTP/1.1 09:41:01.256413 Are-we-friendly question received 09:41:01.256809 Wrote request (93 bytes) input to log/10/server.input 09:41:01.257007 Identifying ourselves as friends 09:41:01.257989 Response sent (56 bytes) and written to log/10/server.response 09:41:01.258149 special request received, no persistency 09:41:01.258240 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36913... * Connected to 127.0.0.1 (127.0.0.1) port 36913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36913 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73804 === End of file http_verify.out === Start of file server.cmd Testnum 724 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73804 === End of file server.response === Start of file valgrind724 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind724 test 0734...[IPFS with path, query args and gateway with path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind734 ../src/curl -q --output log/18/curl734.out --include --trace-ascii log/18/trace734 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41285/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/18/stdout734 2> log/18/stderr734 734: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 734 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind734 ../src/curl -q --output log/18/curl734.out --include --trace-ascii log/18/trace734 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41285/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/18/stdout734 2> log/18/stderr734 === End of file commands.log === Start of file http_server.log 09:41:01.870165 ====> Client connect 09:41:01.870650 accept_connection 3 returned 4 09:41:01.870899 accept_connection 3 returned 0 09:41:01.871102 Read 93 bytes 09:41:01.871252 Process 93 bytes request 09:41:01.871341 Got request: GET /verifiedserver HTTP/1.1 09:41:01.871419 Are-we-friendly question received 09:41:01.871850 Wrote request (93 bytes) input to log/18/server.input 09:41:01.872107 Identifying ourselves as friends 09:41:01.872981 Response sent (56 bytes) and written to log/18/server.response 09:41:01.873091 special request received, no persistency 09:41:01.873162 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41285... * Connected to 127.0.0.1 (127.0.0.1) port 41285 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41285 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73790 === End of file http_verify.out === Start of file server.cmd Testnum 734 === End of file server.cmd === Start of file server.respCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind735 ../src/curl -q --output log/4/curl735.out --include --trace-ascii log/4/trace735 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43013/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/4/stdout735 2> log/4/stderr735 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind725 ../src/curl -q --output log/58/curl725.out --include --trace-ascii log/58/trace725 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/58/stdout725 2> log/58/stderr725 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind733 ../src/curl -q --output log/17/curl733.out --include --trace-ascii log/17/trace733 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:44383 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/17/stdout733 2> log/17/stderr733 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind730 ../src/curl -q --output log/31/curl730.out --include --trace-ascii log/31/trace730 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:45557/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/31/stdout730 2> log/31/stderr730 onse HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73790 === End of file server.response === Start of file valgrind734 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind734 test 0735...[IPNS with path, query args and gateway with path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind735 ../src/curl -q --output log/4/curl735.out --include --trace-ascii log/4/trace735 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43013/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/4/stdout735 2> log/4/stderr735 735: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 735 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind735 ../src/curl -q --output log/4/curl735.out --include --trace-ascii log/4/trace735 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43013/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/4/stdout735 2> log/4/stderr735 === End of file commands.log === Start of file http_server.log 09:41:01.904162 ====> Client connect 09:41:01.904595 accept_connection 3 returned 4 09:41:01.904782 accept_connection 3 returned 0 09:41:01.904916 Read 93 bytes 09:41:01.905023 Process 93 bytes request 09:41:01.905116 Got request: GET /verifiedserver HTTP/1.1 09:41:01.905202 Are-we-friendly question received 09:41:01.905441 Wrote request (93 bytes) input to log/4/server.input 09:41:01.905734 Identifying ourselves as friends 09:41:01.906523 Response sent (56 bytes) and written to log/4/server.response 09:41:01.906648 special request received, no persistency 09:41:01.906714 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43013... * Connected to 127.0.0.1 (127.0.0.1) port 43013 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43013 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73808 === End of file http_verify.out === Start of file server.cmd Testnum 735 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73808 === End of file server.response === Start of file valgrind735 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind735 setenv HOME = /build/curl/src/build-curl/tests/log/58 test 0725...[IPFS with malformed gateway URL from gateway file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind725 ../src/curl -q --output log/58/curl725.out --include --trace-ascii log/58/trace725 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/58/stdout725 2> log/58/stderr725 curl returned 1, when expecting 3 725: exit FAILED == Contents of files in the log/58/ dir after test 725 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind725 ../src/curl -q --output log/58/curl725.out --include --trace-ascii log/58/trace725 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/58/stdout725 2> log/58/stderr725 === End of file commands.log === Start of file http_server.log 09:41:01.326107 ====> Client connect 09:41:01.326424 accept_connection 3 returned 4 09:41:01.326779 accept_connection 3 returned 0 09:41:01.326921 Read 93 bytes 09:41:01.327015 Process 93 bytes request 09:41:01.327107 Got request: GET /verifiedserver HTTP/1.1 09:41:01.327186 Are-we-friendly question received 09:41:01.327409 Wrote request (93 bytes) input to log/58/server.input 09:41:01.327712 Identifying ourselves as friends 09:41:01.328548 Response sent (56 bytes) and written to log/58/server.response 09:41:01.328669 special request received, no persistency 09:41:01.328736 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46727... * Connected to 127.0.0.1 (127.0.0.1) port 46727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73755 === End of file http_verify.out === Start of file server.cmd Testnum 725 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73755 === End of file server.response === Start of file valgrind725 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind737 ../src/curl -q --output log/35/curl737.out --include --trace-ascii log/35/trace737 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/35/stdout737 2> log/35/stderr737 valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind725 test 0733...[IPFS with path and query args] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind733 ../src/curl -q --output log/17/curl733.out --include --trace-ascii log/17/trace733 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:44383 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/17/stdout733 2> log/17/stderr733 733: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 733 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind733 ../src/curl -q --output log/17/curl733.out --include --trace-ascii log/17/trace733 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:44383 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/17/stdout733 2> log/17/stderr733 === End of file commands.log === Start of file http_server.log 09:41:01.876896 ====> Client connect 09:41:01.877221 accept_connection 3 returned 4 09:41:01.877402 accept_connection 3 returned 0 09:41:01.877672 Read 93 bytes 09:41:01.877786 Process 93 bytes request 09:41:01.877877 Got request: GET /verifiedserver HTTP/1.1 09:41:01.877959 Are-we-friendly question received 09:41:01.878197 Wrote request (93 bytes) input to log/17/server.input 09:41:01.878405 Identifying ourselves as friends 09:41:01.879410 Response sent (56 bytes) and written to log/17/server.response 09:41:01.879649 special request received, no persistency 09:41:01.879729 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44383... * Connected to 127.0.0.1 (127.0.0.1) port 44383 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44383 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73792 === End of file http_verify.out === Start of file server.cmd Testnum 733 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73792 === End of file server.response === Start of file valgrind733 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind733 test 0730...[IPFS arg gateway with path] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind730 ../src/curl -q --output log/31/curl730.out --include --trace-ascii log/31/trace730 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:45557/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/31/stdout730 2> log/31/stderr730 730: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 730 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind730 ../src/curl -q --output log/31/curl730.out --include --trace-ascii log/31/trace730 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:45557/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/31/stdout730 2> log/31/stderr730 === End of file commands.log === Start of file http_server.log 09:41:01.763956 ====> Client connect 09:41:01.764302 accept_connection 3 returned 4 09:41:01.764577 accept_connection 3 returned 0 09:41:01.764753 Read 93 bytes 09:41:01.764859 Process 93 bytes request 09:41:01.764958 Got request: GET /verifiedserver HTTP/1.1 09:41:01.765052 Are-we-friendly question received 09:41:01.765377 Wrote request (93 bytes) input to log/31/server.input 09:41:01.765942 Identifying ourselves as friends 09:41:01.766870 Response sent (56 bytes) and written to log/31/server.response 09:41:01.766986 special request received, no persistency 09:41:01.767058 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45557... * Connected to 127.0.0.1 (127.0.0.1) port 45557 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45557 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73776 === End of file http_verify.out === Start of file server.cmd Testnum 730 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73776 === End of file server.response === Start of file valgrind730 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object wCMD (0): /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/test745.pl /build/curl/src/curl/tests/.. > log/10/stdout745 2> log/10/stderr745 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind736 ../src/curl -q --output log/54/curl736.out --include --trace-ascii log/54/trace736 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/54/stdout736 2> log/54/stderr736 ith soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind730 setenv IPFS_PATH = log/35/.ipfs/ test 0737...[IPFS with IPFS_PATH set, with trailing slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind737 ../src/curl -q --output log/35/curl737.out --include --trace-ascii log/35/trace737 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/35/stdout737 2> log/35/stderr737 737: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 737 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind737 ../src/curl -q --output log/35/curl737.out --include --trace-ascii log/35/trace737 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/35/stdout737 2> log/35/stderr737 === End of file commands.log === Start of file http_server.log 09:41:01.986060 ====> Client connect 09:41:01.986838 accept_connection 3 returned 4 09:41:01.987240 accept_connection 3 returned 0 09:41:01.987621 Read 93 bytes 09:41:01.987784 Process 93 bytes request 09:41:01.988012 Got request: GET /verifiedserver HTTP/1.1 09:41:01.988261 Are-we-friendly question received 09:41:01.989088 Wrote request (93 bytes) input to log/35/server.input 09:41:01.989351 Identifying ourselves as friends 09:41:01.995347 Response sent (56 bytes) and written to log/35/server.response 09:41:01.995607 special request received, no persistency 09:41:01.995698 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43179... * Connected to 127.0.0.1 (127.0.0.1) port 43179 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43179 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73771 === End of file http_verify.out === Start of file server.cmd Testnum 737 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73771 === End of file server.response === Start of file valgrind737 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind737 * starts no server test 0745...[Verify that typecheck-gcc and curl.h are in sync] /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/test745.pl /build/curl/src/curl/tests/.. > log/10/stdout745 2> log/10/stderr745 valgrind SKIPPED s------e--- OK (715 out of 1707, remaining: 00:50, took 0.231s, duration: 00:36) setenv IPFS_PATH = log/54/.ipfs test 0736...[IPFS with IPFS_PATH set, no trailing slash] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind736 ../src/curl -q --output log/54/curl736.out --include --trace-ascii log/54/trace736 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/54/stdout736 2> log/54/stderr736 736: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 736 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind736 ../src/curl -q --output log/54/curl736.out --include --trace-ascii log/54/trace736 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/54/stdout736 2> log/54/stderr736 === End of file commands.log === Start of file http_server.log 09:41:01.986995 ====> Client connect 09:41:01.987670 accept_connection 3 returned 4 09:41:01.988025 accept_connection 3 returned 0 09:41:01.988287 Read 93 bytes 09:41:01.988362 Process 93 bytes request 09:41:01.988432 Got request: GET /verifiedserver HTTP/1.1 09:41:01.989746 Are-we-friendly question received 09:41:01.990074 Wrote request (93 bytes) input to log/54/server.input 09:41:01.990351 Identifying ourselves as friends 09:41:01.994872 Response sent (56 bytes) and written to log/54/server.response 09:41:01.995055 special request received, no persistency 09:41:01.995193 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44921... * Connected to 127.0.0.1 (127.0.0.1) port 44921 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44921 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73756 === End of file http_verify.out === Start of file server.cmd Testnum 736 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73756 === End of file server.response === Start of file valgrind736 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function vCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind738 ../src/curl -q --output log/36/curl738.out --include --trace-ascii log/36/trace738 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/36/stdout738 2> log/36/stderr738 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind715 ../src/curl -q --output log/13/curl715.out --include --trace-ascii log/13/trace715 --trace-config all --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:34087 --proxytunnel --proxy 127.0.0.1:43069 --preproxy socks5://127.0.0.1:36185 > log/13/stdout715 2> log/13/stderr715 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind739 ../src/curl -q --output log/19/curl739.out --include --trace-ascii log/19/trace739 --trace-config all --trace-time --ipfs-gateway "http://127.0.0.1:35697/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/19/stdout739 2> log/19/stderr739 algrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind736 setenv IPFS_PATH = log/36/.ipfs/ test 0738...[IPFS with IPFS_PATH, no gateway file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind738 ../src/curl -q --output log/36/curl738.out --include --trace-ascii log/36/trace738 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/36/stdout738 2> log/36/stderr738 curl returned 1, when expecting 37 738: exit FAILED == Contents of files in the log/36/ dir after test 738 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind738 ../src/curl -q --output log/36/curl738.out --include --trace-ascii log/36/trace738 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/36/stdout738 2> log/36/stderr738 === End of file commands.log === Start of file http_server.log 09:41:02.088099 ====> Client connect 09:41:02.088412 accept_connection 3 returned 4 09:41:02.088764 accept_connection 3 returned 0 09:41:02.089525 Read 93 bytes 09:41:02.089680 Process 93 bytes request 09:41:02.089779 Got request: GET /verifiedserver HTTP/1.1 09:41:02.089869 Are-we-friendly question received 09:41:02.090121 Wrote request (93 bytes) input to log/36/server.input 09:41:02.090310 Identifying ourselves as friends 09:41:02.090974 Response sent (56 bytes) and written to log/36/server.response 09:41:02.091093 special request received, no persistency 09:41:02.091177 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44255... * Connected to 127.0.0.1 (127.0.0.1) port 44255 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44255 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 77175 === End of file http_verify.out === Start of file server.cmd Testnum 738 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 77175 === End of file server.response === Start of file valgrind738 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind738 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/13/server/http2_server.pid" --logfile "log/13/http2_server.log" --logdir "log/13" --portfile log/13/server/http2_server.port --config log/13/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 109415 port 43069 * pid http-proxy => 109415 109415 startnew: ./server/servers socksd --port 0 --pidfile log/13/server/socks_server.pid --portfile log/13/server/socks_server.port --reqfile log/13/socksd-request.log --logfile log/13/socks_server.log --backend 127.0.0.1 --config log/13/server.cmd RUN: SOCKS server is now running PID 110090 * pid socks => 110090 110090 test 0715...[FTP fetch with --preproxy, --proxy and --connect-to] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind715 ../src/curl -q --output log/13/curl715.out --include --trace-ascii log/13/trace715 --trace-config all --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:34087 --proxytunnel --proxy 127.0.0.1:43069 --preproxy socks5://127.0.0.1:36185 > log/13/stdout715 2> log/13/stderr715 715: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 715 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind715 ../src/curl -q --output log/13/curl715.out --include --trace-ascii log/13/trace715 --trace-config all --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:34087 --proxytunnel --proxy 127.0.0.1:43069 --preproxy socks5://127.0.0.1:36185 > log/13/stdout715 2> log/13/stderr715 === End of file commands.log === Start of file ftp_server.log 09:40:59.761919 ====> Client connect 09:40:59.763149 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:40:59.765913 < "USER anonymous" 09:40:59.766366 > "331 We are happy you popped in![CR][LF]" 09:40:59.768504 < "PASS ftp@example.com" 09:40:59.769260 > "230 Welcome you silly person[CR][LF]" 09:40:59.775063 < "PWD" 09:40:59.776978 > "257 "/" is current directory[CR][LF]" 09:40:59.777984 < "EPSV" 09:40:59.778342 ====> Passive DATA channel requested by client 09:40:59.778616 DATA sockfilt for passive data channel starting... 09:40:59.792024 DATA sockfilt for passive data channel started (pid 109400) 09:40:59.793053 DATA sockfilt for passive data channel listens on port 41705 09:40:59.793523 > "229 Entering Passive Mode (|||41705|)[LF]" 09:40:59.793826 Client has been notified that DATA conn will be accepted on port 41705 09:40:59.797234 Client connects to port 41705 09:40:59.797634 ====> Client established passive DATA connection on port 41705 09:40:59.798971 < "TYPE I" 09:40:59.799630 > "200 I modify TYPE as you wanted[CR][LF]" 09:40:59.801307 < "SIZE verifiedserver" 09:40:59.801872 > "213 17[CR][LF]" 09:40:59.803418 < "RETR verifiedserver" 09:40:59.803984 > "150 Binary junk (17 bytes).[CR][LF]" 09:40:59.804677 =====> Closing passive DATA connection... 09:40:59.805027 Server disconnects passive DATA connection 09:40:59.807203 Server disconnected passive DATA connection 09:40:59.807578 DATA sockfilt for passive data channel quits (pid 109400) 09:40:59.809730 DATA sockfilt for passive data channel quit (pid 109400) 09:40:59.810081 =====> Closed passive DATA connection 09:40:59.810490 > "226 File transfer complete[CR][LF]" 09:40:59.847426 < "QUIT" 09:40:59.848116 > "221 bye bye baby[CR][LF]" 09:40:59.850846 MAIN sockfilt said DISC 09:40:59.851209 ====> Client disconnected 09:40:59.851728 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:40:59.014720 ====> Client connect 09:40:59.017204 Received DATA (on stdin) 09:40:59.017337 > 160 bytes data, server => client 09:40:59.017428 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:40:59.017683 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:40:59.017775 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:40:59.018749 < 16 bytes data, client => server 09:40:59.018940 'USER anonymous\r\n' 09:40:59.020086 Received DATA (on stdin) 09:40:59.020235 > 33 bytes data, server => client 09:40:59.020319 '331 We are happy you popped in!\r\n' 09:40:59.021285 < 22 bytes data, client => server 09:40:59.021515 'PASS ftp@example.com\r\n' 09:40:59.023393 Received DATA (on stdin) 09:40:59.023696 > 30 bytes data, server => client 09:40:59.023844 '230 Welcome you silly person\r\n' 09:40:59.027655 < 5 bytes data, client => server 09:40:59.027861 'PWD\r\n' 09:40:59.029575 Received DATA (on stdin) 09:40:59.029781 > 30 bytes data, server => client 09:40:59.030045 '257 "/" is current directory\r\n' 09:40:59.030850 < 6 bytes data, client => server 09:40:59.030996 'EPSV\r\n' 09:40:59.047216 Received DATA (on stdin) 09:40:59.047388 > 38 bytes data, server => client 09:40:59.047565 '229 Entering Passive Mode (|||41705|)\n' 09:40:59.050942 < 8 bytes data, client => server 09:40:59.051157 'TYPE I\r\n' 09:40:59.053319 Received DATA (on stdin) 09:40:59.053608 > 33 bytes data, server => client 09:40:59.053751 '200 I modify TYPE as you wanted\r\n' 09:40:59.054519 < 21 bytes data, client => server 09:40:59.054677 'SIZE verifiedserver\r\n' 09:40:59.055572 Received DATA (on stdin) 09:40:59.055734 > 8 bytes data, server => client 09:40:59.055815 '213 17\r\n' 09:40:59.056599 < 21 bytes data, client => server 09:40:59.056748 'RETR verifiedserver\r\n' 09:40:59.057683 Received DATA (on stdin) 09:40:59.057847 > 29 bytes data, server => client 09:40:59.057933 '150 Binary junk (17 bytes).\r\n' 09:40:59.064200 Received DATA (on stdin) 09:40:59.064398 > 28 bytes data, server => client 09:40:59.064608 '226 File transfer complete\r\n' 09:40:59.100383 < 6 bytes data, client => server 09:40:59.100634 'QUIT\r\n' 09:40:59.101790 Received DATA (on stdin) 09:40:59.101989 > 18 bytes data, server => client 09:40:59.102078 '221 bye bye baby\r\n' 09:40:59.104052 ====> Client disconnect 09:40:59.104979 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:40:59.043686 Running IPv4 version 09:40:59.044321 Listening on port 41705 09:40:59.044833 Wrote pid 109400 to log/13/server/ftp_sockdata.pid 09:40:59.045333 Received PING (on stdin) 09:40:59.046134 Received PORT (on stdin) 09:40:59.050556 ====> Client connect 09:40:59.059016 Received DATA (on stdin) 09:40:59.059162 > 17 bytes data, server => client 09:40:59.059251 'WE ROOLZ: 79551\r\n' 09:40:59.059758 Received DISC (on stdin) 09:40:59.060131 ====> Client forcibly disconnected 09:40:59.061791 Received QUIT (on stdin) 09:40:59.061937 quits 09:40:59.062343 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file http2_server.log 09:41:00.337780 Run as proxy, CONNECT to host 127.0.0.1 09:41:00.338731 Running HTTP IPv4 version on port 43069 09:41:00.339222 Wrote pid 109415 to log/13/server/http2_server.pid 09:41:00.339698 Wrote port 43069 to log/13/server/http2_server.port === End of file http2_server.log === Start of file server.cmd Testnum 715 === End of file server.cmd === Start of file socks_server.log 09:41:00.150081 Running IPv4 version 09:41:00.150730 Listening on port 36185 09:41:00.151075 Wrote pid 110090 to log/13/server/socks_server.pid 09:41:00.151380 Wrote port 36185 to log/13/server/socks_server.port === End of file socks_server.log === Start of file valgrind715 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind715 test 0739...[IPNS path and query args for gateway and IPFS url (malformed gateway url)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind739 ../src/curl -q --output log/19/curl739.out --include --trace-ascii log/19/trace739 --trace-config all --trace-time --ipfs-gateway "http://127.0.0.1:35697/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/19/stdout739 2> log/19/stderr739 curl returned 1, when expecting 3 739: exit FAILED == Contents of files in the log/19/ dir after test 739 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind739 ../src/curl -q --output log/19/curl739.out --include --trace-ascii log/19/trace739 --trace-config all --trace-time --ipfs-gateway "http://127.0.0.1:35697/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/19/stdout739 2> log/19/stderr739 === End of file commands.log === Start of file http_server.log 09:41:02.215836 ====> Client connect 09:41:02.216123 accept_connection 3 returned 4 09:41:02.216273 accept_connection 3 returned 0 09:41:02.216398 Read 93 bytes 09:41:02.216762 Process 93 bytes request 09:41:02.216864 Got request: GET /verifiedserver HTTP/1.1 09:41:02.216932 Are-we-friendly question received 09:41:02.217127 Wrote request (93 bytes) input to log/19/server.input 09:41:02.217306 Identifying ourselves as friends 09:41:02.218013 Response sent (56 bytes) and written to log/19/server.response 09:41:02.218117 special request received, no persistency 09:41:02.218177 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35697... * Connected to 127.0.0.1 (127.0.0.1) port 35697 * using HTTP/1.x > GET CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind731 ../src/curl -q --output log/63/curl731.out --include --trace-ascii log/63/trace731 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/63/stdout731 2> log/63/stderr731 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind746 ../src/curl -q --output log/18/curl746.out --include --trace-ascii log/18/trace746 --trace-config all --trace-time http://neverused.example/ -m 22222242222222222 > log/18/stdout746 2> log/18/stderr746 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind742 ../src/curl -q --output log/43/curl742.out --include --trace-ascii log/43/trace742 --trace-config all --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:41267 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:46733 > log/43/stdout742 2> log/43/stderr742 /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35697 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73791 === End of file http_verify.out === Start of file server.cmd Testnum 739 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73791 === End of file server.response === Start of file valgrind739 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind739 setenv HOME = /build/curl/src/build-curl/tests/log/63 test 0731...[IPFS with gateway URL and path from gateway file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind731 ../src/curl -q --output log/63/curl731.out --include --trace-ascii log/63/trace731 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/63/stdout731 2> log/63/stderr731 731: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 731 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind731 ../src/curl -q --output log/63/curl731.out --include --trace-ascii log/63/trace731 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/63/stdout731 2> log/63/stderr731 === End of file commands.log === Start of file http_server.log 09:41:01.775870 ====> Client connect 09:41:01.776210 accept_connection 3 returned 4 09:41:01.776403 accept_connection 3 returned 0 09:41:01.777517 Read 93 bytes 09:41:01.777647 Process 93 bytes request 09:41:01.777740 Got request: GET /verifiedserver HTTP/1.1 09:41:01.777828 Are-we-friendly question received 09:41:01.778077 Wrote request (93 bytes) input to log/63/server.input 09:41:01.778286 Identifying ourselves as friends 09:41:01.780064 Response sent (56 bytes) and written to log/63/server.response 09:41:01.780180 special request received, no persistency 09:41:01.780262 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38797... * Connected to 127.0.0.1 (127.0.0.1) port 38797 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38797 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73747 === End of file http_verify.out === Start of file server.cmd Testnum 731 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73747 === End of file server.response === Start of file valgrind731 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind731 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind751 ./libtest/libtests lib751 - > log/17/stdout751 2> log/17/stderr751 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind748 ../src/curl -q --output log/58/curl748.out --include --trace-ascii log/58/trace748 --trace-config all --trace-time -K log/58/cmd > log/58/stdout748 2> log/58/stderr748 * starts no server test 0746...[too large numerical value passed to -m] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind746 ../src/curl -q --output log/18/curl746.out --include --trace-ascii log/18/trace746 --trace-config all --trace-time http://neverused.example/ -m 22222242222222222 > log/18/stdout746 2> log/18/stderr746 746: stderr FAILED: --- log/18/check-expected 2025-07-18 09:41:03.044345777 +0000 +++ log/18/check-generated 2025-07-18 09:41:03.043596877 +0000 @@ -1,2 +0,0 @@ -curl: option -m: expected a proper numerical parameter[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/18/ dir after test 746 === Start of file check-expected curl: option -m: expected a proper numerical parameter[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind746 ../src/curl -q --output log/18/curl746.out --include --trace-ascii log/18/trace746 --trace-config all --trace-time http://neverused.example/ -m 22222242222222222 > log/18/stdout746 2> log/18/stderr746 === End of file commands.log === Start of file server.cmd Testnum 746 === End of file server.cmd === Start of file valgrind746 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind746 * starts no server test 0751...[multi - add many easy handles] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind751 ./libtest/libtests lib751 - > log/17/stdout751 2> log/17/stderr751 libtests returned 1, when expecting 0 751: exit FAILED == Contents of files in the log/17/ dir after test 751 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind751 ./libtest/libtests lib751 - > log/17/stdout751 2> log/17/stderr751 === End of file commands.log === Start of file server.cmd Testnum 751 === End of file server.cmd === Start of file valgrind751 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind751 test 0742...[SOCKS5-hostname with max length credentials and max host name length] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind742 ../src/curl -q --output log/43/curl742.out --include --trace-ascii log/43/trace742 --trace-config all --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:41267 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:46733 > log/43/stdout742 2> log/43/stderr742 742: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 742 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind742 ../src/curl -q --output log/43/curl742.out --include --trace-ascii log/43/trace742 --trace-config all --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:41267 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:46733 > log/43/stdout742 2> log/43/stderr742 === End of file commands.log === Start of file http_server.log 09:41:02.514381 ====> Client connect 09:41:02.515397 accept_connection 3 returned 4 09:41:02.516245 accept_connection 3 returned 0 09:41:02.516733 Read 93 bytes 09:41:02.517292 Process 93 bytes request 09:41:02.521948 Got request: GET /verifiedserver HTTP/1.1 09:41:02.522245 Are-we-friendly question received 09CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind743 ../src/curl -q --output log/39/curl743.out --include --trace-ascii log/39/trace743 --trace-config all --trace-time http://127.0.0.1:42899/743 -K log/39/config > log/39/stdout743 2> log/39/stderr743 :41:02.523004 Wrote request (93 bytes) input to log/43/server.input 09:41:02.523268 Identifying ourselves as friends 09:41:02.524296 Response sent (56 bytes) and written to log/43/server.response 09:41:02.524551 special request received, no persistency 09:41:02.524668 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd method 2 user aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa password bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb backendport 41267 Testnum 742 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file valgrind742 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind742 * starts no server test 0748...[A --config file that uses -h and no URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind748 ../src/curl -q --output log/58/curl748.out --include --trace-ascii log/58/trace748 --trace-config all --trace-time -K log/58/cmd > log/58/stdout748 2> log/58/stderr748 curl returned 1, when expecting 2 748: exit FAILED == Contents of files in the log/58/ dir after test 748 === Start of file cmd -h all === End of file cmd === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind748 ../src/curl -q --output log/58/curl748.out --include --trace-ascii log/58/trace748 --trace-config all --trace-time -K log/58/cmd > log/58/stdout748 2> log/58/stderr748 === End of file commands.log === Start of file server.cmd Testnum 748 === End of file server.cmd === Start of file valgrind748 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind748 test 0743...[--config with a 127 byte line] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind743 ../src/curl -q --output log/39/curl743.out --include --trace-ascii log/39/trace743 --trace-config all --trace-time http://127.0.0.1:42899/743 -K log/39/config > log/39/stdout743 2> log/39/stderr743 743: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 743 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind743 ../src/curl -q --output log/39/curl743.out --include --trace-ascii log/39/trace743 --trace-config all --trace-time http://127.0.0.1:42899/743 -K log/39/config > log/39/stdout743 2> log/39/stderr743 === End of file commands.log === Start of file config -A pointless data = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" === End of file config === Start of file http_server.log 09:41:02.531865 ====> Client connect 09:41:02.532177 accept_connection 3 returned 4 09:41:02.532358 accept_connection 3 returned 0 09:41:02.533144 Read 93 bytes 09:41:02.533295 Process 93 bytes request 09:41:02.533388 Got request: GET /verifiedserver HTTP/1.1 09:41:02.533664 Are-we-friendly question received 09:41:02.533968 Wrote request (93 bytes) input to log/39/server.input 09:41:02.534266 Identifying ourselves as friends 09:41:02.536338 Response sent (56 bytes) and written to log/39/server.response 09:41:02.539592 special request received, no persistency 09:41:02.539740 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 743 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind743 valgrinCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind740 ../src/curl -q --output log/6/curl740.out --include --trace-ascii log/6/trace740 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout740 2> log/6/stderr740 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind749 ../src/curl -q --output log/31/curl749.out --include --trace-ascii log/31/trace749 --trace-config all --trace-time http://test.example --proxy http://127.0.0.1:45557 --proxytunnel -sS > log/31/stdout749 2> log/31/stderr749 d: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind743 setenv HOME = /build/curl/src/build-curl/tests/log/6 test 0740...[IPFS with gateway URL from multiline gateway file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind740 ../src/curl -q --output log/6/curl740.out --include --trace-ascii log/6/trace740 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout740 2> log/6/stderr740 740: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 740 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind740 ../src/curl -q --output log/6/curl740.out --include --trace-ascii log/6/trace740 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/6/stdout740 2> log/6/stderr740 === End of file commands.log === Start of file http_server.log 09:41:02.306756 ====> Client connect 09:41:02.307078 accept_connection 3 returned 4 09:41:02.307245 accept_connection 3 returned 0 09:41:02.307374 Read 93 bytes 09:41:02.307560 Process 93 bytes request 09:41:02.307675 Got request: GET /verifiedserver HTTP/1.1 09:41:02.307759 Are-we-friendly question received 09:41:02.308007 Wrote request (93 bytes) input to log/6/server.input 09:41:02.308205 Identifying ourselves as friends 09:41:02.309968 Response sent (56 bytes) and written to log/6/server.response 09:41:02.310088 special request received, no persistency 09:41:02.310161 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37181... * Connected to 127.0.0.1 (127.0.0.1) port 37181 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37181 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73803 === End of file http_verify.out === Start of file server.cmd Testnum 740 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73803 === End of file server.response === Start of file valgrind740 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind740 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind752 ../src/curl -q --output log/10/curl752.out --include --trace-ascii log/10/trace752 --trace-config all --trace-time http://127.0.0.1:36913/752 -f --retry 1 > log/10/stdout752 2> log/10/stderr752 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind750 ../src/curl -q --output log/35/curl750.out --include --trace-ascii log/35/trace750 --trace-config all --trace-time http://test.example --proxy http://127.0.0.1:43179 --proxytunnel -sS > log/35/stdout750 2> log/35/stderr750 test 0749...[HTTP CONNECT with proxy returning 400 and closing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind749 ../src/curl -q --output log/31/curl749.out --include --trace-ascii log/31/trace749 --trace-config all --trace-time http://test.example --proxy http://127.0.0.1:45557 --proxytunnel -sS > log/31/stdout749 2> log/31/stderr749 749: stderr FAILED: --- log/31/check-expected 2025-07-18 09:41:03.448671512 +0000 +++ log/31/check-generated 2025-07-18 09:41:03.447596673 +0000 @@ -1 +0,0 @@ -curl: (56) CONNECT tunnel failed, response 400[CR][LF] == Contents of files in the log/31/ dir after test 749 === Start of file check-expected curl: (56) CONNECT tunnel failed, response 400[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind749 ../src/curl -q --output log/31/curl749.out --include --trace-ascii log/31/trace749 --trace-config all --trace-time http://test.example --proxy http://127.0.0.1:45557 --proxytunnel -sS > log/31/stdout749 2> log/31/stderr749 === End of file commands.log === Start of file http_server.log 09:41:02.888786 ====> Client connect 09:41:02.889171 accept_connection 3 returned 4 09:41:02.889374 accept_connection 3 returned 0 09:41:02.889657 Read 93 bytes 09:41:02.889792 Process 93 bytes request 09:41:02.889889 Got request: GET /verifiedserver HTTP/1.1 09:41:02.889984 Are-we-friendly question received 09:41:02.890268 Wrote request (93 bytes) input to log/31/server.input 09:41:02.890594 Identifying ourselves as friends 09:41:02.893701 Response sent (56 bytes) and written to log/31/server.response 09:41:02.893887 special request received, no persistency 09:41:02.893987 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:45557... * Connected to 127.0.0.1 (127.0.0.1) port 45557 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45557 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73776 === End of file http_verify.out === Start of file server.cmd Testnum 749 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73776 === End of file server.response === Start of file valgrind749 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind749 test 0752...[--retry and -f on a HTTP 404 response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind752 ../src/curl -q --output log/10/curl752.out --include --trace-ascii log/10/trace752 --trace-config all --trace-time http://127.0.0.1:36913/752 -f --retry 1 > log/10/stdout752 2> log/10/stderr752 752: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 752 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind752 ../src/curl -q --output log/10/curl752.out --include --trace-ascii log/10/trace752 --trace-config all --trace-time http://127.0.0.1:36913/752 -f --retry 1 > log/10/stdout752 2> log/10/stderr752 === End of file commands.log === Start of file http_server.log 09:41:02.993688 ====> Client connect 09:41:02.994087 accept_connection 3 returned 4 09:41:02.994253 accept_connection 3 returned 0 09:41:02.995141 Read 93 bytes 09:41:02.995284 Process 93 bytes request 09:41:02.995374 Got request: GET /verifiedserver HTTP/1.1 09:41:02.995536 Are-we-friendly question received 09:41:02.995813 Wrote request (93 bytes) input to log/10/server.input 09:41:02.996026 Identifying ourselves as friends 09:41:02.997689 Response sent (56 bytes) and written to log/10/server.response 09:41:02.997809 special request received, no persistency 09:41:02.997880 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:36913... * Connected to 127.0.0.1 (127.0.0.1) port 36913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:36913 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73804 === End of file http_verify.out === Start of file server.cmd Testnum 752 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73804 === End of file server.response === Start of file valgrind752 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind752 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind747 ../src/curl -q --output log/4/curl747.out --include --trace-ascii log/4/trace747 --trace-config all --trace-time http://127.0.0.1:43013/747 > log/4/stdout747 2> log/4/stderr747 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind754 ../src/curl -q --output log/54/curl754.out --include --trace-ascii log/54/trace754 --trace-config all --trace-time ftp://127.0.0.1:41829/path/ -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/54/stdout754 2> log/54/stderr754 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind741 ../src/curl -q --output log/9/curl741.out --include --trace-ascii log/9/trace741 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/9/stdout741 2> log/9/stderr741 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind786 ../src/curl -q --output log/13/curl786.out --include --trace-ascii log/13/trace786 --trace-config all --trace-time http://127.0.0.1:44087/786 --variable "name[5-15]@-" --expand-data '{{name}}' log/13/stdout786 2> log/13/stderr786 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind784 ../src/curl -q --output log/36/curl784.out --include --trace-ascii log/36/trace784 --trace-config all --trace-time http://127.0.0.1:44255/784 --variable "name[5-15]@log/36/in784" --expand-data '{{name}}' > log/36/stdout784 2> log/36/stderr784 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind785 ../src/curl -q --output log/19/curl785.out --include --trace-ascii log/19/trace785 --trace-config all --trace-time http://127.0.0.1:35697/785 --variable "name[5-]@log/19/in785" --expand-data '{{name}}' > log/19/stdout785 2> log/19/stderr785 test 0750...[HTTP CONNECT with proxy returning just HTML and closing] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind750 ../src/curl -q --output log/35/curl750.out --include --trace-ascii log/35/trace750 --trace-config all --trace-time http://test.example --proxy http://127.0.0.1:43179 --proxytunnel -sS > log/35/stdout750 2> log/35/stderr750 750: stderr FAILED: --- log/35/check-expected 2025-07-18 09:41:03.531284490 +0000 +++ log/35/check-generated 2025-07-18 09:41:03.530596631 +0000 @@ -1 +0,0 @@ -curl: (43) Invalid response header[CR][LF] == Contents of files in the log/35/ dir after test 750 === Start of file check-expected curl: (43) Invalid response header[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind750 ../src/curl -q --output log/35/curl750.out --include --trace-ascii log/35/trace750 --trace-config all --trace-time http://test.example --proxy http://127.0.0.1:43179 --proxytunnel -sS > log/35/stdout750 2> log/35/stderr750 === End of file commands.log === Start of file http_server.log 09:41:02.918358 ====> Client connect 09:41:02.918816 accept_connection 3 returned 4 09:41:02.918969 accept_connection 3 returned 0 09:41:02.919099 Read 93 bytes 09:41:02.919196 Process 93 bytes request 09:41:02.919326 Got request: GET /verifiedserver HTTP/1.1 09:41:02.919607 Are-we-friendly question received 09:41:02.920012 Wrote request (93 bytes) input to log/35/server.input 09:41:02.920223 Identifying ourselves as friends 09:41:02.921085 Response sent (56 bytes) and written to log/35/server.response 09:41:02.921202 special request received, no persistency 09:41:02.921266 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43179... * Connected to 127.0.0.1 (127.0.0.1) port 43179 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43179 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73771 === End of file http_verify.out === Start of file server.cmd Testnum 750 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73771 === End of file server.response === Start of file valgrind750 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind750 test 0747...[Reject too many HTTP response headers] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind747 ../src/curl -q --output log/4/curl747.out --include --trace-ascii log/4/trace747 --trace-config all --trace-time http://127.0.0.1:43013/747 > log/4/stdout747 2> log/4/stderr747 747: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 747 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind747 ../src/curl -q --output log/4/curl747.out --include --trace-ascii log/4/trace747 --trace-config all --trace-time http://127.0.0.1:43013/747 > log/4/stdout747 2> log/4/stderr747 === End of file commands.log === Start of file http_server.log 09:41:02.833929 ====> Client connect 09:41:02.834813 accept_connection 3 returned 4 09:41:02.834999 accept_connection 3 returned 0 09:41:02.835135 Read 93 bytes 09:41:02.835237 Process 93 bytes request 09:41:02.835326 Got request: GET /verifiedserver HTTP/1.1 09:41:02.835404 Are-we-friendly question received 09:41:02.835708 Wrote request (93 bytes) input to log/4/server.input 09:41:02.835883 Identifying ourselves as friends 09:41:02.837206 Response sent (56 bytes) and written to log/4/server.response 09:41:02.837433 special request received, no persistency 09:41:02.838923 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43013... * Connected to 127.0.0.1 (127.0.0.1) port 43013 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43013 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73808 === End of file http_verify.out === Start of file server.cmd Testnum 747 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73808 === End of file server.response === Start of file valgrind747 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind747 setenv HOME = /build/curl/src/build-curl/tests/log/9 test 0741...[IPFS malformed gw URL from multiline gateway file, first line no url] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind741 ../src/curl -q --output log/9/curl741.out --include --trace-ascii log/9/trace741 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/9/stdout741 2> log/9/stderr741 curl returned 1, when expecting 3 741: exit FAILED == Contents of files in the log/9/ dir after test 741 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind741 ../src/curl -q --output log/9/curl741.out --include --trace-ascii log/9/trace741 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/9/stdout741 2> log/9/stderr741 === End of file commands.log === Start of file http_server.log 09:41:02.339820 ====> Client connect 09:41:02.340145 accept_connection 3 returned 4 09:41:02.340357 accept_connection 3 returned 0 09:41:02.340654 Read 93 bytes 09:41:02.340784 Process 93 bytes request 09:41:02.340893 Got request: GET /verifiedserver HTTP/1.1 09:41:02.341014 Are-we-friendly question received 09:41:02.341279 Wrote request (93 bytes) input to log/9/server.input 09:41:02.341822 Identifying ourselves as friends 09:41:02.345735 Response sent (56 bytes) and written to log/9/server.response 09:41:02.345957 special request received, no persistency 09:41:02.346115 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46607... * Connected to 127.0.0.1 (127.0.0.1) port 46607 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46607 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73797 === End of file http_verify.out === Start of file server.cmd Testnum 741 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73797 === End of file server.response === Start of file valgrind741 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind741 test 0786...[--variable with a file byte range, reading from stdin] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind786 ../src/curl -q --output log/13/curl786.out --include --trace-ascii log/13/trace786 --trace-config all --trace-time http://127.0.0.1:44087/786 --variable "name[5-15]@-" --expand-data '{{name}}' log/13/stdout786 2> log/13/stderr786 786: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 786 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind786 ../src/curl -q --output log/13/curl786.out --include --trace-ascii log/13/trace786 --trace-config all --trace-time http://127.0.0.1:44087/786 --variable "name[5-15]@-" --expand-data '{{name}}' log/13/stdout786 2> log/13/stderr786 === End of file commands.log === Start of file http_server.log 09:41:03.189688 ====> Client connect 09:41:03.190069 accept_connection 3 returned 4 09:41:03.190267 accept_connection 3 returned 0 09:41:03.190435 Read 93 bytes 09:41:03.190647 Process 93 bytes request 09:41:03.190743 Got request: GET /verifiedserver HTTP/1.1 09:41:03.190830 Are-we-friendly question received 09:41:03.191097 Wrote request (93 bytes) input to log/13/server.input 09:41:03.191317 Identifying ourselves as friends 09:41:03.192302 Response sent (56 bytes) and written to log/13/server.response 09:41:03.192426 special request received, no persistency 09:41:03.194983 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44087... * Connected to 127.0.0.1 (127.0.0.1) port 44087 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44087 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73796 === End of file http_verify.out === Start of file server.cmd Testnum 786 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73796 === End of file server.response === Start of file stdin-for-786 On the first Monday of the month of April, 1625, the market town of Meung === End of file stdin-for-786 === Start of file valgrind786 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind786 test 0785...[--variable with a file byte range without end] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind785 ../src/curl -q --output log/19/curl785.out --include --trace-ascii log/19/trace785 --trace-confiCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind787 ../src/curl -q --output log/63/curl787.out --include --trace-ascii log/63/trace787 --trace-config all --trace-time http://127.0.0.1:38797/787 --variable "name[15-14]@&LOGDIR/fooo" --expand-data '{{name}}' > log/63/stdout787 2> log/63/stderr787 g all --trace-time http://127.0.0.1:35697/785 --variable "name[5-]@log/19/in785" --expand-data '{{name}}' > log/19/stdout785 2> log/19/stderr785 785: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 785 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind785 ../src/curl -q --output log/19/curl785.out --include --trace-ascii log/19/trace785 --trace-config all --trace-time http://127.0.0.1:35697/785 --variable "name[5-]@log/19/in785" --expand-data '{{name}}' > log/19/stdout785 2> log/19/stderr785 === End of file commands.log === Start of file http_server.log 09:41:03.241945 ====> Client connect 09:41:03.242280 accept_connection 3 returned 4 09:41:03.242599 accept_connection 3 returned 0 09:41:03.243304 Read 93 bytes 09:41:03.243602 Process 93 bytes request 09:41:03.243739 Got request: GET /verifiedserver HTTP/1.1 09:41:03.243837 Are-we-friendly question received 09:41:03.244101 Wrote request (93 bytes) input to log/19/server.input 09:41:03.244313 Identifying ourselves as friends 09:41:03.245199 Response sent (56 bytes) and written to log/19/server.response 09:41:03.245319 special request received, no persistency 09:41:03.245389 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:35697... * Connected to 127.0.0.1 (127.0.0.1) port 35697 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35697 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73791 === End of file http_verify.out === Start of file in785 On the first Monday of the month of April, 1625, the market town of Meung === End of file in785 === Start of file server.cmd Testnum 785 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73791 === End of file server.response === Start of file valgrind785 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind785 test 0784...[--variable with a file byte range] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind784 ../src/curl -q --output log/36/curl784.out --include --trace-ascii log/36/trace784 --trace-config all --trace-time http://127.0.0.1:44255/784 --variable "name[5-15]@log/36/in784" --expand-data '{{name}}' > log/36/stdout784 2> log/36/stderr784 784: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 784 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind784 ../src/curl -q --output log/36/curl784.out --include --trace-ascii log/36/trace784 --trace-config all --trace-time http://127.0.0.1:44255/784 --variable "name[5-15]@log/36/in784" --expand-data '{{name}}' > log/36/stdout784 2> log/36/stderr784 === End of file commands.log === Start of file http_server.log 09:41:03.149939 ====> Client connect 09:41:03.150334 accept_connection 3 returned 4 09:41:03.150574 accept_connection 3 returned 0 09:41:03.153296 Read 93 bytes 09:41:03.153521 Process 93 bytes request 09:41:03.153625 Got request: GET /verifiedserver HTTP/1.1 09:41:03.153719 Are-we-friendly question received 09:41:03.153972 Wrote request (93 bytes) input to log/36/server.input 09:41:03.154179 Identifying ourselves as friends 09:41:03.160622 Response sent (56 bytes) and written to log/36/server.response 09:41:03.160788 special request received, no persistency 09:41:03.160867 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:44255... * Connected to 127.0.0.1 (127.0.0.1) port 44255 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:44255 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 77175 === End of file http_verify.out === Start of file in784 On the first Monday of the month of April, 1625, the market town of Meung === End of file in784 === Start of file server.cmd Testnum 784 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 77175 === End of file server.response === Start of file valgrind784 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind784 test 0754...[FTP list with quote ops] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind754 ../src/curl -q --output log/54/curl754.out --include --trace-ascii log/54/trace754 --trace-config all --trace-time ftp://127.0.0.1:41829/path/ -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/54/stdout754 2> log/54/stderr754 754: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 754 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind754 ../src/curl -q --output log/54/curl754.out --include --trace-ascii log/54/trace754 --trace-config all --trace-time ftp://127.0.0.1:41829/path/ -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/54/stdout754 2> log/54/stderr754 === End of file commands.log === Start of file ftp_server.log 09:41:02.792488 ====> Client connect 09:41:02.798007 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:41:02.800949 < "USER anonymous" 09:41:02.804942 > "331 We are happy you popped in![CR][LF]" 09:41:02.806949 < "PASS ftp@example.com" 09:41:02.807344 > "230 Welcome you silly person[CR][LF]" 09:41:02.811616 < "PWD" 09:41:02.812465 > "257 "/" is current directory[CR][LF]" 09:41:02.814432 < "EPSV" 09:41:02.814846 ====> Passive DATA channel requested by client 09:41:02.815089 DATA sockfilt for passive data channel starting... 09:41:02.827298 DATA sockfilt for passive data channel started (pid 112058) 09:41:02.828652 DATA sockfilt for passive data channel listens on port 37621 09:41:02.829235 > "229 Entering Passive Mode (|||37621|)[LF]" 09:41:02.829504 Client has been notified that DATA conn will be accepted on port 37621 09:41:02.833016 Client connects to port 37621 09:41:02.833359 ====> Client established passive DATA connection on port 37621 09:41:02.834476 < "TYPE I" 09:41:02.835474 > "200 I modify TYPE as you wanted[CR][LF]" 09:41:02.837880 < "SIZE verifiedserver" 09:41:02.839181 > "213 17[CR][LF]" 09:41:02.841198 < "RETR verifiedserver" 09:41:02.842852 > "150 Binary junk (17 bytes).[CR][LF]" 09:41:02.843690 =====> Closing passive DATA connection... 09:41:02.844052 Server disconnects passive DATA connection 09:41:02.844708 Server disconnected passive DATA connection 09:41:02.845100 DATA sockfilt for passive data channel quits (pid 112058) 09:41:02.847534 DATA sockfilt for passive data channel quit (pid 112058) 09:41:02.847900 =====> Closed passive DATA connection 09:41:02.848686 > "226 File transfer complete[CR][LF]" 09:41:02.884671 < "QUIT" 09:41:02.885970 > "221 bye bye baby[CR][LF]" 09:41:02.890009 MAIN sockfilt said DISC 09:41:02.890974 ====> Client disconnected 09:41:02.891517 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:41:03.045650 ====> Client connect 09:41:03.047744 Received DATA (on stdin) 09:41:03.047914 > 160 bytes data, server => client 09:41:03.052137 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:41:03.052296 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:41:03.052395 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:41:03.053296 < 16 bytes data, client => server 09:41:03.053549 'USER anonymous\r\n' 09:41:03.055210 Received DATA (on stdin) 09:41:03.055372 > 33 bytes data, server => client 09:41:03.059047 '331 We are happy you popped in!\r\n' 09:41:03.059814 < 22 bytes data, client => server 09:41:03.059966 'PASS ftp@example.com\r\n' 09:41:03.061521 Received DATA (on stdin) 09:41:03.061681 > 30 bytes data, server => client 09:41:03.061771 '230 Welcome you silly person\r\n' 09:41:03.064558 < 5 bytes data, client => server 09:41:03.064731 'PWD\r\n' 09:41:03.065803 Received DATA (on stdin) 09:41:03.065958 > 30 bytes data, server => client 09:41:03.066552 '257 "/" is current directory\r\n' 09:41:03.067306 < 6 bytes data, client => server 09:41:03.067531 'EPSV\r\n' 09:41:03.083605 Received DATA (on stdin) 09:41:03.083784 > 38 bytes data, server => client 09:41:03.083879 '229 Entering Passive Mode (|||37621|)\n' 09:41:03.086240 < 8 bytes data, client => server 09:41:03.086369 'TYPE I\r\n' 09:41:03.088795 Received DATA (on stdin) 09:41:03.088961 > 33 bytes data, server => client 09:41:03.089586 '200 I modify TYPE as you wanted\r\n' 09:41:03.090437 < 21 bytes data, client => server 09:41:03.090718 'SIZE verifiedserver\r\n' 09:41:03.092035 Received DATA (on stdin) 09:41:03.092191 > 8 bytes data, server => client 09:41:03.092381 '213 17\r\n' 09:41:03.094172 < 21 bytes data, client => server 09:41:03.094339 'RETR verifiedserver\r\n' 09:41:03.095370 Received DATA (on stdin) 09:41:03.095625 > 29 bytes data, server => client 09:41:03.095823 '150 Binary junk (17 bytes).\r\n' 09:41:03.101979 Received DATA (on stdin) 09:41:03.102151 > 28 bytes data, server => client 09:41:03.102818 '226 File transfer complete\r\n' 09:41:03.137510 < 6 bytes data, client => server 09:41:03.137689 'QUIT\r\n' 09:41:03.138907 Received DATA (on stdin) 09:41:03.139048 > 18 bytes data, server => client 09:41:03.139216 '221 bye bye baby\r\n' 09:41:03.140240 ====> Client disconnect 09:41:03.144072 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:41:02.079044 Running IPv4 version 09:41:02.079914 Listening on port 37621 09:41:02.080348 Wrote pid 112058 to log/54/server/ftp_sockdata.pid 09:41:02.080638 Received PING (on stdin) 09:41:02.081600 Received PORT (on stdin) 09:41:02.085973 ====> Client connect 09:41:02.097061 Received DATA (on stdin) 09:41:02.097238 > 17 bytes data, server => client 09:41:02.097331 'WE ROOLZ: 78730\r\n' 09:41:02.098094 Received DISC (on stdin) 09:41:02.098323 ====> Client forcibly disconnected 09:41:02.099166 Received QUIT (on stdin) 09:41:02.099316 quits 09:41:02.099899 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY FAIL 500 this might not be a failure Testnum 754 === End of file server.cmd === Start of file valgrind754 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind754 test 0787...[--variable with a file byte range, bad range] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind787 ../src/curl -q --output log/63/curl787.out --include --trace-ascii log/63/trace787 --trace-config all --trace-time http://127.0.0.1:38797/787 --variable "name[15-14]@&LOGDIR/fooo" --expand-data '{{name}}' > log/63/stdout787 2> log/63/stderr787 curl returned 1, when expecting 2 787: exit FAILED == Contents of files in the log/63/ dir afterCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind788 ../src/curl -q --output log/18/curl788.out --include --trace-ascii log/18/trace788 --trace-config all --trace-time http://127.0.0.1:41285/788 --variable "name[15-15]@log/18/in788" --expand-data '{{name}}' > log/18/stdout788 2> log/18/stderr788 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind791 ../src/curl -q --output log/43/curl791.out --include --trace-ascii log/43/trace791 --trace-config all --trace-time http://127.0.0.1:41267/791 --variable "name[10-30]=0123456789abcdef" --expand-data '{{name}}' > log/43/stdout791 2> log/43/stderr791 test 787 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind787 ../src/curl -q --output log/63/curl787.out --include --trace-ascii log/63/trace787 --trace-config all --trace-time http://127.0.0.1:38797/787 --variable "name[15-14]@&LOGDIR/fooo" --expand-data '{{name}}' > log/63/stdout787 2> log/63/stderr787 === End of file commands.log === Start of file http_server.log 09:41:03.390625 ====> Client connect 09:41:03.390974 accept_connection 3 returned 4 09:41:03.391180 accept_connection 3 returned 0 09:41:03.391324 Read 93 bytes 09:41:03.391429 Process 93 bytes request 09:41:03.391632 Got request: GET /verifiedserver HTTP/1.1 09:41:03.391807 Are-we-friendly question received 09:41:03.392091 Wrote request (93 bytes) input to log/63/server.input 09:41:03.392280 Identifying ourselves as friends 09:41:03.395721 Response sent (56 bytes) and written to log/63/server.response 09:41:03.395887 special request received, no persistency 09:41:03.395985 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:38797... * Connected to 127.0.0.1 (127.0.0.1) port 38797 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:38797 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73747 === End of file http_verify.out === Start of file server.cmd Testnum 787 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73747 === End of file server.response === Start of file valgrind787 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind787 test 0788...[--variable with a file and single-byte byte range] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind788 ../src/curl -q --output log/18/curl788.out --include --trace-ascii log/18/trace788 --trace-config all --trace-time http://127.0.0.1:41285/788 --variable "name[15-15]@log/18/in788" --expand-data '{{name}}' > log/18/stdout788 2> log/18/stderr788 788: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 788 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind788 ../src/curl -q --output log/18/curl788.out --include --trace-ascii log/18/trace788 --trace-config all --trace-time http://127.0.0.1:41285/788 --variable "name[15-15]@log/18/in788" --expand-data '{{name}}' > log/18/stdout788 2> log/18/stderr788 === End of file commands.log === Start of file http_server.log 09:41:03.549938 ====> Client connect 09:41:03.550236 accept_connection 3 returned 4 09:41:03.550430 accept_connection 3 returned 0 09:41:03.550799 Read 93 bytes 09:41:03.550926 Process 93 bytes request 09:41:03.551123 Got request: GET /verifiedserver HTTP/1.1 09:41:03.551209 Are-we-friendly question received 09:41:03.551432 Wrote request (93 bytes) input to log/18/server.input 09:41:03.551750 Identifying ourselves as friends 09:41:03.552405 Response sent (56 bytes) and written to log/18/server.response 09:41:03.555693 special request received, no persistency 09:41:03.555776 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41285... * Connected to 127.0.0.1 (127.0.0.1) port 41285 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41285 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73790 === End of file http_verify.out === Start of file in788 On the first Monday of the month of April, 1625, the market town of Meung === End of file in788 === Start of file server.cmd Testnum 788 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73790 === End of file server.response === Start of file valgrind788 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind788 test 0791...[--variable with a byte range using plain assign, out of range] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind791 ../src/curl -q --output log/43/curl791.out --include --trace-ascii log/43/trace791 --trace-config all --trace-time http://127.0.0.1:41267/791 --variable "name[10-30]=0123456789abcdef" --expand-data '{{name}}' > log/43/stdout791 2> log/43/stderr791 791: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 791 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quietCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind789 ../src/curl -q --output log/58/curl789.out --include --trace-ascii log/58/trace789 --trace-config all --trace-time http://127.0.0.1:46727/789 --variable "name[75-85]@log/58/in789" --expand-data '{{name}}' > log/58/stdout789 2> log/58/stderr789 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind744 ../src/curl -q --output log/30/curl744.out --include --trace-ascii log/30/trace744 --trace-config all --trace-time http://foo.host:43913/744 -p --proxy1.0 127.0.0.1:33057 -A "" --netrc-file log/30/netrc744 > log/30/stdout744 2> log/30/stderr744 --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind791 ../src/curl -q --output log/43/curl791.out --include --trace-ascii log/43/trace791 --trace-config all --trace-time http://127.0.0.1:41267/791 --variable "name[10-30]=0123456789abcdef" --expand-data '{{name}}' > log/43/stdout791 2> log/43/stderr791 === End of file commands.log === Start of file http_server.log 09:41:03.707579 ====> Client connect 09:41:03.707947 accept_connection 3 returned 4 09:41:03.708119 accept_connection 3 returned 0 09:41:03.708259 Read 93 bytes 09:41:03.708362 Process 93 bytes request 09:41:03.708537 Got request: GET /verifiedserver HTTP/1.1 09:41:03.708660 Are-we-friendly question received 09:41:03.708946 Wrote request (93 bytes) input to log/43/server.input 09:41:03.709159 Identifying ourselves as friends 09:41:03.710029 Response sent (56 bytes) and written to log/43/server.response 09:41:03.710155 special request received, no persistency 09:41:03.710225 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41267... * Connected to 127.0.0.1 (127.0.0.1) port 41267 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41267 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73765 === End of file http_verify.out === Start of file server.cmd Testnum 791 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73765 === End of file server.response === Start of file valgrind791 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind791 test 0789...[--variable with a file and byte range out of file] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind789 ../src/curl -q --output log/58/curl789.out --include --trace-ascii log/58/trace789 --trace-config all --trace-time http://127.0.0.1:46727/789 --variable "name[75-85]@log/58/in789" --expand-data '{{name}}' > log/58/stdout789 2> log/58/stderr789 789: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 789 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind789 ../src/curl -q --output log/58/curl789.out --include --trace-ascii log/58/trace789 --trace-config all --trace-time http://127.0.0.1:46727/789 --variable "name[75-85]@log/58/in789" --expand-data '{{name}}' > log/58/stdout789 2> log/58/stderr789 === End of file commands.log === Start of file http_server.log 09:41:03.616815 ====> Client connect 09:41:03.617372 accept_connection 3 returned 4 09:41:03.617803 accept_connection 3 returned 0 09:41:03.617961 Read 93 bytes 09:41:03.618079 Process 93 bytes request 09:41:03.618175 Got request: GET /verifiedserver HTTP/1.1 09:41:03.618270 Are-we-friendly question received 09:41:03.618821 Wrote request (93 bytes) input to log/58/server.input 09:41:03.619086 Identifying ourselves as friends 09:41:03.619977 Response sent (56 bytes) and written to log/58/server.response 09:41:03.620084 special request received, no persistency 09:41:03.620165 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:46727... * Connected to 127.0.0.1 (127.0.0.1) port 46727 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46727 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73755 === End of file http_verify.out === Start of file in789 On the first Monday of the month of April, 1625, the market town of Meung === End of file in789 === Start of file server.cmd Testnum 789 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73755 === End of file server.response === Start of file valgrind789 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind789 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/http-server.pl --connect 127.0.0.1 --keepalive 30 --pidfile "log/30/server/http2_server.pid" --logfile "log/30/http2_server.log" --logdir "log/30" --portfile log/30/server/http2_server.port --config log/30/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: HTTP2 server is on PID 111735 port 33057 * pid http-proxy => 111735 111735 test 0744...[--netrc-file with a 127 byte line] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind744 ../src/curl -q --output log/30/curl744.out --include --trace-ascii log/30/trace744 --trace-config all --trace-time http://foo.host:43913/744 -p --proxy1.0 127.0.0.1:33057 -A "" --netrc-file log/30CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind792 ../src/curl -q --output log/17/curl792.out --include --trace-ascii log/17/trace792 --trace-config all --trace-time --netrc --netrc-file log/17/netrc792 ftp://127.0.0.1:33875/792 > log/17/stdout792 2> log/17/stderr792 /netrc744 > log/30/stdout744 2> log/30/stderr744 744: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 744 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind744 ../src/curl -q --output log/30/curl744.out --include --trace-ascii log/30/trace744 --trace-config all --trace-time http://foo.host:43913/744 -p --proxy1.0 127.0.0.1:33057 -A "" --netrc-file log/30/netrc744 > log/30/stdout744 2> log/30/stderr744 === End of file commands.log === Start of file http2_server.log 09:41:02.972152 Run as proxy, CONNECT to host 127.0.0.1 09:41:02.973085 Running HTTP IPv4 version on port 33057 09:41:02.973663 Wrote pid 111735 to log/30/server/http2_server.pid 09:41:02.974105 Wrote port 33057 to log/30/server/http2_server.port === End of file http2_server.log === Start of file http_server.log 09:41:02.687872 ====> Client connect 09:41:02.688155 accept_connection 3 returned 4 09:41:02.688310 accept_connection 3 returned 0 09:41:02.688431 Read 93 bytes 09:41:02.688640 Process 93 bytes request 09:41:02.688727 Got request: GET /verifiedserver HTTP/1.1 09:41:02.688795 Are-we-friendly question received 09:41:02.688998 Wrote request (93 bytes) input to log/30/server.input 09:41:02.689160 Identifying ourselves as friends 09:41:02.689913 Response sent (56 bytes) and written to log/30/server.response 09:41:02.690017 special request received, no persistency 09:41:02.690077 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43913... * Connected to 127.0.0.1 (127.0.0.1) port 43913 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43913 > User-Agent: curl/8.15.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 17 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73779 === End of file http_verify.out === Start of file netrc744 machine foo.host login foo password baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar === End of file netrc744 === Start of file server.cmd Testnum 744 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73779 === End of file server.response === Start of file valgrind744 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind744 test 0792...[.netrc with embedded NULL byte] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind792 ../src/curl -q --output log/17/curl792.out --include --trace-ascii log/17/trace792 --trace-config all --trace-time --netrc --netrc-file log/17/netrc792 ftp://127.0.0.1:33875/792 > log/17/stdout792 2> log/17/stderr792 792: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 792 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind792 ../src/curl -q --output log/17/curl792.out --include --trace-ascii log/17/trace792 --trace-config all --trace-time --netrc --netrc-file log/17/netrc792 ftp://127.0.0.1:33875/792 > log/17/stdout792 2> log/17/stderr792 === End of file commands.log === Start of file ftp_server.log 09:41:03.440542 ====> Client connect 09:41:03.442039 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:41:03.445151 < "USER anonymous" 09:41:03.446716 > "331 We are happy you popped in![CR][LF]" 09:41:03.448192 < "PASS ftp@example.com" 09:41:03.448715 > "230 Welcome you silly person[CR][LF]" 09:41:03.453095 < "PWD" 09:41:03.453918 > "257 "/" is current directory[CR][LF]" 09:41:03.456273 < "EPSV" 09:41:03.456644 ====> Passive DATA channel requested by client 09:41:03.457047 DATA sockfilt for passive data channel starting... 09:41:03.476937 DATA sockfilt for passive data channel started (pid 112632) 09:41:03.478090 DATA sockfilt for passive data channel listens on port 35957 09:41:03.478556 > "229 Entering Passive Mode (|||35957|)[LF]" 09:41:03.478898 Client has been notified that DATA conn will be accepted on port 35957 09:41:03.480719 Client connects to port 35957 09:41:03.481116 ====> Client established passive DATA connection on port 35957 09:41:03.481985 < "TYPE I" 09:41:03.482392 > "200 I modify TYPE as you wanted[CR][LF]" 09:41:03.485339 < "SIZE verifiedserver" 09:41:03.486951 > "213 17[CR][LF]" 09:41:03.488263 < "RETR verifiedserver" 09:41:03.488735 > "150 Binary junk (17 bytes).[CR][LF]" 09:41:03.489546 =====> Closing passive DATA connection... 09:41:03.496901 Server disconnects passive DATA connection 09:41:03.497247 Fancy that; client wants to DISC, too 09:41:03.498560 Server disconnected passive DATA connection 09:41:03.498926 DATA sockfilt for passive data channel quits (pid 112632) 09:41:03.500708 DATA sockfilt for passive data channel quit (pid 112632) 09:41:03.501029 =====> Closed passive DATA connection 09:41:03.501338 > "226 File transfer complete[CR][LF]" 09:41:03.532322 < "QUIT" 09:41:03.532732 > "221 bye bye baby[CR][LF]" 09:41:03.537865 MAIN sockfilt said DISC 09:41:03.538416 ====> Client disconnected 09:41:03.539135 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:41:03.693669 ====> Client connect 09:41:03.696104 Received DATA (on stdin) 09:41:03.696273 > 160 bytes data, server => client 09:41:03.696394 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:41:03.696642 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:41:03.696770 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:41:03.697724 < 16 bytes data, client => server 09:41:03.697883 'USER anonymous\r\n' 09:41:03.699280 Received DATA (on stdin) 09:41:03.699431 > 33 bytes data, server => client 09:41:03.699704 '331 We are happy you popped in!\r\n' 09:41:03.701002 < 22 bytes data, client => server 09:41:03.701145 'PASS ftp@example.com\r\n' 09:41:03.704382 Received DATA (on stdin) 09:41:03.704622 > 30 bytes data, server => client 09:41:03.704742 '230 Welcome you silly person\r\n' 09:41:03.705830 < 5 bytes data, clienCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind790 ../src/curl -q --output log/39/curl790.out --include --trace-ascii log/39/trace790 --trace-config all --trace-time http://127.0.0.1:42899/790 --variable "name[5-9]=0123456789abcdef" --expand-data '{{name}}' > log/39/stdout790 2> log/39/stderr790 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind793 ../src/curl -q --output log/31/curl793.out --include --trace-ascii log/31/trace793 --trace-config all --trace-time --netrc --netrc-file log/31/netrc793 ftp://127.0.0.1:40969/793 > log/31/stdout793 2> log/31/stderr793 t => server 09:41:03.706046 'PWD\r\n' 09:41:03.707195 Received DATA (on stdin) 09:41:03.707343 > 30 bytes data, server => client 09:41:03.707953 '257 "/" is current directory\r\n' 09:41:03.709139 < 6 bytes data, client => server 09:41:03.709329 'EPSV\r\n' 09:41:03.732282 Received DATA (on stdin) 09:41:03.732547 > 38 bytes data, server => client 09:41:03.732676 '229 Entering Passive Mode (|||35957|)\n' 09:41:03.734428 < 8 bytes data, client => server 09:41:03.734681 'TYPE I\r\n' 09:41:03.736128 Received DATA (on stdin) 09:41:03.736279 > 33 bytes data, server => client 09:41:03.736365 '200 I modify TYPE as you wanted\r\n' 09:41:03.737095 < 21 bytes data, client => server 09:41:03.737238 'SIZE verifiedserver\r\n' 09:41:03.739588 Received DATA (on stdin) 09:41:03.739748 > 8 bytes data, server => client 09:41:03.740661 '213 17\r\n' 09:41:03.741386 < 21 bytes data, client => server 09:41:03.741609 'RETR verifiedserver\r\n' 09:41:03.742547 Received DATA (on stdin) 09:41:03.742697 > 29 bytes data, server => client 09:41:03.742788 '150 Binary junk (17 bytes).\r\n' 09:41:03.757574 Received DATA (on stdin) 09:41:03.757853 > 28 bytes data, server => client 09:41:03.757964 '226 File transfer complete\r\n' 09:41:03.785418 < 6 bytes data, client => server 09:41:03.785663 'QUIT\r\n' 09:41:03.786567 Received DATA (on stdin) 09:41:03.786738 > 18 bytes data, server => client 09:41:03.786831 '221 bye bye baby\r\n' 09:41:03.790576 ====> Client disconnect 09:41:03.792157 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:41:03.725742 Running IPv4 version 09:41:03.726309 Listening on port 35957 09:41:03.727810 Wrote pid 112632 to log/17/server/ftp_sockdata.pid 09:41:03.727984 Received PING (on stdin) 09:41:03.731112 Received PORT (on stdin) 09:41:03.734152 ====> Client connect 09:41:03.745571 Received DATA (on stdin) 09:41:03.745738 > 17 bytes data, server => client 09:41:03.745855 'WE ROOLZ: 86383\r\n' 09:41:03.746806 ====> Client disconnect 09:41:03.751550 Received DISC (on stdin) 09:41:03.751734 Crikey! Client also wants to disconnect 09:41:03.751856 Received ACKD (on stdin) 09:41:03.752976 Received QUIT (on stdin) 09:41:03.753103 quits 09:41:03.753556 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc792 machine 127.0.0.1 login username password hello === End of file netrc792 === Start of file server.cmd Testnum 792 === End of file server.cmd === Start of file valgrind792 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind792 test 0790...[--variable with a byte range using plain assign] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind790 ../src/curl -q --output log/39/curl790.out --include --trace-ascii log/39/trace790 --trace-config all --trace-time http://127.0.0.1:42899/790 --variable "name[5-9]=0123456789abcdef" --expand-data '{{name}}' > log/39/stdout790 2> log/39/stderr790 790: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 790 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind790 ../src/curl -q --output log/39/curl790.out --include --trace-ascii log/39/trace790 --trace-config all --trace-time http://127.0.0.1:42899/790 --variable "name[5-9]=0123456789abcdef" --expand-data '{{name}}' > log/39/stdout790 2> log/39/stderr790 === End of file commands.log === Start of file http_server.log 09:41:03.692128 ====> Client connect 09:41:03.692733 accept_connection 3 returned 4 09:41:03.692981 accept_connection 3 returned 0 09:41:03.693734 Read 93 bytes 09:41:03.693913 Process 93 bytes request 09:41:03.694012 Got request: GET /verifiedserver HTTP/1.1 09:41:03.694099 Are-we-friendly question received 09:41:03.694379 Wrote request (93 bytes) input to log/39/server.input 09:41:03.694697 Identifying ourselves as friends 09:41:03.695355 Response sent (56 bytes) and written to log/39/server.response 09:41:03.695548 special request received, no persistency 09:41:03.695648 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:42899... * Connected to 127.0.0.1 (127.0.0.1) port 42899 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42899 > User-Agent: curl/8.15.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 17 < { [17 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 73769 === End of file http_verify.out === Start of file server.cmd Testnum 790 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 17 WE ROOLZ: 73769 === End of file server.response === Start of file valgrind790 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind790 test 0793...[.netrc with embedded NULL byte, with quoted token] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind793 ../src/curl -q --output log/31/curl793CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind812 ../src/curl -q --output log/30/curl812.out --include --trace-ascii log/30/trace812 --trace-config all --trace-time imap://127.0.0.1:35591 -u user:secret -X 'DELETE 812' > log/30/stdout812 2> log/30/stderr812 .out --include --trace-ascii log/31/trace793 --trace-config all --trace-time --netrc --netrc-file log/31/netrc793 ftp://127.0.0.1:40969/793 > log/31/stdout793 2> log/31/stderr793 793: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 793 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind793 ../src/curl -q --output log/31/curl793.out --include --trace-ascii log/31/trace793 --trace-config all --trace-time --netrc --netrc-file log/31/netrc793 ftp://127.0.0.1:40969/793 > log/31/stdout793 2> log/31/stderr793 === End of file commands.log === Start of file ftp_server.log 09:41:03.690100 ====> Client connect 09:41:03.692015 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 09:41:03.695147 < "USER anonymous" 09:41:03.696057 > "331 We are happy you popped in![CR][LF]" 09:41:03.698476 < "PASS ftp@example.com" 09:41:03.698915 > "230 Welcome you silly person[CR][LF]" 09:41:03.700971 < "PWD" 09:41:03.701357 > "257 "/" is current directory[CR][LF]" 09:41:03.703592 < "EPSV" 09:41:03.703976 ====> Passive DATA channel requested by client 09:41:03.704359 DATA sockfilt for passive data channel starting... 09:41:03.718589 DATA sockfilt for passive data channel started (pid 112763) 09:41:03.719624 DATA sockfilt for passive data channel listens on port 41787 09:41:03.720134 > "229 Entering Passive Mode (|||41787|)[LF]" 09:41:03.720339 Client has been notified that DATA conn will be accepted on port 41787 09:41:03.722383 Client connects to port 41787 09:41:03.722658 ====> Client established passive DATA connection on port 41787 09:41:03.723461 < "TYPE I" 09:41:03.723913 > "200 I modify TYPE as you wanted[CR][LF]" 09:41:03.725724 < "SIZE verifiedserver" 09:41:03.726516 > "213 18[CR][LF]" 09:41:03.728377 < "RETR verifiedserver" 09:41:03.728877 > "150 Binary junk (18 bytes).[CR][LF]" 09:41:03.729592 =====> Closing passive DATA connection... 09:41:03.730011 Server disconnects passive DATA connection 09:41:03.731876 Server disconnected passive DATA connection 09:41:03.732118 DATA sockfilt for passive data channel quits (pid 112763) 09:41:03.733676 DATA sockfilt for passive data channel quit (pid 112763) 09:41:03.733994 =====> Closed passive DATA connection 09:41:03.734846 > "226 File transfer complete[CR][LF]" 09:41:03.773701 < "QUIT" 09:41:03.774980 > "221 bye bye baby[CR][LF]" 09:41:03.779007 MAIN sockfilt said DISC 09:41:03.779880 ====> Client disconnected 09:41:03.780422 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 09:41:03.942937 ====> Client connect 09:41:03.946084 Received DATA (on stdin) 09:41:03.946232 > 160 bytes data, server => client 09:41:03.946323 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 09:41:03.946410 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 09:41:03.946590 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 09:41:03.947322 < 16 bytes data, client => server 09:41:03.947664 'USER anonymous\r\n' 09:41:03.949271 Received DATA (on stdin) 09:41:03.949427 > 33 bytes data, server => client 09:41:03.950095 '331 We are happy you popped in!\r\n' 09:41:03.951440 < 22 bytes data, client => server 09:41:03.951693 'PASS ftp@example.com\r\n' 09:41:03.952947 Received DATA (on stdin) 09:41:03.953077 > 30 bytes data, server => client 09:41:03.953169 '230 Welcome you silly person\r\n' 09:41:03.953790 < 5 bytes data, client => server 09:41:03.953936 'PWD\r\n' 09:41:03.955362 Received DATA (on stdin) 09:41:03.955651 > 30 bytes data, server => client 09:41:03.955781 '257 "/" is current directory\r\n' 09:41:03.956417 < 6 bytes data, client => server 09:41:03.956663 'EPSV\r\n' 09:41:03.974297 Received DATA (on stdin) 09:41:03.974435 > 38 bytes data, server => client 09:41:03.974634 '229 Entering Passive Mode (|||41787|)\n' 09:41:03.976217 < 8 bytes data, client => server 09:41:03.976385 'TYPE I\r\n' 09:41:03.977924 Received DATA (on stdin) 09:41:03.978049 > 33 bytes data, server => client 09:41:03.978131 '200 I modify TYPE as you wanted\r\n' 09:41:03.978906 < 21 bytes data, client => server 09:41:03.979083 'SIZE verifiedserver\r\n' 09:41:03.979901 Received DATA (on stdin) 09:41:03.980034 > 8 bytes data, server => client 09:41:03.980556 '213 18\r\n' 09:41:03.981307 < 21 bytes data, client => server 09:41:03.981572 'RETR verifiedserver\r\n' 09:41:03.983958 Received DATA (on stdin) 09:41:03.984086 > 29 bytes data, server => client 09:41:03.984171 '150 Binary junk (18 bytes).\r\n' 09:41:03.987965 Received DATA (on stdin) 09:41:03.988088 > 28 bytes data, server => client 09:41:03.988228 '226 File transfer complete\r\n' 09:41:04.026539 < 6 bytes data, client => server 09:41:04.026723 'QUIT\r\n' 09:41:04.027904 Received DATA (on stdin) 09:41:04.028047 > 18 bytes data, server => client 09:41:04.028206 '221 bye bye baby\r\n' 09:41:04.032364 ====> Client disconnect 09:41:04.033013 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 09:41:03.970821 Running IPv4 version 09:41:03.971380 Listening on port 41787 09:41:03.971849 Wrote pid 112763 to log/31/server/ftp_sockdata.pid 09:41:03.972009 Received PING (on stdin) 09:41:03.972827 Received PORT (on stdin) 09:41:03.975806 ====> Client connect 09:41:03.984557 Received DATA (on stdin) 09:41:03.984695 > 18 bytes data, server => client 09:41:03.984770 'WE ROOLZ: 100730\r\n' 09:41:03.985068 Received DISC (on stdin) 09:41:03.985205 ====> Client forcibly disconnected 09:41:03.986010 Received QUIT (on stdin) 09:41:03.986105 quits 09:41:03.986542 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file netrc793 machine 127.0.0.1 login username "password" hello === End of file netrc793 === Start of file server.cmd Testnum 793 === End of file server.cmd === Start of file valgrind793 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind793 test 0812...[IMAP DELETE mailbox (CUSTOMREQUEST)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind812 ../src/curl -q --output log/30/curl812.out --include --trace-ascii log/30/trace812 --trace-config all --trace-time imap://127.0.0.1:35591 -u user:secret -X 'DELETE 812' > log/30/stdout812 2> log/30/stderr812 812: protocol FAILED! There was no content at all in the filCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind800 ../src/curl -q --output log/10/curl800.out --include --trace-ascii log/10/trace800 --trace-config all --trace-time 'imap://127.0.0.1:41017/800/;MAILINDEX=1' -u '"user:sec"ret{' > log/10/stdout800 2> log/10/stderr800 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind799 ../src/curl -q --output log/35/curl799.out --include --trace-ascii log/35/trace799 --trace-config all --trace-time 'imap://127.0.0.1:44973/799/;MAILINDEX=1' -u user:secret --login-options AUTH=+LOGIN > log/35/stdout799 2> log/35/stderr799 e log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 812 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind812 ../src/curl -q --output log/30/curl812.out --include --trace-ascii log/30/trace812 --trace-config all --trace-time imap://127.0.0.1:35591 -u user:secret -X 'DELETE 812' > log/30/stdout812 2> log/30/stderr812 === End of file commands.log === Start of file imap_server.log 09:41:04.485643 ====> Client connect 09:41:04.488920 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:04.489882 < "A001 CAPABILITY" 09:41:04.491125 > "A001 BAD Command[CR][LF]" 09:41:04.492266 < "A002 LIST "verifiedserver" *" 09:41:04.492539 LIST_imap got "verifiedserver" * 09:41:04.493214 > "* LIST () "/" "WE ROOLZ: 106142"[CR][LF]" 09:41:04.493475 > "A002 OK LIST Completed[CR][LF]" 09:41:04.493637 return proof we are we 09:41:04.539037 < "A003 LOGOUT" 09:41:04.540198 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:04.544004 > "A003 OK LOGOUT completed[CR][LF]" 09:41:04.545003 MAIN sockfilt said DISC 09:41:04.545263 ====> Client disconnected 09:41:04.545685 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.738828 ====> Client connect 09:41:04.740561 Received DATA (on stdin) 09:41:04.740712 > 178 bytes data, server => client 09:41:04.741088 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:04.741237 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:04.741312 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:04.741376 'rve\r\n' 09:41:04.742117 < 17 bytes data, client => server 09:41:04.742259 'A001 CAPABILITY\r\n' 09:41:04.743949 Received DATA (on stdin) 09:41:04.744065 > 18 bytes data, server => client 09:41:04.744211 'A001 BAD Command\r\n' 09:41:04.745225 < 30 bytes data, client => server 09:41:04.745340 'A002 LIST "verifiedserver" *\r\n' 09:41:04.746608 Received DATA (on stdin) 09:41:04.746741 > 34 bytes data, server => client 09:41:04.747656 '* LIST () "/" "WE ROOLZ: 106142"\r\n' 09:41:04.747959 Received DATA (on stdin) 09:41:04.748082 > 24 bytes data, server => client 09:41:04.748159 'A002 OK LIST Completed\r\n' 09:41:04.791696 < 13 bytes data, client => server 09:41:04.791981 'A003 LOGOUT\r\n' 09:41:04.793131 Received DATA (on stdin) 09:41:04.793275 > 36 bytes data, server => client 09:41:04.793497 '* BYE curl IMAP server signing off\r\n' 09:41:04.794228 Received DATA (on stdin) 09:41:04.794355 > 26 bytes data, server => client 09:41:04.798029 'A003 OK LOGOUT completed\r\n' 09:41:04.798401 ====> Client disconnect 09:41:04.799780 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 812 === End of file server.cmd === Start of file valgrind812 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind812 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/10/server/imap_server.pid" --logfile "log/10/imap_server.log" --logdir "log/10" --portfile "log/10/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41017 (log/10/server/imap_server.port) RUN: IMAP server is PID 112722 port 41017 * pid imap => 112722 112722 test 0800...[IMAP FETCH message] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind800 ../src/curl -q --output log/10/curl800.out --include --trace-ascii log/10/trace800 --trace-config all --trace-time 'imap://127.0.0.1:41017/800/;MAILINDEX=1' -u '"user:sec"ret{' > log/10/stdout800 2> log/10/stderr800 800: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 800 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind800 ../src/curl -q --output log/10/curl800.out --include --trace-ascii log/10/trace800 --trace-config all --trace-time 'imap://127.0.0.1:41017/800/;MAILINDEX=1' -u '"user:sec"ret{' > log/10/stdout800 2> log/10/stderr800 === End of file commands.log === Start of file imap_server.log 09:41:04.190128 IMAP server listens on port IPv4/41017 09:41:04.191397 logged pid 112722 in log/10/server/imap_server.pid 09:41:04.191669 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.440740 Running IPv4 version 09:41:04.441357 Listening on port 41017 09:41:04.441974 Wrote pid 113042 to log/10/server/imap_sockfilt.pid 09:41:04.442365 Wrote port 41017 to log/10/server/imap_server.port 09:41:04.442847 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 800 === End of file server.cmd === Start of file valgrind800 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind8CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind801 ../src/curl -q --output log/6/curl801.out --include --trace-ascii log/6/trace801 --trace-config all --trace-time 'imap://127.0.0.1:37611/801/;MAILINDEX=123/;SECTION=1' -u user:secret > log/6/stdout801 2> log/6/stderr801 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind802 ../src/curl -q --output log/4/curl802.out --include --trace-ascii log/4/trace802 --trace-config all --trace-time 'imap://127.0.0.1:45445/802;UIDVALIDITY=3857529045/;MAILINDEX=123/;SECTION=TEXT' -u user:secret > log/4/stdout802 2> log/4/stderr802 00 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/35/server/imap_server.pid" --logfile "log/35/imap_server.log" --logdir "log/35" --portfile "log/35/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 44973 (log/35/server/imap_server.port) RUN: IMAP server is PID 112720 port 44973 * pid imap => 112720 112720 test 0799...[IMAP with --login-options 'AUTH=+LOGIN'] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind799 ../src/curl -q --output log/35/curl799.out --include --trace-ascii log/35/trace799 --trace-config all --trace-time 'imap://127.0.0.1:44973/799/;MAILINDEX=1' -u user:secret --login-options AUTH=+LOGIN > log/35/stdout799 2> log/35/stderr799 799: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 799 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind799 ../src/curl -q --output log/35/curl799.out --include --trace-ascii log/35/trace799 --trace-config all --trace-time 'imap://127.0.0.1:44973/799/;MAILINDEX=1' -u user:secret --login-options AUTH=+LOGIN > log/35/stdout799 2> log/35/stderr799 === End of file commands.log === Start of file imap_server.log 09:41:04.164914 IMAP server listens on port IPv4/44973 09:41:04.165850 logged pid 112720 in log/35/server/imap_server.pid 09:41:04.166134 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.416145 Running IPv4 version 09:41:04.416788 Listening on port 44973 09:41:04.417192 Wrote pid 113034 to log/35/server/imap_sockfilt.pid 09:41:04.417620 Wrote port 44973 to log/35/server/imap_server.port 09:41:04.417844 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH PLAIN REPLY LOGIN A002 OK LOGIN completed Testnum 799 === End of file server.cmd === Start of file valgrind799 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind799 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/6/server/imap_server.pid" --logfile "log/6/imap_server.log" --logdir "log/6" --portfile "log/6/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 37611 (log/6/server/imap_server.port) RUN: IMAP server is PID 112731 port 37611 * pid imap => 112731 112731 test 0801...[IMAP FETCH message by MAILINDEX and SECTION] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind801 ../src/curl -q --output log/6/curl801.out --include --trace-ascii log/6/trace801 --trace-config all --trace-time 'imap://127.0.0.1:37611/801/;MAILINDEX=123/;SECTION=1' -u user:secret > log/6/stdout801 2> log/6/stderr801 801: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 801 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind801 ../src/curl -q --output log/6/curl801.out --include --trace-ascii log/6/trace801 --trace-config all --trace-time 'imap://127.0.0.1:37611/801/;MAILINDEX=123/;SECTION=1' -u user:secret > log/6/stdout801 2> log/6/stderr801 === End of file commands.log === Start of file imap_server.log 09:41:04.056166 IMAP server listens on port IPv4/37611 09:41:04.057249 logged pid 112731 in log/6/server/imap_server.pid 09:41:04.057541 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.307363 Running IPv4 version 09:41:04.308071 Listening on port 37611 09:41:04.308542 Wrote pid 112977 to log/6/server/imap_sockfilt.pid 09:41:04.308900 Wrote port 37611 to log/6/server/imap_server.port 09:41:04.309075 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 801 === End of file server.cmd === Start of file valgrind801 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind801 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/4/server/imap_server.pid" --logfile "log/4/imap_server.log" --logdir "log/4" --portfile "log/4/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 45445 (log/4/server/imap_server.port) RUN: IMAP server is PID 112803 port 45445 * pid imap => 112803 112803 test 0802...[IMAP SELECT UIDVALIDITY Success] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind802 ../src/curl -q --output log/4/curl802.out --include --trace-ascii log/4/trace802 --trace-config all --trace-time 'imap://127.0.0.1:45445/802;UIDVALIDITY=3CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind803 ../src/curl -q --output log/54/curl803.out --include --trace-ascii log/54/trace803 --trace-config all --trace-time 'imap://127.0.0.1:39077/803;UIDVALIDITY=12345/;MAILINDEX=123' -u user:secret > log/54/stdout803 2> log/54/stderr803 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind807 ../src/curl -q --output log/13/curl807.out --include --trace-ascii log/13/trace807 --trace-config all --trace-time imap://127.0.0.1:38033 -u user:secret -X 'LSUB "807" *' > log/13/stdout807 2> log/13/stderr807 857529045/;MAILINDEX=123/;SECTION=TEXT' -u user:secret > log/4/stdout802 2> log/4/stderr802 802: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 802 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind802 ../src/curl -q --output log/4/curl802.out --include --trace-ascii log/4/trace802 --trace-config all --trace-time 'imap://127.0.0.1:45445/802;UIDVALIDITY=3857529045/;MAILINDEX=123/;SECTION=TEXT' -u user:secret > log/4/stdout802 2> log/4/stderr802 === End of file commands.log === Start of file imap_server.log 09:41:04.165123 IMAP server listens on port IPv4/45445 09:41:04.166152 logged pid 112803 in log/4/server/imap_server.pid 09:41:04.166436 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.415966 Running IPv4 version 09:41:04.416826 Listening on port 45445 09:41:04.417313 Wrote pid 113035 to log/4/server/imap_sockfilt.pid 09:41:04.417800 Wrote port 45445 to log/4/server/imap_server.port 09:41:04.417983 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 802 === End of file server.cmd === Start of file valgrind802 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind802 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/54/server/imap_server.pid" --logfile "log/54/imap_server.log" --logdir "log/54" --portfile "log/54/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 39077 (log/54/server/imap_server.port) RUN: IMAP server is PID 112844 port 39077 * pid imap => 112844 112844 test 0803...[IMAP SELECT UIDVALIDITY Failure] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind803 ../src/curl -q --output log/54/curl803.out --include --trace-ascii log/54/trace803 --trace-config all --trace-time 'imap://127.0.0.1:39077/803;UIDVALIDITY=12345/;MAILINDEX=123' -u user:secret > log/54/stdout803 2> log/54/stderr803 803: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 803 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind803 ../src/curl -q --output log/54/curl803.out --include --trace-ascii log/54/trace803 --trace-config all --trace-time 'imap://127.0.0.1:39077/803;UIDVALIDITY=12345/;MAILINDEX=123' -u user:secret > log/54/stdout803 2> log/54/stderr803 === End of file commands.log === Start of file imap_server.log 09:41:04.293311 IMAP server listens on port IPv4/39077 09:41:04.294589 logged pid 112844 in log/54/server/imap_server.pid 09:41:04.295000 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.544356 Running IPv4 version 09:41:04.544976 Listening on port 39077 09:41:04.545404 Wrote pid 113079 to log/54/server/imap_sockfilt.pid 09:41:04.545847 Wrote port 39077 to log/54/server/imap_server.port 09:41:04.546010 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 803 === End of file server.cmd === Start of file valgrind803 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind803 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/13/server/imap_server.pid" --logfile "log/13/imap_server.log" --logdir "log/13" --portfile "log/13/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 38033 (log/13/server/imap_server.port) RUN: IMAP server is PID 112884 port 38033 * pid imap => 112884 112884 test 0807...[IMAP LSUB mailbox] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind807 ../src/curl -q --output log/13/curl807.out --include --trace-ascii log/13/trace807 --trace-config all --trace-time imap://127.0.0.1:38033 -u user:secret -X 'LSUB "807" *' > log/13/stdout807 2> log/13/stderr807 807: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 807 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind807 ../src/curl -q --output log/13/curl807.out --include --trace-ascii log/13/trace807 --trace-config all --trace-time imap://127.0.0.1:38033 -u user:secret -X 'LSUB "807" *' > log/13/stdout807 2> log/13/stderr807 === End of file commands.log === Start of file imap_server.log 09:41:04.313262 IMAP server listens on port IPv4/38033 09:41:04.314409 logged pid 112884 in log/13/server/imap_server.pid 09:41:04.314715 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind815 ../src/curl -q --output log/31/curl815.out --include --trace-ascii log/31/trace815 --trace-config all --trace-time imap://127.0.0.1:38735/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:38735/815 -X CLOSE -u user:secret > log/31/stdout815 2> log/31/stderr815 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind804 ../src/curl -q --output log/63/curl804.out --include --trace-ascii log/63/trace804 --trace-config all --trace-time 'imap://127.0.0.1:43275/804/;MAILINDEX=123/;SECTION=1' 'imap://127.0.0.1:43275/804/;MAILINDEX=456/;SECTION=2.3' -u user:secret > log/63/stdout804 2> log/63/stderr804 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.564589 Running IPv4 version 09:41:04.565219 Listening on port 38033 09:41:04.565730 Wrote pid 113083 to log/13/server/imap_sockfilt.pid 09:41:04.566079 Wrote port 38033 to log/13/server/imap_server.port 09:41:04.566258 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 807 === End of file server.cmd === Start of file valgrind807 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind807 test 0815...[IMAP STORE - delete message (CUSTOMREQUEST)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind815 ../src/curl -q --output log/31/curl815.out --include --trace-ascii log/31/trace815 --trace-config all --trace-time imap://127.0.0.1:38735/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:38735/815 -X CLOSE -u user:secret > log/31/stdout815 2> log/31/stderr815 815: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 815 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind815 ../src/curl -q --output log/31/curl815.out --include --trace-ascii log/31/trace815 --trace-config all --trace-time imap://127.0.0.1:38735/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:38735/815 -X CLOSE -u user:secret > log/31/stdout815 2> log/31/stderr815 === End of file commands.log === Start of file imap_server.log 09:41:04.688336 ====> Client connect 09:41:04.689895 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:04.692917 < "A001 CAPABILITY" 09:41:04.694159 > "A001 BAD Command[CR][LF]" 09:41:04.695389 < "A002 LIST "verifiedserver" *" 09:41:04.695868 LIST_imap got "verifiedserver" * 09:41:04.697039 > "* LIST () "/" "WE ROOLZ: 106054"[CR][LF]" 09:41:04.698138 > "A002 OK LIST Completed[CR][LF]" 09:41:04.698378 return proof we are we 09:41:04.739822 < "A003 LOGOUT" 09:41:04.741063 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:04.741402 > "A003 OK LOGOUT completed[CR][LF]" 09:41:04.742664 MAIN sockfilt said DISC 09:41:04.743004 ====> Client disconnected 09:41:04.743472 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.941223 ====> Client connect 09:41:04.943978 Received DATA (on stdin) 09:41:04.944133 > 178 bytes data, server => client 09:41:04.944228 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:04.944316 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:04.944400 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:04.944592 'rve\r\n' 09:41:04.945410 < 17 bytes data, client => server 09:41:04.945624 'A001 CAPABILITY\r\n' 09:41:04.947036 Received DATA (on stdin) 09:41:04.947192 > 18 bytes data, server => client 09:41:04.947370 'A001 BAD Command\r\n' 09:41:04.948194 < 30 bytes data, client => server 09:41:04.948327 'A002 LIST "verifiedserver" *\r\n' 09:41:04.949936 Received DATA (on stdin) 09:41:04.950067 > 34 bytes data, server => client 09:41:04.950247 '* LIST () "/" "WE ROOLZ: 106054"\r\n' 09:41:04.951210 Received DATA (on stdin) 09:41:04.951349 > 24 bytes data, server => client 09:41:04.951578 'A002 OK LIST Completed\r\n' 09:41:04.992603 < 13 bytes data, client => server 09:41:04.992787 'A003 LOGOUT\r\n' 09:41:04.993957 Received DATA (on stdin) 09:41:04.994110 > 36 bytes data, server => client 09:41:04.994291 '* BYE curl IMAP server signing off\r\n' 09:41:04.995409 Received DATA (on stdin) 09:41:04.995627 > 26 bytes data, server => client 09:41:04.995724 'A003 OK LOGOUT completed\r\n' 09:41:04.996077 ====> Client disconnect 09:41:04.997570 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 815 === End of file server.cmd === Start of file valgrind815 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind815 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/63/server/imap_server.pid" --logfile "log/63/imap_server.log" --logdir "log/63" --portfile "log/63/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 43275 (log/63/server/imap_server.port) RUN: IMAP server is PID 112855 port 43275 * pid imap => 112855 112855 test 0804...[IMAP doesn't perform SELECT if re-using the same mailbox] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind804 ../src/curl -q --output log/63/curl804.out --include --trace-ascii log/63/trace804 --trace-config all --trace-time 'imap://127.0.0.1:43275/804/;MAILINDEX=123/;SECTION=1' 'imap://127.0.0.1:43275/804/;MAILINDEX=456/;SECTION=2.3' -u user:secret > log/63/stdout804 2> log/63/stderr804 804: protocol FAILED! There was no content at all in the CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind806 ../src/curl -q --output log/19/curl806.out --include --trace-ascii log/19/trace806 --trace-config all --trace-time imap://127.0.0.1:41739/806 -u user:secret > log/19/stdout806 2> log/19/stderr806 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind809 ../src/curl -q --output log/18/curl809.out --include --trace-ascii log/18/trace809 --trace-config all --trace-time imap://127.0.0.1:34679 -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)' > log/18/stdout809 2> log/18/stderr809 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind808 ../src/curl -q --output log/9/curl808.out --include --trace-ascii log/9/trace808 --trace-config all --trace-time imap://127.0.0.1:41403 -u user:secret -X 'EXAMINE 808' > log/9/stdout808 2> log/9/stderr808 file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 804 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind804 ../src/curl -q --output log/63/curl804.out --include --trace-ascii log/63/trace804 --trace-config all --trace-time 'imap://127.0.0.1:43275/804/;MAILINDEX=123/;SECTION=1' 'imap://127.0.0.1:43275/804/;MAILINDEX=456/;SECTION=2.3' -u user:secret > log/63/stdout804 2> log/63/stderr804 === End of file commands.log === Start of file imap_server.log 09:41:04.291527 IMAP server listens on port IPv4/43275 09:41:04.293360 logged pid 112855 in log/63/server/imap_server.pid 09:41:04.294015 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.542650 Running IPv4 version 09:41:04.543249 Listening on port 43275 09:41:04.543731 Wrote pid 113078 to log/63/server/imap_sockfilt.pid 09:41:04.544136 Wrote port 43275 to log/63/server/imap_server.port 09:41:04.544323 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 804 === End of file server.cmd === Start of file valgrind804 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind804 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/19/server/imap_server.pid" --logfile "log/19/imap_server.log" --logdir "log/19" --portfile "log/19/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41739 (log/19/server/imap_server.port) RUN: IMAP server is PID 112880 port 41739 * pid imap => 112880 112880 test 0806...[IMAP LIST mailbox] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind806 ../src/curl -q --output log/19/curl806.out --include --trace-ascii log/19/trace806 --trace-config all --trace-time imap://127.0.0.1:41739/806 -u user:secret > log/19/stdout806 2> log/19/stderr806 806: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 806 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind806 ../src/curl -q --output log/19/curl806.out --include --trace-ascii log/19/trace806 --trace-config all --trace-time imap://127.0.0.1:41739/806 -u user:secret > log/19/stdout806 2> log/19/stderr806 === End of file commands.log === Start of file imap_server.log 09:41:04.313712 IMAP server listens on port IPv4/41739 09:41:04.314618 logged pid 112880 in log/19/server/imap_server.pid 09:41:04.314982 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.565193 Running IPv4 version 09:41:04.565851 Listening on port 41739 09:41:04.566221 Wrote pid 113081 to log/19/server/imap_sockfilt.pid 09:41:04.566623 Wrote port 41739 to log/19/server/imap_server.port 09:41:04.566798 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 806 === End of file server.cmd === Start of file valgrind806 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind806 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/9/server/imap_server.pid" --logfile "log/9/imap_server.log" --logdir "log/9" --portfile "log/9/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41403 (log/9/server/imap_server.port) RUN: IMAP server is PID 112889 port 41403 * pid imap => 112889 112889 test 0808...[IMAP EXAMINE mailbox (CUSTOMREQUEST)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind808 ../src/curl -q --output log/9/curl808.out --include --trace-ascii log/9/trace808 --trace-config all --trace-time imap://127.0.0.1:41403 -u user:secret -X 'EXAMINE 808' > log/9/stdout808 2> log/9/stderr808 808: protocol FAILED! There was no content at all in the file log/9/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/9/ dir after test 808 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind808 ../src/curl -q --output log/9/curl808.out --include --trace-ascii log/9/trace808 --trace-config all --trace-time imap://127.0.0.1:41403 -u user:secret -X 'EXAMINE 808' > log/9/stdout808 2> log/9/stderr808 === End of file commands.log === Start of file imap_server.log 09:41:04.320407 IMAP server listens on port IPv4/41403 09:41:04.321462 logged pid 112889 in log/9/server/imap_server.pid 09:41:04.321735 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.571931 Running IPv4 version 09:41:04.572532 Listening on port 41403 09:41:04.572938 Wrote pid 113084 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind805 ../src/curl -q --output log/36/curl805.out --include --trace-ascii log/36/trace805 --trace-config all --trace-time imap://127.0.0.1:39751/805 -T log/36/upload805 -u user:secret > log/36/stdout805 2> log/36/stderr805 to log/9/server/imap_sockfilt.pid 09:41:04.573237 Wrote port 41403 to log/9/server/imap_server.port 09:41:04.573383 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 808 === End of file server.cmd === Start of file valgrind808 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind808 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/18/server/imap_server.pid" --logfile "log/18/imap_server.log" --logdir "log/18" --portfile "log/18/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 34679 (log/18/server/imap_server.port) RUN: IMAP server is PID 112972 port 34679 * pid imap => 112972 112972 test 0809...[IMAP mailbox STATUS (CUSTOMREQUEST)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind809 ../src/curl -q --output log/18/curl809.out --include --trace-ascii log/18/trace809 --trace-config all --trace-time imap://127.0.0.1:34679 -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)' > log/18/stdout809 2> log/18/stderr809 809: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 809 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind809 ../src/curl -q --output log/18/curl809.out --include --trace-ascii log/18/trace809 --trace-config all --trace-time imap://127.0.0.1:34679 -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)' > log/18/stdout809 2> log/18/stderr809 === End of file commands.log === Start of file imap_server.log 09:41:04.477704 IMAP server listens on port IPv4/34679 09:41:04.478896 logged pid 112972 in log/18/server/imap_server.pid 09:41:04.479213 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.728877 Running IPv4 version 09:41:04.729538 Listening on port 34679 09:41:04.730090 Wrote pid 113109 to log/18/server/imap_sockfilt.pid 09:41:04.730393 Wrote port 34679 to log/18/server/imap_server.port 09:41:04.730647 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 809 === End of file server.cmd === Start of file valgrind809 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind809 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/36/server/imap_server.pid" --logfile "log/36/imap_server.log" --logdir "log/36" --portfile "log/36/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 39751 (log/36/server/imap_server.port) RUN: IMAP server is PID 112863 port 39751 * pid imap => 112863 112863 test 0805...[IMAP APPEND message] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind805 ../src/curl -q --output log/36/curl805.out --include --trace-ascii log/36/trace805 --trace-config all --trace-time imap://127.0.0.1:39751/805 -T log/36/upload805 -u user:secret > log/36/stdout805 2> log/36/stderr805 805: protocol FAILED! There was no content at all in the file log/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 805 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind805 ../src/curl -q --output log/36/curl805.out --include --trace-ascii log/36/trace805 --trace-config all --trace-time imap://127.0.0.1:39751/805 -T log/36/upload805 -u user:secret > log/36/stdout805 2> log/36/stderr805 === End of file commands.log === Start of file imap_server.log 09:41:04.272494 IMAP server listens on port IPv4/39751 09:41:04.273966 logged pid 112863 in log/36/server/imap_server.pid 09:41:04.274318 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.523669 Running IPv4 version 09:41:04.524232 Listening on port 39751 09:41:04.524798 Wrote pid 113073 to log/36/server/imap_sockfilt.pid 09:41:04.525164 Wrote port 39751 to log/36/server/imap_server.port 09:41:04.525331 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 805 === End of file server.cmd === Start of file upload805 Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) From: Fred Foobar Subject: afternoon meeting To: joe@example.com Message-Id: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Hello Joe, do you think we can meet at 3:30 tomorrow? === End of file upload805 === Start of file valgrind805 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: inCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind811 ../src/curl -q --output log/58/curl811.out --include --trace-ascii log/58/trace811 --trace-config all --trace-time imap://127.0.0.1:36021 -u user:secret -X 'CREATE 811' > log/58/stdout811 2> log/58/stderr811 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind810 ../src/curl -q --output log/43/curl810.out --include --trace-ascii log/43/trace810 --trace-config all --trace-time imap://127.0.0.1:33087/810?NEW -u user:secret > log/43/stdout810 2> log/43/stderr810 an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind805 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/58/server/imap_server.pid" --logfile "log/58/imap_server.log" --logdir "log/58" --portfile "log/58/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 36021 (log/58/server/imap_server.port) RUN: IMAP server is PID 113069 port 36021 * pid imap => 113069 113069 test 0811...[IMAP CREATE mailbox (CUSTOMREQUEST)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind811 ../src/curl -q --output log/58/curl811.out --include --trace-ascii log/58/trace811 --trace-config all --trace-time imap://127.0.0.1:36021 -u user:secret -X 'CREATE 811' > log/58/stdout811 2> log/58/stderr811 811: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 811 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind811 ../src/curl -q --output log/58/curl811.out --include --trace-ascii log/58/trace811 --trace-config all --trace-time imap://127.0.0.1:36021 -u user:secret -X 'CREATE 811' > log/58/stdout811 2> log/58/stderr811 === End of file commands.log === Start of file imap_server.log 09:41:04.658202 IMAP server listens on port IPv4/36021 09:41:04.659202 logged pid 113069 in log/58/server/imap_server.pid 09:41:04.659478 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.909587 Running IPv4 version 09:41:04.910150 Listening on port 36021 09:41:04.910651 Wrote pid 113128 to log/58/server/imap_sockfilt.pid 09:41:04.911007 Wrote port 36021 to log/58/server/imap_server.port 09:41:04.911197 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 811 === End of file server.cmd === Start of file valgrind811 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind811 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/43/server/imap_server.pid" --logfile "log/43/imap_server.log" --logdir "log/43" --portfile "log/43/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 33087 (log/43/server/imap_server.port) RUN: IMAP server is PID 113056 port 33087 * pid imap => 113056 113056 test 0810...[IMAP SEARCH for NEW messages] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind810 ../src/curl -q --output log/43/curl810.out --include --trace-ascii log/43/trace810 --trace-config all --trace-time imap://127.0.0.1:33087/810?NEW -u user:secret > log/43/stdout810 2> log/43/stderr810 810: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 810 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind810 ../src/curl -q --output log/43/curl810.out --include --trace-ascii log/43/trace810 --trace-config all --trace-time imap://127.0.0.1:33087/810?NEW -u user:secret > log/43/stdout810 2> log/43/stderr810 === End of file commands.log === Start of file imap_server.log 09:41:04.684426 IMAP server listens on port IPv4/33087 09:41:04.685463 logged pid 113056 in log/43/server/imap_server.pid 09:41:04.685843 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.934598 Running IPv4 version 09:41:04.935180 Listening on port 33087 09:41:04.935770 Wrote pid 113132 to log/43/server/imap_sockfilt.pid 09:41:04.936197 Wrote port 33087 to log/43/server/imap_server.port 09:41:04.936359 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 810 === End of file server.cmd === Start of file valgrind810 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind813 ../src/curl -q --output log/17/curl813.out --include --trace-ascii log/17/trace813 --trace-config all --trace-time imap://127.0.0.1:36033 -u user:secret -X 'RENAME 666 813' > log/17/stdout813 2> log/17/stderr813 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind818 ../src/curl -q --output log/35/curl818.out --include --trace-ascii log/35/trace818 --trace-config all --trace-time imap://127.0.0.1:44973 -X NOOP -u user:secret > log/35/stdout818 2> log/35/stderr818 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind816 ../src/curl -q --output log/30/curl816.out --include --trace-ascii log/30/trace816 --trace-config all --trace-time imap://127.0.0.1:35591/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:35591/816 -X EXPUNGE -u user:secret > log/30/stdout816 2> log/30/stderr816 bg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind810 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/17/server/imap_server.pid" --logfile "log/17/imap_server.log" --logdir "log/17" --portfile "log/17/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 36033 (log/17/server/imap_server.port) RUN: IMAP server is PID 113100 port 36033 * pid imap => 113100 113100 test 0813...[IMAP RENAME mailbox (CUSTOMREQUEST)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind813 ../src/curl -q --output log/17/curl813.out --include --trace-ascii log/17/trace813 --trace-config all --trace-time imap://127.0.0.1:36033 -u user:secret -X 'RENAME 666 813' > log/17/stdout813 2> log/17/stderr813 813: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 813 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind813 ../src/curl -q --output log/17/curl813.out --include --trace-ascii log/17/trace813 --trace-config all --trace-time imap://127.0.0.1:36033 -u user:secret -X 'RENAME 666 813' > log/17/stdout813 2> log/17/stderr813 === End of file commands.log === Start of file imap_server.log 09:41:04.805943 IMAP server listens on port IPv4/36033 09:41:04.806971 logged pid 113100 in log/17/server/imap_server.pid 09:41:04.807258 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.057177 Running IPv4 version 09:41:04.057856 Listening on port 36033 09:41:04.058304 Wrote pid 113177 to log/17/server/imap_sockfilt.pid 09:41:04.058744 Wrote port 36033 to log/17/server/imap_server.port 09:41:04.058921 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 813 === End of file server.cmd === Start of file valgrind813 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind813 test 0818...[IMAP NOOP (CUSTOMREQUEST)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind818 ../src/curl -q --output log/35/curl818.out --include --trace-ascii log/35/trace818 --trace-config all --trace-time imap://127.0.0.1:44973 -X NOOP -u user:secret > log/35/stdout818 2> log/35/stderr818 818: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 818 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind818 ../src/curl -q --output log/35/curl818.out --include --trace-ascii log/35/trace818 --trace-config all --trace-time imap://127.0.0.1:44973 -X NOOP -u user:secret > log/35/stdout818 2> log/35/stderr818 === End of file commands.log === Start of file imap_server.log 09:41:05.511291 ====> Client connect 09:41:05.515282 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.517395 < "A001 CAPABILITY" 09:41:05.518106 > "A001 BAD Command[CR][LF]" 09:41:05.520258 < "A002 LIST "verifiedserver" *" 09:41:05.520594 LIST_imap got "verifiedserver" * 09:41:05.521340 > "* LIST () "/" "WE ROOLZ: 112720"[CR][LF]" 09:41:05.521634 > "A002 OK LIST Completed[CR][LF]" 09:41:05.521924 return proof we are we 09:41:05.564690 < "A003 LOGOUT" 09:41:05.565990 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:05.569941 > "A003 OK LOGOUT completed[CR][LF]" 09:41:05.571104 MAIN sockfilt said DISC 09:41:05.571391 ====> Client disconnected 09:41:05.571960 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:05.763839 ====> Client connect 09:41:05.767344 Received DATA (on stdin) 09:41:05.767694 > 178 bytes data, server => client 09:41:05.768005 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:05.768143 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:05.768226 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:05.768301 'rve\r\n' 09:41:05.769357 < 17 bytes data, client => server 09:41:05.769669 'A001 CAPABILITY\r\n' 09:41:05.772128 Received DATA (on stdin) 09:41:05.772262 > 18 bytes data, server => client 09:41:05.772346 'A001 BAD Command\r\n' 09:41:05.773099 < 30 bytes data, client => server 09:41:05.773239 'A002 LIST "verifiedserver" *\r\n' 09:41:05.774706 Received DATA (on stdin) 09:41:05.774848 > 34 bytes data, server => client 09:41:05.775929 '* LIST () "/" "WE ROOLZ: 112720"\r\n' 09:41:05.776495 Received DATA (on stdin) 09:41:05.776657 > 24 bytes data, server => client 09:41:05.776768 'A002 OK LIST Completed\r\n' 09:41:05.817559 < 13 bytes data, client => server 09:41:05.817729 'A003 LOGOUT\r\n' 09:41:05.818897 Received DATA (on stdin) 09:41:05.819049 > 36 bytes data, server => client 09:41:05.819225 '* BYE curl IMAP server signing off\r\n' 09:41:05.820042 Received DATA (on stdin) 09:41:05.820182 > 26 bytes data, server => client 09:41:05.824006 'A003 OK LOGOUT completed\r\n' 09:41:05.824431 ====> Client disconnect 09:41:05.825993 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 818 === End of file server.cmd === Start of file valgrind818 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: tCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind817 ../src/curl -q --output log/10/curl817.out --include --trace-ascii log/10/trace817 --trace-config all --trace-time imap://127.0.0.1:41017 -u user:secret -X 'COPY 123 817' > log/10/stdout817 2> log/10/stderr817 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind814 ../src/curl -q --output log/39/curl814.out --include --trace-ascii log/39/trace814 --trace-config all --trace-time imap://127.0.0.1:38285/814 -u user:secret -X 'CHECK' > log/39/stdout814 2> log/39/stderr814 hat exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind818 test 0816...[IMAP STORE - delete message with confirmation (CUSTOMREQUEST)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind816 ../src/curl -q --output log/30/curl816.out --include --trace-ascii log/30/trace816 --trace-config all --trace-time imap://127.0.0.1:35591/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:35591/816 -X EXPUNGE -u user:secret > log/30/stdout816 2> log/30/stderr816 816: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 816 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind816 ../src/curl -q --output log/30/curl816.out --include --trace-ascii log/30/trace816 --trace-config all --trace-time imap://127.0.0.1:35591/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:35591/816 -X EXPUNGE -u user:secret > log/30/stdout816 2> log/30/stderr816 === End of file commands.log === Start of file imap_server.log 09:41:05.357929 ====> Client connect 09:41:05.360595 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.364006 < "A001 CAPABILITY" 09:41:05.364545 > "A001 BAD Command[CR][LF]" 09:41:05.366516 < "A002 LIST "verifiedserver" *" 09:41:05.366983 LIST_imap got "verifiedserver" * 09:41:05.367419 > "* LIST () "/" "WE ROOLZ: 106142"[CR][LF]" 09:41:05.367692 > "A002 OK LIST Completed[CR][LF]" 09:41:05.368026 return proof we are we 09:41:05.411417 < "A003 LOGOUT" 09:41:05.415571 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:05.416013 > "A003 OK LOGOUT completed[CR][LF]" 09:41:05.421902 MAIN sockfilt said DISC 09:41:05.422843 ====> Client disconnected 09:41:05.423562 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:05.610176 ====> Client connect 09:41:05.614412 Received DATA (on stdin) 09:41:05.614703 > 178 bytes data, server => client 09:41:05.614827 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:05.614922 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:05.615016 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:05.615112 'rve\r\n' 09:41:05.616309 < 17 bytes data, client => server 09:41:05.616588 'A001 CAPABILITY\r\n' 09:41:05.618574 Received DATA (on stdin) 09:41:05.618732 > 18 bytes data, server => client 09:41:05.618823 'A001 BAD Command\r\n' 09:41:05.619658 < 30 bytes data, client => server 09:41:05.619818 'A002 LIST "verifiedserver" *\r\n' 09:41:05.621655 Received DATA (on stdin) 09:41:05.621836 > 34 bytes data, server => client 09:41:05.621948 '* LIST () "/" "WE ROOLZ: 106142"\r\n' 09:41:05.622283 Received DATA (on stdin) 09:41:05.622431 > 24 bytes data, server => client 09:41:05.622616 'A002 OK LIST Completed\r\n' 09:41:05.663753 < 13 bytes data, client => server 09:41:05.663933 'A003 LOGOUT\r\n' 09:41:05.670621 Received DATA (on stdin) 09:41:05.670894 > 36 bytes data, server => client 09:41:05.670999 '* BYE curl IMAP server signing off\r\n' 09:41:05.671667 Received DATA (on stdin) 09:41:05.671811 > 26 bytes data, server => client 09:41:05.671891 'A003 OK LOGOUT completed\r\n' 09:41:05.672226 ====> Client disconnect 09:41:05.676125 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 816 === End of file server.cmd === Start of file valgrind816 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind816 test 0817...[IMAP COPY message to mailbox (CUSTOMREQUEST)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind817 ../src/curl -q --output log/10/curl817.out --include --trace-ascii log/10/trace817 --trace-config all --trace-time imap://127.0.0.1:41017 -u user:secret -X 'COPY 123 817' > log/10/stdout817 2> log/10/stderr817 817: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 817 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind817 ../src/curl -q --output log/10/curl817.out --include --trace-ascii log/10/trace817 --trace-config all --trace-time imap://127.0.0.1:41017 -u user:secret -X 'COPY 123 817' > log/10/stdout817 2> log/10/stderr817 === End of file commands.log === Start of file imap_server.log 09:41:05.466898 ====> Client connect 09:41:05.469422 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.472297 < "A001 CAPABILITY" 09:41:05.473134 > "A001 BAD Command[CR][LF]" 09:41:05.477377 < "A002 LIST "verifiedserver" *" 09:41:05.478837 LIST_imap got "verifiedserver" * 09:41:05.479263 > "* LIST () "/" "WE ROOLZ: 112722"[CR][LF]" 09:41:05.479566 > "A002 OK LIST Completed[CR][LF]" 09:41:05.479867 return proof we are we 09:41:05.523976 < "A003 LOGOUT" 09:41:05.525162 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:05.528936 > "A003 OK LOGOUT completed[CR][LF]" 09:41:05.530021 MAIN sockfilt said DISC 09:41:05.530294 ====> Client disconnected 09:41:05.530811 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:05.719322 ====> Client connect 09:41:05.723201 Received DATA (on stdin) 09:41:05.723386 > 178 bytes data, server => client 09:41:05.723591 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:05.723725 ' CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind819 ../src/curl -q --output log/6/curl819.out --include --trace-ascii log/6/trace819 --trace-config all --trace-time 'imap://127.0.0.1:37611/819/;MAILINDEX=1' -u user:secret > log/6/stdout819 2> log/6/stderr819 / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:05.723811 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:05.723893 'rve\r\n' 09:41:05.724852 < 17 bytes data, client => server 09:41:05.725015 'A001 CAPABILITY\r\n' 09:41:05.728563 Received DATA (on stdin) 09:41:05.728746 > 18 bytes data, server => client 09:41:05.728847 'A001 BAD Command\r\n' 09:41:05.729624 < 30 bytes data, client => server 09:41:05.729809 'A002 LIST "verifiedserver" *\r\n' 09:41:05.733020 Received DATA (on stdin) 09:41:05.733188 > 34 bytes data, server => client 09:41:05.733284 '* LIST () "/" "WE ROOLZ: 112722"\r\n' 09:41:05.733670 Received DATA (on stdin) 09:41:05.733805 > 24 bytes data, server => client 09:41:05.733886 'A002 OK LIST Completed\r\n' 09:41:05.776778 < 13 bytes data, client => server 09:41:05.776945 'A003 LOGOUT\r\n' 09:41:05.778070 Received DATA (on stdin) 09:41:05.778218 > 36 bytes data, server => client 09:41:05.778407 '* BYE curl IMAP server signing off\r\n' 09:41:05.779177 Received DATA (on stdin) 09:41:05.779294 > 26 bytes data, server => client 09:41:05.782977 'A003 OK LOGOUT completed\r\n' 09:41:05.783373 ====> Client disconnect 09:41:05.784861 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 817 === End of file server.cmd === Start of file valgrind817 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind817 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/39/server/imap_server.pid" --logfile "log/39/imap_server.log" --logdir "log/39" --portfile "log/39/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 38285 (log/39/server/imap_server.port) RUN: IMAP server is PID 113110 port 38285 * pid imap => 113110 113110 test 0814...[IMAP CHECK mailbox (CUSTOMREQUEST)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind814 ../src/curl -q --output log/39/curl814.out --include --trace-ascii log/39/trace814 --trace-config all --trace-time imap://127.0.0.1:38285/814 -u user:secret -X 'CHECK' > log/39/stdout814 2> log/39/stderr814 814: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 814 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind814 ../src/curl -q --output log/39/curl814.out --include --trace-ascii log/39/trace814 --trace-config all --trace-time imap://127.0.0.1:38285/814 -u user:secret -X 'CHECK' > log/39/stdout814 2> log/39/stderr814 === End of file commands.log === Start of file imap_server.log 09:41:04.887403 IMAP server listens on port IPv4/38285 09:41:04.888501 logged pid 113110 in log/39/server/imap_server.pid 09:41:04.888855 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:04.138535 Running IPv4 version 09:41:04.139173 Listening on port 38285 09:41:04.139807 Wrote pid 113230 to log/39/server/imap_sockfilt.pid 09:41:04.140221 Wrote port 38285 to log/39/server/imap_server.port 09:41:04.140393 Received PING (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 814 === End of file server.cmd === Start of file valgrind814 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind814 test 0819...[IMAP plain authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind819 ../src/curl -q --output log/6/curl819.out --include --trace-ascii log/6/trace819 --trace-config all --trace-time 'imap://127.0.0.1:37611/819/;MAILINDEX=1' -u user:secret > log/6/stdout819 2> log/6/stderr819 819: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 819 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind819 ../src/curl -q --output log/6/curl819.out --include --trace-ascii log/6/trace819 --trace-config all --trace-time 'imap://127.0.0.1:37611/819/;MAILINDEX=1' -u user:secret > log/6/stdout819 2> log/6/stderr819 === End of file commands.log === Start of file imap_server.log 09:41:05.676429 ====> Client connect 09:41:05.680997 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.683683 < "A001 CAPABILITY" 09:41:05.684198 > "A001 BAD Command[CR][LF]" 09:41:05.686855 < "A002 LIST "verifiedserver" *" 09:41:05.687260 LIST_imap got "verifiedserver" * 09:41:05.690971 > "* LIST () "/" "WE ROOLZ: 112731"[CR][LF]" 09:41:05.691358 > "A002 OK LIST Completed[CR][LF]" 09:41:05.691601 return proof we are we 09:41:05.735665 < "A003 LOGOUT" 09:41:05.736134 > "* BYE curl IMAP servCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind822 ../src/curl -q --output log/13/curl822.out --include --trace-ascii log/13/trace822 --trace-config all --trace-time 'imap://127.0.0.1:38033/822/;MAILINDEX=1' -u testuser:testpass > log/13/stdout822 2> log/13/stderr822 er signing off[CR][LF]" 09:41:05.736430 > "A003 OK LOGOUT completed[CR][LF]" 09:41:05.739409 MAIN sockfilt said DISC 09:41:05.739711 ====> Client disconnected 09:41:05.740236 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:05.929607 ====> Client connect 09:41:05.931318 Received DATA (on stdin) 09:41:05.931589 > 178 bytes data, server => client 09:41:05.935057 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:05.935195 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:05.935286 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:05.935357 'rve\r\n' 09:41:05.936186 < 17 bytes data, client => server 09:41:05.936340 'A001 CAPABILITY\r\n' 09:41:05.938691 Received DATA (on stdin) 09:41:05.938839 > 18 bytes data, server => client 09:41:05.938934 'A001 BAD Command\r\n' 09:41:05.939654 < 30 bytes data, client => server 09:41:05.939805 'A002 LIST "verifiedserver" *\r\n' 09:41:05.941357 Received DATA (on stdin) 09:41:05.941591 > 34 bytes data, server => client 09:41:05.945712 '* LIST () "/" "WE ROOLZ: 112731"\r\n' 09:41:05.946094 Received DATA (on stdin) 09:41:05.946256 > 24 bytes data, server => client 09:41:05.946353 'A002 OK LIST Completed\r\n' 09:41:05.988609 < 13 bytes data, client => server 09:41:05.988765 'A003 LOGOUT\r\n' 09:41:05.991551 Received DATA (on stdin) 09:41:05.991707 > 36 bytes data, server => client 09:41:05.991800 '* BYE curl IMAP server signing off\r\n' 09:41:05.992101 Received DATA (on stdin) 09:41:05.992251 > 26 bytes data, server => client 09:41:05.992325 'A003 OK LOGOUT completed\r\n' 09:41:05.992825 ====> Client disconnect 09:41:05.998632 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH PLAIN REPLY AUTHENTICATE + REPLY AHVzZXIAc2VjcmV0 A002 OK AUTHENTICATE completed Testnum 819 === End of file server.cmd === Start of file valgrind819 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind819 test 0822...[IMAP NTLM authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind822 ../src/curl -q --output log/13/curl822.out --include --trace-ascii log/13/trace822 --trace-config all --trace-time 'imap://127.0.0.1:38033/822/;MAILINDEX=1' -u testuser:testpass > log/13/stdout822 2> log/13/stderr822 822: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 822 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind822 ../src/curl -q --output log/13/curl822.out --include --trace-ascii log/13/trace822 --trace-config all --trace-time 'imap://127.0.0.1:38033/822/;MAILINDEX=1' -u testuser:testpass > log/13/stdout822 2> log/13/stderr822 === End of file commands.log === Start of file imap_server.log 09:41:05.790326 ====> Client connect 09:41:05.791946 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.794178 < "A001 CAPABILITY" 09:41:05.794621 > "A001 BAD Command[CR][LF]" 09:41:05.797016 < "A002 LIST "verifiedserver" *" 09:41:05.797360 LIST_imap got "verifiedserver" * 09:41:05.798575 > "* LIST () "/" "WE ROOLZ: 112884"[CR][LF]" 09:41:05.799320 > "A002 OK LIST Completed[CR][LF]" 09:41:05.799539 return proof we are we 09:41:05.840643 < "A003 LOGOUT" 09:41:05.841490 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:05.841899 > "A003 OK LOGOUT completed[CR][LF]" 09:41:05.847282 MAIN sockfilt said DISC 09:41:05.848044 ====> Client disconnected 09:41:05.848557 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.043336 ====> Client connect 09:41:06.045587 Received DATA (on stdin) 09:41:06.045750 > 178 bytes data, server => client 09:41:06.045838 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.045919 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.045991 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.046076 'rve\r\n' 09:41:06.046910 < 17 bytes data, client => server 09:41:06.047050 'A001 CAPABILITY\r\n' 09:41:06.048761 Received DATA (on stdin) 09:41:06.048922 > 18 bytes data, server => client 09:41:06.049021 'A001 BAD Command\r\n' 09:41:06.049822 < 30 bytes data, client => server 09:41:06.049972 'A002 LIST "verifiedserver" *\r\n' 09:41:06.051407 Received DATA (on stdin) 09:41:06.051629 > 34 bytes data, server => client 09:41:06.051826 '* LIST () "/" "WE ROOLZ: 112884"\r\n' 09:41:06.052694 Received DATA (on stdin) 09:41:06.052831 > 24 bytes data, server => client 09:41:06.053536 'A002 OK LIST Completed\r\n' 09:41:06.093376 < 13 bytes data, client => server 09:41:06.093626 'A003 LOGOUT\r\n' 09:41:06.094840 Received DATA (on stdin) 09:41:06.094991 > 36 bytes data, server => client 09:41:06.095919 '* BYE curl IMAP server signing off\r\n' 09:41:06.096383 Received DATA (on stdin) 09:41:06.096595 > 26 bytes data, server => client 09:41:06.096688 'A003 OK LOGOUT completed\r\n' 09:41:06.100655 ====> Client disconnect 09:41:06.101325 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH NTLM REPLY AUTHENTICATE + REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= A002 OK AUTHENTICATE completed Testnum 822 === End of file server.cmd === Start of file valgrind822 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on thisCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind825 ../src/curl -q --output log/63/curl825.out --include --trace-ascii log/63/trace825 --trace-config all --trace-time 'imap://127.0.0.1:43275/825/;MAILINDEX=1' -u user:secret > log/63/stdout825 2> log/63/stderr825 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind828 ../src/curl -q --output log/9/curl828.out --include --trace-ascii log/9/trace828 --trace-config all --trace-time 'imap://127.0.0.1:41403/828/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout828 2> log/9/stderr828 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind820 ../src/curl -q --output log/4/curl820.out --include --trace-ascii log/4/trace820 --trace-config all --trace-time 'imap://127.0.0.1:45445/820/;MAILINDEX=1' -u user:secret > log/4/stdout820 2> log/4/stderr820 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind821 ../src/curl -q --output log/54/curl821.out --include --trace-ascii log/54/trace821 --trace-config all --trace-time 'imap://127.0.0.1:39077/821/;MAILINDEX=1' -u user:secret > log/54/stdout821 2> log/54/stderr821 machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind822 test 0825...[IMAP plain authentication with initial response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind825 ../src/curl -q --output log/63/curl825.out --include --trace-ascii log/63/trace825 --trace-config all --trace-time 'imap://127.0.0.1:43275/825/;MAILINDEX=1' -u user:secret > log/63/stdout825 2> log/63/stderr825 825: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 825 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind825 ../src/curl -q --output log/63/curl825.out --include --trace-ascii log/63/trace825 --trace-config all --trace-time 'imap://127.0.0.1:43275/825/;MAILINDEX=1' -u user:secret > log/63/stdout825 2> log/63/stderr825 === End of file commands.log === Start of file imap_server.log 09:41:05.868701 ====> Client connect 09:41:05.870316 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.873302 < "A001 CAPABILITY" 09:41:05.873792 > "A001 BAD Command[CR][LF]" 09:41:05.876046 < "A002 LIST "verifiedserver" *" 09:41:05.876433 LIST_imap got "verifiedserver" * 09:41:05.876919 > "* LIST () "/" "WE ROOLZ: 112855"[CR][LF]" 09:41:05.877247 > "A002 OK LIST Completed[CR][LF]" 09:41:05.877459 return proof we are we 09:41:05.923041 < "A003 LOGOUT" 09:41:05.923432 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:05.923722 > "A003 OK LOGOUT completed[CR][LF]" 09:41:05.927186 MAIN sockfilt said DISC 09:41:05.927865 ====> Client disconnected 09:41:05.928387 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.119783 ====> Client connect 09:41:06.124379 Received DATA (on stdin) 09:41:06.124676 > 178 bytes data, server => client 09:41:06.124798 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.124896 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.124978 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.125052 'rve\r\n' 09:41:06.126046 < 17 bytes data, client => server 09:41:06.126227 'A001 CAPABILITY\r\n' 09:41:06.127827 Received DATA (on stdin) 09:41:06.127961 > 18 bytes data, server => client 09:41:06.128054 'A001 BAD Command\r\n' 09:41:06.128732 < 30 bytes data, client => server 09:41:06.128867 'A002 LIST "verifiedserver" *\r\n' 09:41:06.131422 Received DATA (on stdin) 09:41:06.131640 > 34 bytes data, server => client 09:41:06.131733 '* LIST () "/" "WE ROOLZ: 112855"\r\n' 09:41:06.131993 Received DATA (on stdin) 09:41:06.132130 > 24 bytes data, server => client 09:41:06.132207 'A002 OK LIST Completed\r\n' 09:41:06.175675 < 13 bytes data, client => server 09:41:06.175954 'A003 LOGOUT\r\n' 09:41:06.177849 Received DATA (on stdin) 09:41:06.177989 > 36 bytes data, server => client 09:41:06.178087 '* BYE curl IMAP server signing off\r\n' 09:41:06.178392 Received DATA (on stdin) 09:41:06.178637 > 26 bytes data, server => client 09:41:06.178757 'A003 OK LOGOUT completed\r\n' 09:41:06.180572 ====> Client disconnect 09:41:06.181196 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH PLAIN CAPA SASL-IR REPLY AUTHENTICATE A002 OK AUTHENTICATE completed Testnum 825 === End of file server.cmd === Start of file valgrind825 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind825 test 0820...[IMAP login authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind820 ../src/curl -q --output log/4/curl820.out --include --trace-ascii log/4/trace820 --trace-config all --trace-time 'imap://127.0.0.1:45445/820/;MAILINDEX=1' -u user:secret > log/4/stdout820 2> log/4/stderr820 820: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 820 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind820 ../src/curl -q --output log/4/curl820.out --include --trace-ascii log/4/trace820 --trace-config all --trace-time 'imap://127.0.0.1:45445/820/;MAILINDEX=1' -u user:secret > log/4/stdout820 2> log/4/stderr820 === End of file commands.log === Start of file imap_server.log 09:41:05.745557 ====> Client connect 09:41:05.747089 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.753006 < "A001 CAPABILITY" 09:41:05.754331 > "A001 BAD Command[CR][LF]" 09:41:05.755571 < "A002 LIST "verifiedserver" *" 09:41:05.756044 LIST_imap got "verifiedserver" * 09:41:05.756946 > "* LIST () "/" "WE ROOLZ: 112803"[CR][LF]" 09:41:05.757280 > "A002 OK LIST Completed[CR][LF]" 09:41:05.757486 return proof we are we 09:41:05.800820 < "A003 LOGOUT" 09:41:05.802250 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:05.802659 > "A003 OK LOGOUT completed[CR][LF]" 09:41:05.807485 MAIN sockfilt said DISC 09:41:05.807868 ====> Client disconnected 09:41:05.808399 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:05.998649 ====> Client connect 09:41:06.000763 Received DATA (on stdin) 09:41:06.000935 > 178 bytes data, server => client 09:4CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind826 ../src/curl -q --output log/19/curl826.out --include --trace-ascii log/19/trace826 --trace-config all --trace-time 'imap://127.0.0.1:41739/826/;MAILINDEX=1' -u user:secret > log/19/stdout826 2> log/19/stderr826 1:06.001043 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.001144 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.001271 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.001368 'rve\r\n' 09:41:06.005693 < 17 bytes data, client => server 09:41:06.005868 'A001 CAPABILITY\r\n' 09:41:06.007163 Received DATA (on stdin) 09:41:06.007335 > 18 bytes data, server => client 09:41:06.007591 'A001 BAD Command\r\n' 09:41:06.008315 < 30 bytes data, client => server 09:41:06.008527 'A002 LIST "verifiedserver" *\r\n' 09:41:06.010146 Received DATA (on stdin) 09:41:06.010296 > 34 bytes data, server => client 09:41:06.011529 '* LIST () "/" "WE ROOLZ: 112803"\r\n' 09:41:06.011895 Received DATA (on stdin) 09:41:06.012042 > 24 bytes data, server => client 09:41:06.012140 'A002 OK LIST Completed\r\n' 09:41:06.053553 < 13 bytes data, client => server 09:41:06.053747 'A003 LOGOUT\r\n' 09:41:06.055006 Received DATA (on stdin) 09:41:06.055174 > 36 bytes data, server => client 09:41:06.055393 '* BYE curl IMAP server signing off\r\n' 09:41:06.056580 Received DATA (on stdin) 09:41:06.056750 > 26 bytes data, server => client 09:41:06.056864 'A003 OK LOGOUT completed\r\n' 09:41:06.060879 ====> Client disconnect 09:41:06.062438 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH LOGIN REPLY AUTHENTICATE + VXNlcm5hbWU6 REPLY dXNlcg== + UGFzc3dvcmQ6 REPLY c2VjcmV0 A002 OK AUTHENTICATE completed Testnum 820 === End of file server.cmd === Start of file valgrind820 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind820 test 0828...[IMAP OAuth 2.0 (XOAUTH2) authentication with initial response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind828 ../src/curl -q --output log/9/curl828.out --include --trace-ascii log/9/trace828 --trace-config all --trace-time 'imap://127.0.0.1:41403/828/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout828 2> log/9/stderr828 828: protocol FAILED! There was no content at all in the file log/9/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/9/ dir after test 828 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind828 ../src/curl -q --output log/9/curl828.out --include --trace-ascii log/9/trace828 --trace-config all --trace-time 'imap://127.0.0.1:41403/828/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout828 2> log/9/stderr828 === End of file commands.log === Start of file imap_server.log 09:41:05.966449 ====> Client connect 09:41:05.968984 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.971093 < "A001 CAPABILITY" 09:41:05.972406 > "A001 BAD Command[CR][LF]" 09:41:05.974103 < "A002 LIST "verifiedserver" *" 09:41:05.974663 LIST_imap got "verifiedserver" * 09:41:05.975194 > "* LIST () "/" "WE ROOLZ: 112889"[CR][LF]" 09:41:05.975450 > "A002 OK LIST Completed[CR][LF]" 09:41:05.975632 return proof we are we 09:41:06.018991 < "A003 LOGOUT" 09:41:06.020472 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.024491 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.025884 MAIN sockfilt said DISC 09:41:06.026174 ====> Client disconnected 09:41:06.026637 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.219666 ====> Client connect 09:41:06.221395 Received DATA (on stdin) 09:41:06.221675 > 178 bytes data, server => client 09:41:06.221876 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.222002 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.222081 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.222152 'rve\r\n' 09:41:06.223876 < 17 bytes data, client => server 09:41:06.224030 'A001 CAPABILITY\r\n' 09:41:06.225225 Received DATA (on stdin) 09:41:06.225375 > 18 bytes data, server => client 09:41:06.225713 'A001 BAD Command\r\n' 09:41:06.227110 < 30 bytes data, client => server 09:41:06.227260 'A002 LIST "verifiedserver" *\r\n' 09:41:06.229560 Received DATA (on stdin) 09:41:06.229704 > 34 bytes data, server => client 09:41:06.229803 '* LIST () "/" "WE ROOLZ: 112889"\r\n' 09:41:06.230074 Received DATA (on stdin) 09:41:06.230212 > 24 bytes data, server => client 09:41:06.230290 'A002 OK LIST Completed\r\n' 09:41:06.271664 < 13 bytes data, client => server 09:41:06.271855 'A003 LOGOUT\r\n' 09:41:06.273223 Received DATA (on stdin) 09:41:06.273364 > 36 bytes data, server => client 09:41:06.273656 '* BYE curl IMAP server signing off\r\n' 09:41:06.278662 Received DATA (on stdin) 09:41:06.278826 > 26 bytes data, server => client 09:41:06.278924 'A003 OK LOGOUT completed\r\n' 09:41:06.279251 ====> Client disconnect 09:41:06.280688 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH XOAUTH2 CAPA SASL-IR REPLY AUTHENTICATE A002 OK AUTHENTICATE completed Testnum 828 === End of file server.cmd === Start of file valgrind828 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: CanCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind824 ../src/curl -q --output log/31/curl824.out --include --trace-ascii log/31/trace824 --trace-config all --trace-time 'imap://127.0.0.1:38735/824/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/31/stdout824 2> log/31/stderr824 not continue -- exiting now. Sorry. === End of file valgrind828 test 0826...[IMAP login authentication with initial response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind826 ../src/curl -q --output log/19/curl826.out --include --trace-ascii log/19/trace826 --trace-config all --trace-time 'imap://127.0.0.1:41739/826/;MAILINDEX=1' -u user:secret > log/19/stdout826 2> log/19/stderr826 826: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 826 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind826 ../src/curl -q --output log/19/curl826.out --include --trace-ascii log/19/trace826 --trace-config all --trace-time 'imap://127.0.0.1:41739/826/;MAILINDEX=1' -u user:secret > log/19/stdout826 2> log/19/stderr826 === End of file commands.log === Start of file imap_server.log 09:41:05.887944 ====> Client connect 09:41:05.890601 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.892026 < "A001 CAPABILITY" 09:41:05.892429 > "A001 BAD Command[CR][LF]" 09:41:05.894722 < "A002 LIST "verifiedserver" *" 09:41:05.895144 LIST_imap got "verifiedserver" * 09:41:05.896317 > "* LIST () "/" "WE ROOLZ: 112880"[CR][LF]" 09:41:05.897097 > "A002 OK LIST Completed[CR][LF]" 09:41:05.897308 return proof we are we 09:41:05.938993 < "A003 LOGOUT" 09:41:05.940270 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:05.941330 > "A003 OK LOGOUT completed[CR][LF]" 09:41:05.944669 MAIN sockfilt said DISC 09:41:05.946858 ====> Client disconnected 09:41:05.947419 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.140963 ====> Client connect 09:41:06.142930 Received DATA (on stdin) 09:41:06.143093 > 178 bytes data, server => client 09:41:06.143283 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.143417 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.143691 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.143803 'rve\r\n' 09:41:06.146405 < 17 bytes data, client => server 09:41:06.146624 'A001 CAPABILITY\r\n' 09:41:06.146734 Received DATA (on stdin) 09:41:06.146824 > 18 bytes data, server => client 09:41:06.146905 'A001 BAD Command\r\n' 09:41:06.147644 < 30 bytes data, client => server 09:41:06.147804 'A002 LIST "verifiedserver" *\r\n' 09:41:06.149170 Received DATA (on stdin) 09:41:06.149312 > 34 bytes data, server => client 09:41:06.149581 '* LIST () "/" "WE ROOLZ: 112880"\r\n' 09:41:06.150369 Received DATA (on stdin) 09:41:06.150592 > 24 bytes data, server => client 09:41:06.151243 'A002 OK LIST Completed\r\n' 09:41:06.191686 < 13 bytes data, client => server 09:41:06.191884 'A003 LOGOUT\r\n' 09:41:06.193114 Received DATA (on stdin) 09:41:06.193274 > 36 bytes data, server => client 09:41:06.193531 '* BYE curl IMAP server signing off\r\n' 09:41:06.194327 Received DATA (on stdin) 09:41:06.194664 > 26 bytes data, server => client 09:41:06.197581 'A003 OK LOGOUT completed\r\n' 09:41:06.198044 ====> Client disconnect 09:41:06.198820 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH LOGIN CAPA SASL-IR REPLY AUTHENTICATE + UGFzc3dvcmQ6 REPLY c2VjcmV0 A002 OK AUTHENTICATE completed Testnum 826 === End of file server.cmd === Start of file valgrind826 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind826 test 0821...[IMAP CRAM-MD5 authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind821 ../src/curl -q --output log/54/curl821.out --include --trace-ascii log/54/trace821 --trace-config all --trace-time 'imap://127.0.0.1:39077/821/;MAILINDEX=1' -u user:secret > log/54/stdout821 2> log/54/stderr821 821: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 821 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind821 ../src/curl -q --output log/54/curl821.out --include --trace-ascii log/54/trace821 --trace-config all --trace-time 'imap://127.0.0.1:39077/821/;MAILINDEX=1' -u user:secret > log/54/stdout821 2> log/54/stderr821 === End of file commands.log === Start of file imap_server.log 09:41:05.823495 ====> Client connect 09:41:05.825447 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.829869 < "A001 CAPABILITY" 09:41:05.830328 > "A001 BAD Command[CR][LF]" 09:41:05.833689 < "A002 LIST "verifiedserver" *" 09:41:05.834508 LIST_imap got "verifiedserver" * 09:41:05.835243 > "* LIST () "/" "WE ROOLZ: 112844"[CR][LF]" 09:41:05.837611 > "A002 OK LIST Completed[CR][LF]" 09:41:05.837998 return proof we are we 09:41:05.878717 < "A003 LOGOUT" 09:41:05.880016 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:05.883941 > "A003 OK LOGOUT completed[CR][LF]" 09:41:05.885068 MAIN sockfilt said DISC 09:41:05.885333 ====> Client disconnected 09:41:05.885864 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.076441 ====> Client connect 09:41:06.079824 Received DATA (on stdin) 09:41:06.080022 > 178 bytes data, server => client 09:41:06.080126 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.080247 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.080344 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.080568 'rve\r\n' 09:41:06.081825 < 17 bytes data, client => server 09:41:06.082161 'A001 CAPABILITY\r\n' 09:41:06.084369 Received DATA (on stdin) 09:41:06.084597 > 18 bytes data, server => client 09:41:06.084727 'A001 BAD Command\r\n' 09:41:06.085994 < 30 bytes data, client => server 09:41:06.086183 'A002 LIST "verifiedserver" *\r\n' 09:41:06.089606 Received DATA (on stdin) 09:41:06.089774 > 34 bytes data, server => client 09:41:06.CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind829 ../src/curl -q --output log/36/curl829.out --include --trace-ascii log/36/trace829 --trace-config all --trace-time imap://127.0.0.1:39751/%0d%0a/829 > log/36/stdout829 2> log/36/stderr829 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind827 ../src/curl -q --output log/18/curl827.out --include --trace-ascii log/18/trace827 --trace-config all --trace-time 'imap://127.0.0.1:34679/827/;MAILINDEX=1' -u testuser:testpass > log/18/stdout827 2> log/18/stderr827 089867 '* LIST () "/" "WE ROOLZ: 112844"\r\n' 09:41:06.092055 Received DATA (on stdin) 09:41:06.092206 > 24 bytes data, server => client 09:41:06.092295 'A002 OK LIST Completed\r\n' 09:41:06.131590 < 13 bytes data, client => server 09:41:06.131771 'A003 LOGOUT\r\n' 09:41:06.132922 Received DATA (on stdin) 09:41:06.133071 > 36 bytes data, server => client 09:41:06.133239 '* BYE curl IMAP server signing off\r\n' 09:41:06.134064 Received DATA (on stdin) 09:41:06.134189 > 26 bytes data, server => client 09:41:06.137997 'A003 OK LOGOUT completed\r\n' 09:41:06.138399 ====> Client disconnect 09:41:06.139916 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH CRAM-MD5 REPLY AUTHENTICATE + PDE5NzIuOTg3NjU0MzIxQGN1cmw+ REPLY dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg== A002 OK AUTHENTICATE completed Testnum 821 === End of file server.cmd === Start of file valgrind821 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind821 test 0824...[IMAP OAuth 2.0 (XOAUTH2) authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind824 ../src/curl -q --output log/31/curl824.out --include --trace-ascii log/31/trace824 --trace-config all --trace-time 'imap://127.0.0.1:38735/824/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/31/stdout824 2> log/31/stderr824 824: protocol FAILED! There was no content at all in the file log/31/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/31/ dir after test 824 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/31/valgrind824 ../src/curl -q --output log/31/curl824.out --include --trace-ascii log/31/trace824 --trace-config all --trace-time 'imap://127.0.0.1:38735/824/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/31/stdout824 2> log/31/stderr824 === End of file commands.log === Start of file imap_server.log 09:41:05.875234 ====> Client connect 09:41:05.877833 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.879482 < "A001 CAPABILITY" 09:41:05.879981 > "A001 BAD Command[CR][LF]" 09:41:05.882476 < "A002 LIST "verifiedserver" *" 09:41:05.882918 LIST_imap got "verifiedserver" * 09:41:05.884281 > "* LIST () "/" "WE ROOLZ: 106054"[CR][LF]" 09:41:05.885139 > "A002 OK LIST Completed[CR][LF]" 09:41:05.885388 return proof we are we 09:41:05.926704 < "A003 LOGOUT" 09:41:05.927950 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:05.928650 > "A003 OK LOGOUT completed[CR][LF]" 09:41:05.929707 MAIN sockfilt said DISC 09:41:05.930350 ====> Client disconnected 09:41:05.930904 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.128258 ====> Client connect 09:41:06.130146 Received DATA (on stdin) 09:41:06.130319 > 178 bytes data, server => client 09:41:06.130591 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.130746 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.130841 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.130937 'rve\r\n' 09:41:06.132214 < 17 bytes data, client => server 09:41:06.132371 'A001 CAPABILITY\r\n' 09:41:06.134037 Received DATA (on stdin) 09:41:06.134178 > 18 bytes data, server => client 09:41:06.134264 'A001 BAD Command\r\n' 09:41:06.135077 < 30 bytes data, client => server 09:41:06.135253 'A002 LIST "verifiedserver" *\r\n' 09:41:06.137054 Received DATA (on stdin) 09:41:06.137226 > 34 bytes data, server => client 09:41:06.137443 '* LIST () "/" "WE ROOLZ: 106054"\r\n' 09:41:06.138354 Received DATA (on stdin) 09:41:06.138602 > 24 bytes data, server => client 09:41:06.139350 'A002 OK LIST Completed\r\n' 09:41:06.179545 < 13 bytes data, client => server 09:41:06.179729 'A003 LOGOUT\r\n' 09:41:06.180871 Received DATA (on stdin) 09:41:06.181019 > 36 bytes data, server => client 09:41:06.181182 '* BYE curl IMAP server signing off\r\n' 09:41:06.182016 Received DATA (on stdin) 09:41:06.182148 > 26 bytes data, server => client 09:41:06.182547 'A003 OK LOGOUT completed\r\n' 09:41:06.183028 ====> Client disconnect 09:41:06.183788 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH XOAUTH2 REPLY AUTHENTICATE + REPLY dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB A002 OK AUTHENTICATE completed Testnum 824 === End of file server.cmd === Start of file valgrind824 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind824 test 0829...[IMAP with URL-encoded CR LF in the URL] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind829 ../src/curl -q --output log/36/curl829.out --include --trace-ascii log/36/trace829 --trace-config all --trace-time imap://127.0.0.1:39751/%0d%0a/829 > log/36/stdout829 2> log/36/stderr829 curl returned 1, when expecting 3 829: exit FAILED == Contents of files in the log/36/ dir after test 829 === Start of file comCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind830 ../src/curl -q --output log/58/curl830.out --include --trace-ascii log/58/trace830 --trace-config all --trace-time 'imap://127.0.0.1:36021/830/;MAILINDEX=1' -u user:secret > log/58/stdout830 2> log/58/stderr830 mands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind829 ../src/curl -q --output log/36/curl829.out --include --trace-ascii log/36/trace829 --trace-config all --trace-time imap://127.0.0.1:39751/%0d%0a/829 > log/36/stdout829 2> log/36/stderr829 === End of file commands.log === Start of file imap_server.log 09:41:05.986989 ====> Client connect 09:41:05.989570 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.991254 < "A001 CAPABILITY" 09:41:05.992471 > "A001 BAD Command[CR][LF]" 09:41:05.993641 < "A002 LIST "verifiedserver" *" 09:41:05.994075 LIST_imap got "verifiedserver" * 09:41:05.995345 > "* LIST () "/" "WE ROOLZ: 112863"[CR][LF]" 09:41:05.996164 > "A002 OK LIST Completed[CR][LF]" 09:41:05.996452 return proof we are we 09:41:06.037521 < "A003 LOGOUT" 09:41:06.037998 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.038307 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.044275 MAIN sockfilt said DISC 09:41:06.044952 ====> Client disconnected 09:41:06.045446 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.240029 ====> Client connect 09:41:06.242000 Received DATA (on stdin) 09:41:06.242145 > 178 bytes data, server => client 09:41:06.242329 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.242534 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.242660 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.242744 'rve\r\n' 09:41:06.244031 < 17 bytes data, client => server 09:41:06.244174 'A001 CAPABILITY\r\n' 09:41:06.245339 Received DATA (on stdin) 09:41:06.245559 > 18 bytes data, server => client 09:41:06.245751 'A001 BAD Command\r\n' 09:41:06.246436 < 30 bytes data, client => server 09:41:06.246635 'A002 LIST "verifiedserver" *\r\n' 09:41:06.248145 Received DATA (on stdin) 09:41:06.248288 > 34 bytes data, server => client 09:41:06.248583 '* LIST () "/" "WE ROOLZ: 112863"\r\n' 09:41:06.249373 Received DATA (on stdin) 09:41:06.249609 > 24 bytes data, server => client 09:41:06.250407 'A002 OK LIST Completed\r\n' 09:41:06.290340 < 13 bytes data, client => server 09:41:06.290583 'A003 LOGOUT\r\n' 09:41:06.292367 Received DATA (on stdin) 09:41:06.292608 > 36 bytes data, server => client 09:41:06.292720 '* BYE curl IMAP server signing off\r\n' 09:41:06.296517 Received DATA (on stdin) 09:41:06.296993 > 26 bytes data, server => client 09:41:06.297123 'A003 OK LOGOUT completed\r\n' 09:41:06.297594 ====> Client disconnect 09:41:06.298290 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 829 === End of file server.cmd === Start of file valgrind829 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind829 test 0827...[IMAP NTLM authentication with initial response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind827 ../src/curl -q --output log/18/curl827.out --include --trace-ascii log/18/trace827 --trace-config all --trace-time 'imap://127.0.0.1:34679/827/;MAILINDEX=1' -u testuser:testpass > log/18/stdout827 2> log/18/stderr827 827: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 827 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind827 ../src/curl -q --output log/18/curl827.out --include --trace-ascii log/18/trace827 --trace-config all --trace-time 'imap://127.0.0.1:34679/827/;MAILINDEX=1' -u testuser:testpass > log/18/stdout827 2> log/18/stderr827 === End of file commands.log === Start of file imap_server.log 09:41:05.908714 ====> Client connect 09:41:05.910449 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:05.914527 < "A001 CAPABILITY" 09:41:05.915341 > "A001 BAD Command[CR][LF]" 09:41:05.918346 < "A002 LIST "verifiedserver" *" 09:41:05.918804 LIST_imap got "verifiedserver" * 09:41:05.919874 > "* LIST () "/" "WE ROOLZ: 112972"[CR][LF]" 09:41:05.920351 > "A002 OK LIST Completed[CR][LF]" 09:41:05.920599 return proof we are we 09:41:05.963622 < "A003 LOGOUT" 09:41:05.964456 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:05.964835 > "A003 OK LOGOUT completed[CR][LF]" 09:41:05.969213 MAIN sockfilt said DISC 09:41:05.969972 ====> Client disconnected 09:41:05.970564 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.161891 ====> Client connect 09:41:06.163768 Received DATA (on stdin) 09:41:06.163914 > 178 bytes data, server => client 09:41:06.164576 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.164714 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.164795 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.164862 'rve\r\n' 09:41:06.167026 < 17 bytes data, client => server 09:41:06.167201 'A001 CAPABILITY\r\n' 09:41:06.168717 Received DATA (on stdin) 09:41:06.168850 > 18 bytes data, server => client 09:41:06.169343 'A001 BAD Command\r\n' 09:41:06.170149 < 30 bytes data, client => server 09:41:06.170282 'A002 LIST "verifiedserver" *\r\n' 09:41:06.173004 Received DATA (on stdin) 09:41:06.173250 > 34 bytes data, server => client 09:41:06.174707 '* LIST () "/" "WE ROOLZ: 112972"\r\n' 09:41:06.175144 Received DATA (on stdin) 09:41:06.175328 > 24 bytes data, server => client 09:41:06.175436 'A002 OK LIST Completed\r\n' 09:41:06.216343 < 13 bytes data, client => server 09:41:06.216597 'A003 LOGOUT\r\n' 09:41:06.217820 Received DATA (on stdin) 09:41:06.217964 > 36 bytes data, server => client 09:41:06.218859 '* BYE curl IMAP server signing off\r\n' 09:41:06.219199 Received DATA (on stdin) 09:41:06.219362 > 26 bytes data, server => client 09:41:06.219540 'A003 OK LOGOUT completed\r\n' 09:41:06.222597 ====> Client disconnect 09:41:06.223255 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH NTLM CAPA SASL-IR REPLY AUTHENTICATE + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind834 ../src/curl -q --output log/35/curl834.out --include --trace-ascii log/35/trace834 --trace-config all --trace-time 'imap://127.0.0.1:44973/834/;MAILINDEX=1' -u user:secret > log/35/stdout834 2> log/35/stderr834 BFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= A002 OK AUTHENTICATE completed Testnum 827 === End of file server.cmd === Start of file valgrind827 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind827 test 0830...[IMAP CRAM-MD5 graceful cancellation] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind830 ../src/curl -q --output log/58/curl830.out --include --trace-ascii log/58/trace830 --trace-config all --trace-time 'imap://127.0.0.1:36021/830/;MAILINDEX=1' -u user:secret > log/58/stdout830 2> log/58/stderr830 830: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 830 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind830 ../src/curl -q --output log/58/curl830.out --include --trace-ascii log/58/trace830 --trace-config all --trace-time 'imap://127.0.0.1:36021/830/;MAILINDEX=1' -u user:secret > log/58/stdout830 2> log/58/stderr830 === End of file commands.log === Start of file imap_server.log 09:41:06.106909 ====> Client connect 09:41:06.108261 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.113383 < "A001 CAPABILITY" 09:41:06.113859 > "A001 BAD Command[CR][LF]" 09:41:06.119310 < "A002 LIST "verifiedserver" *" 09:41:06.119610 LIST_imap got "verifiedserver" * 09:41:06.120033 > "* LIST () "/" "WE ROOLZ: 113069"[CR][LF]" 09:41:06.120310 > "A002 OK LIST Completed[CR][LF]" 09:41:06.120477 return proof we are we 09:41:06.165155 < "A003 LOGOUT" 09:41:06.166902 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.167218 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.168515 MAIN sockfilt said DISC 09:41:06.168851 ====> Client disconnected 09:41:06.169362 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.358643 ====> Client connect 09:41:06.364535 Received DATA (on stdin) 09:41:06.364697 > 178 bytes data, server => client 09:41:06.364790 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.364874 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.364952 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.365032 'rve\r\n' 09:41:06.365839 < 17 bytes data, client => server 09:41:06.365979 'A001 CAPABILITY\r\n' 09:41:06.368567 Received DATA (on stdin) 09:41:06.368718 > 18 bytes data, server => client 09:41:06.368794 'A001 BAD Command\r\n' 09:41:06.369925 < 30 bytes data, client => server 09:41:06.370071 'A002 LIST "verifiedserver" *\r\n' 09:41:06.374427 Received DATA (on stdin) 09:41:06.374653 > 34 bytes data, server => client 09:41:06.374740 '* LIST () "/" "WE ROOLZ: 113069"\r\n' 09:41:06.374988 Received DATA (on stdin) 09:41:06.375108 > 24 bytes data, server => client 09:41:06.375178 'A002 OK LIST Completed\r\n' 09:41:06.417680 < 13 bytes data, client => server 09:41:06.417906 'A003 LOGOUT\r\n' 09:41:06.419229 Received DATA (on stdin) 09:41:06.419363 > 36 bytes data, server => client 09:41:06.419587 '* BYE curl IMAP server signing off\r\n' 09:41:06.421189 Received DATA (on stdin) 09:41:06.421339 > 26 bytes data, server => client 09:41:06.421433 'A003 OK LOGOUT completed\r\n' 09:41:06.421887 ====> Client disconnect 09:41:06.424581 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH CRAM-MD5 CAPA LOGINDISABLED REPLY AUTHENTICATE + Rubbish REPLY * A002 NO AUTH exchange cancelled by client Testnum 830 === End of file server.cmd === Start of file valgrind830 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind830 test 0834...[IMAP NTLM authentication with SASL downgrade] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind834 ../src/curl -q --output log/35/curl834.out --include --trace-ascii log/35/trace834 --trace-config all --trace-time 'imap://127.0.0.1:44973/834/;MAILINDEX=1' -u user:secret > log/35/stdout834 2> log/35/stderr834 834: protocol FAILED! There was no content at all in the file log/35/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/35/ dir after test 834 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/35/valgrind834 ../src/curl -q --output log/35/curl834.out --include --trace-ascii log/35/trace834 --trace-config all --trace-time 'imap://127.0.0.1:44973/834/;MAILINDEX=1' -u user:secret > log/35/stdout834 2> log/35/stderr834 === End of file commands.log === Start of file imap_server.lCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind831 ../src/curl -q --output log/43/curl831.out --include --trace-ascii log/43/trace831 --trace-config all --trace-time 'imap://127.0.0.1:33087/831/;MAILINDEX=1' -u testuser:testpass > log/43/stdout831 2> log/43/stderr831 og 09:41:06.387732 ====> Client connect 09:41:06.389673 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.393720 < "A001 CAPABILITY" 09:41:06.396352 > "A001 BAD Command[CR][LF]" 09:41:06.398316 < "A002 LIST "verifiedserver" *" 09:41:06.398670 LIST_imap got "verifiedserver" * 09:41:06.399107 > "* LIST () "/" "WE ROOLZ: 112720"[CR][LF]" 09:41:06.399413 > "A002 OK LIST Completed[CR][LF]" 09:41:06.399606 return proof we are we 09:41:06.445922 < "A003 LOGOUT" 09:41:06.447247 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.447583 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.452106 MAIN sockfilt said DISC 09:41:06.452454 ====> Client disconnected 09:41:06.452983 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.640650 ====> Client connect 09:41:06.643557 Received DATA (on stdin) 09:41:06.643731 > 178 bytes data, server => client 09:41:06.643821 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.643900 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.643977 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.644046 'rve\r\n' 09:41:06.645258 < 17 bytes data, client => server 09:41:06.645779 'A001 CAPABILITY\r\n' 09:41:06.648612 Received DATA (on stdin) 09:41:06.648795 > 18 bytes data, server => client 09:41:06.649040 'A001 BAD Command\r\n' 09:41:06.650903 < 30 bytes data, client => server 09:41:06.651326 'A002 LIST "verifiedserver" *\r\n' 09:41:06.653555 Received DATA (on stdin) 09:41:06.653695 > 34 bytes data, server => client 09:41:06.653785 '* LIST () "/" "WE ROOLZ: 112720"\r\n' 09:41:06.654112 Received DATA (on stdin) 09:41:06.654251 > 24 bytes data, server => client 09:41:06.654334 'A002 OK LIST Completed\r\n' 09:41:06.698636 < 13 bytes data, client => server 09:41:06.698805 'A003 LOGOUT\r\n' 09:41:06.700041 Received DATA (on stdin) 09:41:06.700220 > 36 bytes data, server => client 09:41:06.700443 '* BYE curl IMAP server signing off\r\n' 09:41:06.701557 Received DATA (on stdin) 09:41:06.701689 > 26 bytes data, server => client 09:41:06.701771 'A003 OK LOGOUT completed\r\n' 09:41:06.705440 ====> Client disconnect 09:41:06.707020 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH NTLM PLAIN REPLY "AUTHENTICATE NTLM" + REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + Rubbish REPLY * A002 NO AUTH exchange cancelled by client REPLY "AUTHENTICATE PLAIN" + REPLY AHVzZXIAc2VjcmV0 A003 OK AUTHENTICATE completed Testnum 834 === End of file server.cmd === Start of file valgrind834 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind834 test 0831...[IMAP NTLM graceful cancellation] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind831 ../src/curl -q --output log/43/curl831.out --include --trace-ascii log/43/trace831 --trace-config all --trace-time 'imap://127.0.0.1:33087/831/;MAILINDEX=1' -u testuser:testpass > log/43/stdout831 2> log/43/stderr831 831: protocol FAILED! There was no content at all in the file log/43/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/43/ dir after test 831 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/43/valgrind831 ../src/curl -q --output log/43/curl831.out --include --trace-ascii log/43/trace831 --trace-config all --trace-time 'imap://127.0.0.1:33087/831/;MAILINDEX=1' -u testuser:testpass > log/43/stdout831 2> log/43/stderr831 === End of file commands.log === Start of file imap_server.log 09:41:06.235921 ====> Client connect 09:41:06.237258 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.241588 < "A001 CAPABILITY" 09:41:06.242065 > "A001 BAD Command[CR][LF]" 09:41:06.245885 < "A002 LIST "verifiedserver" *" 09:41:06.246238 LIST_imap got "verifiedserver" * 09:41:06.246577 > "* LIST () "/" "WE ROOLZ: 113056"[CR][LF]" 09:41:06.248486 > "A002 OK LIST Completed[CR][LF]" 09:41:06.248718 return proof we are we 09:41:06.294054 < "A003 LOGOUT" 09:41:06.294493 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.294873 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.304097 MAIN sockfilt said DISC 09:41:06.304735 ====> Client disconnected 09:41:06.305362 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.486897 ====> Client connect 09:41:06.491308 Received DATA (on stdin) 09:41:06.491625 > 178 bytes data, server => client 09:41:06.491778 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.491873 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.491952 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.492018 'rve\r\n' 09:41:06.494020 < 17 bytes data, client => server 09:41:06.494167 'A001 CAPABILITY\r\n' 09:41:06.497584 Received DATA (on stdin) 09:41:06.497734 > 18 bytes data, server => client 09:41:06.497820 'A001 BAD Command\r\n' 09:41:06.498591 < 30 bytes data, client => server 09:41:06.498741 'A002 LIST "verifiedserver" *\r\n' 09:41:06.500692 Received DATA (on stdin) 09:41:06.500829 > 34 bytes data, server => client 09:41:06.500922 '* LIST () "/" "WE ROOLZ: 113056"\r\n' 09:41:06.501669 Received DATA (on stdin) 09:41:06.501813 > 24 bytes data, server => client 09:41:06.501973 'A002 OK LIST Completed\r\n' 09:41:06.546177 < 13 bytes data, client => server 09:41:06.546352 'A003 LOGOUT\r\n' 09:41:06.552598 Received DATA (on stdin) 09:41:06.552800 > 36 bytes data, server => client 09:41:06.552938 '* BYE curl IMAP server signing off\r\n' 09:41:06.553330 Received DATA (on stdin) 09:41:06.553711 > 26 bytes data, server => client 09:41:06.553832 'A003 OK LOGOUT completed\r\n' 09:41:06.557309 ====> Client disconnect 09:41:06.558172 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH NTLM CAPA LOGINDISABLED REPLY AUTHENTICATE + REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + Rubbish REPLY * A002 NO AUTH exchange cancelled by client Testnum 831 === End of file server.cmd === Start of file valgrind831 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-toolCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind833 ../src/curl -q --output log/17/curl833.out --include --trace-ascii log/17/trace833 --trace-config all --trace-time 'imap://127.0.0.1:36033/833/;MAILINDEX=1' -u user:secret > log/17/stdout833 2> log/17/stderr833 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind837 ../src/curl -q --output log/30/curl837.out --include --trace-ascii log/30/trace837 --trace-config all --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:35591/837/;MAILINDEX=1' > log/30/stdout837 2> log/30/stderr837 combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind831 test 0833...[IMAP CRAM-MD5 authentication with SASL downgrade] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind833 ../src/curl -q --output log/17/curl833.out --include --trace-ascii log/17/trace833 --trace-config all --trace-time 'imap://127.0.0.1:36033/833/;MAILINDEX=1' -u user:secret > log/17/stdout833 2> log/17/stderr833 833: protocol FAILED! There was no content at all in the file log/17/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/17/ dir after test 833 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/17/valgrind833 ../src/curl -q --output log/17/curl833.out --include --trace-ascii log/17/trace833 --trace-config all --trace-time 'imap://127.0.0.1:36033/833/;MAILINDEX=1' -u user:secret > log/17/stdout833 2> log/17/stderr833 === End of file commands.log === Start of file imap_server.log 09:41:06.300502 ====> Client connect 09:41:06.302021 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.305581 < "A001 CAPABILITY" 09:41:06.306072 > "A001 BAD Command[CR][LF]" 09:41:06.309708 < "A002 LIST "verifiedserver" *" 09:41:06.310167 LIST_imap got "verifiedserver" * 09:41:06.310548 > "* LIST () "/" "WE ROOLZ: 113100"[CR][LF]" 09:41:06.314038 > "A002 OK LIST Completed[CR][LF]" 09:41:06.314301 return proof we are we 09:41:06.355887 < "A003 LOGOUT" 09:41:06.358953 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.359295 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.361062 MAIN sockfilt said DISC 09:41:06.361347 ====> Client disconnected 09:41:06.361924 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:05.551778 ====> Client connect 09:41:05.556104 Received DATA (on stdin) 09:41:05.556254 > 178 bytes data, server => client 09:41:05.556348 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:05.556441 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:05.556626 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:05.556708 'rve\r\n' 09:41:05.558077 < 17 bytes data, client => server 09:41:05.558228 'A001 CAPABILITY\r\n' 09:41:05.561575 Received DATA (on stdin) 09:41:05.561743 > 18 bytes data, server => client 09:41:05.561854 'A001 BAD Command\r\n' 09:41:05.562608 < 30 bytes data, client => server 09:41:05.562751 'A002 LIST "verifiedserver" *\r\n' 09:41:05.565571 Received DATA (on stdin) 09:41:05.565744 > 34 bytes data, server => client 09:41:05.565859 '* LIST () "/" "WE ROOLZ: 113100"\r\n' 09:41:05.568289 Received DATA (on stdin) 09:41:05.568438 > 24 bytes data, server => client 09:41:05.568628 'A002 OK LIST Completed\r\n' 09:41:05.608629 < 13 bytes data, client => server 09:41:05.608819 'A003 LOGOUT\r\n' 09:41:05.610036 Received DATA (on stdin) 09:41:05.610189 > 36 bytes data, server => client 09:41:05.613308 '* BYE curl IMAP server signing off\r\n' 09:41:05.613731 Received DATA (on stdin) 09:41:05.613883 > 26 bytes data, server => client 09:41:05.613972 'A003 OK LOGOUT completed\r\n' 09:41:05.614398 ====> Client disconnect 09:41:05.617643 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH CRAM-MD5 PLAIN REPLY "AUTHENTICATE CRAM-MD5" + Rubbish REPLY * A002 NO AUTH exchange cancelled by client REPLY "AUTHENTICATE PLAIN" + REPLY AHVzZXIAc2VjcmV0 A003 OK AUTHENTICATE completed Testnum 833 === End of file server.cmd === Start of file valgrind833 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind833 test 0837...[IMAP external authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind837 ../src/curl -q --output log/30/curl837.out --include --trace-ascii log/30/trace837 --trace-config all --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:35591/837/;MAILINDEX=1' > log/30/stdout837 2> log/30/stderr837 837: protocol FAILED! There was no content at all in the file log/30/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/30/ dir after test 837 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/30/valgrind837 ../src/curl -q --output log/30/curl837.out --include --trace-ascii log/30/trace837 --trace-config all --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:35591/837/;MAILINDEX=1' > log/30/stdout837 2> log/30/stderr837 === End of file commands.log === Start of file imap_server.log 09:41:06.429089 ====> Client connect 09:41:06.430471 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.433626 < "A001 CAPABILITY" 09:41:06.435283 > "A001 BAD Command[CR][LF]" 09:41:06.437360 < "A002 LIST "verifiedserver" *" 09:41:06.437679 LIST_imap got "verCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind839 ../src/curl -q --output log/39/curl839.out --include --trace-ascii log/39/trace839 --trace-config all --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:38285/839/;MAILINDEX=1' > log/39/stdout839 2> log/39/stderr839 ifiedserver" * 09:41:06.438479 > "* LIST () "/" "WE ROOLZ: 106142"[CR][LF]" 09:41:06.438874 > "A002 OK LIST Completed[CR][LF]" 09:41:06.439111 return proof we are we 09:41:06.482152 < "A003 LOGOUT" 09:41:06.483482 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.484121 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.487200 MAIN sockfilt said DISC 09:41:06.489878 ====> Client disconnected 09:41:06.490438 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.682088 ====> Client connect 09:41:06.684708 Received DATA (on stdin) 09:41:06.684875 > 178 bytes data, server => client 09:41:06.684979 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.685072 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.685155 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.685236 'rve\r\n' 09:41:06.686023 < 17 bytes data, client => server 09:41:06.686207 'A001 CAPABILITY\r\n' 09:41:06.688575 Received DATA (on stdin) 09:41:06.688746 > 18 bytes data, server => client 09:41:06.689324 'A001 BAD Command\r\n' 09:41:06.690187 < 30 bytes data, client => server 09:41:06.690347 'A002 LIST "verifiedserver" *\r\n' 09:41:06.691846 Received DATA (on stdin) 09:41:06.691992 > 34 bytes data, server => client 09:41:06.693109 '* LIST () "/" "WE ROOLZ: 106142"\r\n' 09:41:06.693560 Received DATA (on stdin) 09:41:06.693730 > 24 bytes data, server => client 09:41:06.693857 'A002 OK LIST Completed\r\n' 09:41:06.734784 < 13 bytes data, client => server 09:41:06.734972 'A003 LOGOUT\r\n' 09:41:06.736247 Received DATA (on stdin) 09:41:06.736436 > 36 bytes data, server => client 09:41:06.736798 '* BYE curl IMAP server signing off\r\n' 09:41:06.738175 Received DATA (on stdin) 09:41:06.738316 > 26 bytes data, server => client 09:41:06.738409 'A003 OK LOGOUT completed\r\n' 09:41:06.740589 ====> Client disconnect 09:41:06.741319 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH EXTERNAL REPLY AUTHENTICATE + REPLY dXNlcg== A002 OK AUTHENTICATE completed Testnum 837 === End of file server.cmd === Start of file valgrind837 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind837 test 0839...[IMAP external authentication with initial response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind839 ../src/curl -q --output log/39/curl839.out --include --trace-ascii log/39/trace839 --trace-config all --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:38285/839/;MAILINDEX=1' > log/39/stdout839 2> log/39/stderr839 839: protocol FAILED! There was no content at all in the file log/39/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/39/ dir after test 839 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/39/valgrind839 ../src/curl -q --output log/39/curl839.out --include --trace-ascii log/39/trace839 --trace-config all --trace-time 'imap://user;AUTH=EXTERNAL@127.0.0.1:38285/839/;MAILINDEX=1' > log/39/stdout839 2> log/39/stderr839 === End of file commands.log === Start of file imap_server.log 09:41:06.481706 ====> Client connect 09:41:06.483257 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.486544 < "A001 CAPABILITY" 09:41:06.487079 > "A001 BAD Command[CR][LF]" 09:41:06.489484 < "A002 LIST "verifiedserver" *" 09:41:06.489922 LIST_imap got "verifiedserver" * 09:41:06.490337 > "* LIST () "/" "WE ROOLZ: 113110"[CR][LF]" 09:41:06.490700 > "A002 OK LIST Completed[CR][LF]" 09:41:06.492303 return proof we are we 09:41:06.534718 < "A003 LOGOUT" 09:41:06.535223 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.535531 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.543035 MAIN sockfilt said DISC 09:41:06.543371 ====> Client disconnected 09:41:06.544311 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:05.734900 ====> Client connect 09:41:05.737359 Received DATA (on stdin) 09:41:05.737656 > 178 bytes data, server => client 09:41:05.737802 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:05.737958 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:05.738065 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:05.738154 'rve\r\n' 09:41:05.739034 < 17 bytes data, client => server 09:41:05.739190 'A001 CAPABILITY\r\n' 09:41:05.741108 Received DATA (on stdin) 09:41:05.741270 > 18 bytes data, server => client 09:41:05.741364 'A001 BAD Command\r\n' 09:41:05.742197 < 30 bytes data, client => server 09:41:05.742346 'A002 LIST "verifiedserver" *\r\n' 09:41:05.744570 Received DATA (on stdin) 09:41:05.744749 > 34 bytes data, server => client 09:41:05.744848 '* LIST () "/" "WE ROOLZ: 113110"\r\n' 09:41:05.745108 Received DATA (on stdin) 09:41:05.745246 > 24 bytes data, server => client 09:41:05.745335 'A002 OK LIST Completed\r\n' 09:41:05.787639 < 13 bytes data, client => server 09:41:05.787804 'A003 LOGOUT\r\n' 09:41:05.790559 Received DATA (on stdin) 09:41:05.790725 > 36 bytes data, server => client 09:41:05.790814 '* BYE curl IMAP server signing off\r\n' 09:41:05.791095 Received DATA (on stdin) 09:41:05.791242 > 26 bytes data, server => client 09:41:05.791320 'A003 OK LOGOUT completed\r\n' 09:41:05.794633 ====> Client disconnect 09:41:05.797556 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH EXTERNAL CAPA SASL-IR REPLY AUTHENTICATE A002 OK AUTHENTICATE completed Testnum 839 === End of file server.cmd === Start of file valgrind839 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .sCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind841 ../src/curl -q --output log/13/curl841.out --include --trace-ascii log/13/trace841 --trace-config all --trace-time imap://127.0.0.1:38033/841/ -u user:secret -X 'FETCH 123 BODY[1]' > log/13/stdout841 2> log/13/stderr841 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind838 ../src/curl -q --output log/10/curl838.out --include --trace-ascii log/10/trace838 --trace-config all --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:41017/838/;MAILINDEX=1' > log/10/stdout838 2> log/10/stderr838 o is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind839 test 0838...[IMAP external authentication without credentials] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind838 ../src/curl -q --output log/10/curl838.out --include --trace-ascii log/10/trace838 --trace-config all --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:41017/838/;MAILINDEX=1' > log/10/stdout838 2> log/10/stderr838 838: protocol FAILED! There was no content at all in the file log/10/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/10/ dir after test 838 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/10/valgrind838 ../src/curl -q --output log/10/curl838.out --include --trace-ascii log/10/trace838 --trace-config all --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:41017/838/;MAILINDEX=1' > log/10/stdout838 2> log/10/stderr838 === End of file commands.log === Start of file imap_server.log 09:41:06.468888 ====> Client connect 09:41:06.469973 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.473081 < "A001 CAPABILITY" 09:41:06.474585 > "A001 BAD Command[CR][LF]" 09:41:06.475731 < "A002 LIST "verifiedserver" *" 09:41:06.476131 LIST_imap got "verifiedserver" * 09:41:06.476866 > "* LIST () "/" "WE ROOLZ: 112722"[CR][LF]" 09:41:06.477163 > "A002 OK LIST Completed[CR][LF]" 09:41:06.477387 return proof we are we 09:41:06.521733 < "A003 LOGOUT" 09:41:06.522988 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.523321 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.527863 MAIN sockfilt said DISC 09:41:06.528445 ====> Client disconnected 09:41:06.528991 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.721995 ====> Client connect 09:41:06.724210 Received DATA (on stdin) 09:41:06.724368 > 178 bytes data, server => client 09:41:06.724593 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.724723 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.724800 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.724870 'rve\r\n' 09:41:06.725693 < 17 bytes data, client => server 09:41:06.725841 'A001 CAPABILITY\r\n' 09:41:06.727171 Received DATA (on stdin) 09:41:06.727314 > 18 bytes data, server => client 09:41:06.727539 'A001 BAD Command\r\n' 09:41:06.728599 < 30 bytes data, client => server 09:41:06.728744 'A002 LIST "verifiedserver" *\r\n' 09:41:06.730168 Received DATA (on stdin) 09:41:06.730314 > 34 bytes data, server => client 09:41:06.731395 '* LIST () "/" "WE ROOLZ: 112722"\r\n' 09:41:06.731845 Received DATA (on stdin) 09:41:06.732005 > 24 bytes data, server => client 09:41:06.732095 'A002 OK LIST Completed\r\n' 09:41:06.774641 < 13 bytes data, client => server 09:41:06.774806 'A003 LOGOUT\r\n' 09:41:06.775913 Received DATA (on stdin) 09:41:06.776047 > 36 bytes data, server => client 09:41:06.776225 '* BYE curl IMAP server signing off\r\n' 09:41:06.777297 Received DATA (on stdin) 09:41:06.777430 > 26 bytes data, server => client 09:41:06.780888 'A003 OK LOGOUT completed\r\n' 09:41:06.781245 ====> Client disconnect 09:41:06.781896 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH EXTERNAL REPLY AUTHENTICATE + REPLY = A002 OK AUTHENTICATE completed Testnum 838 === End of file server.cmd === Start of file valgrind838 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind838 test 0841...[IMAP custom request doesn't check continuation data] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind841 ../src/curl -q --output log/13/curl841.out --include --trace-ascii log/13/trace841 --trace-config all --trace-time imap://127.0.0.1:38033/841/ -u user:secret -X 'FETCH 123 BODY[1]' > log/13/stdout841 2> log/13/stderr841 841: protocol FAILED! There was no content at all in the file log/13/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/13/ dir after test 841 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/13/valgrind841 ../src/curl -q --output log/13/curl841.out --include --trace-ascii log/13/trace841 --trace-config all --trace-time imap://127.0.0.1:38033/841/ -u user:secret -X 'FETCH 123 BODY[1]' > log/13/stdout841 2> log/13/stderr841 === End of file commands.log === Start of file imap_server.log 09:41:06.666236 ====> Client connect 09:41:06.668855 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.670913 < "A001 CAPABILITY" 09:41:06.671288 > "A001 BAD Command[CR][LF]" 09:41:06.673286 < "A002 LIST "verifiedserver" *" 09:41:06.673537 LIST_imap got "verifiedserver" * 09:41:06.674026 > "* LIST () "/" "WE ROOLZ: 112884"[CR][LF]" 09:41:06.674303 > "A002 OK LIST Completed[CR][LF]" 09:41:06.674475 return proof we are we 09:41:06.718449 < "A003 LOGOUT" 09:41:06.718859 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.719191 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.723829 MAIN sockfilt said DISC 09:41:06.724382 ====> Client disconnected 09:41:06.724904 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.919312 ====> Client connect 09:41:06.921027 Received DATA (on stdin) 09:41:06.921168 > 178 bytes data, server => client 09:41:06.921774 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.921934 ' / __| | | | |_) | | \rCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind840 ../src/curl -q --output log/6/curl840.out --include --trace-ascii log/6/trace840 --trace-config all --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:37611/840/;MAILINDEX=1' > log/6/stdout840 2> log/6/stderr840 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind843 ../src/curl -q --output log/9/curl843.out --include --trace-ascii log/9/trace843 --trace-config all --trace-time 'imap://127.0.0.1:41403/843/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout843 2> log/9/stderr843 \n | (__| |_| | _ {| |___ \r\n ' 09:41:06.922014 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.922085 'rve\r\n' 09:41:06.923251 < 17 bytes data, client => server 09:41:06.923402 'A001 CAPABILITY\r\n' 09:41:06.925288 Received DATA (on stdin) 09:41:06.925414 > 18 bytes data, server => client 09:41:06.925588 'A001 BAD Command\r\n' 09:41:06.926134 < 30 bytes data, client => server 09:41:06.926266 'A002 LIST "verifiedserver" *\r\n' 09:41:06.928425 Received DATA (on stdin) 09:41:06.928613 > 34 bytes data, server => client 09:41:06.928692 '* LIST () "/" "WE ROOLZ: 112884"\r\n' 09:41:06.928928 Received DATA (on stdin) 09:41:06.929043 > 24 bytes data, server => client 09:41:06.929114 'A002 OK LIST Completed\r\n' 09:41:06.970255 < 13 bytes data, client => server 09:41:06.970419 'A003 LOGOUT\r\n' 09:41:06.973196 Received DATA (on stdin) 09:41:06.973345 > 36 bytes data, server => client 09:41:06.973435 '* BYE curl IMAP server signing off\r\n' 09:41:06.973789 Received DATA (on stdin) 09:41:06.973911 > 26 bytes data, server => client 09:41:06.973986 'A003 OK LOGOUT completed\r\n' 09:41:06.977229 ====> Client disconnect 09:41:06.977841 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 841 === End of file server.cmd === Start of file valgrind841 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind841 test 0840...[IMAP external authentication with initial response without credentials] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind840 ../src/curl -q --output log/6/curl840.out --include --trace-ascii log/6/trace840 --trace-config all --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:37611/840/;MAILINDEX=1' > log/6/stdout840 2> log/6/stderr840 840: protocol FAILED! There was no content at all in the file log/6/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/6/ dir after test 840 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/6/valgrind840 ../src/curl -q --output log/6/curl840.out --include --trace-ascii log/6/trace840 --trace-config all --trace-time 'imap://;AUTH=EXTERNAL@127.0.0.1:37611/840/;MAILINDEX=1' > log/6/stdout840 2> log/6/stderr840 === End of file commands.log === Start of file imap_server.log 09:41:06.666282 ====> Client connect 09:41:06.668705 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.670263 < "A001 CAPABILITY" 09:41:06.671560 > "A001 BAD Command[CR][LF]" 09:41:06.672669 < "A002 LIST "verifiedserver" *" 09:41:06.673062 LIST_imap got "verifiedserver" * 09:41:06.674180 > "* LIST () "/" "WE ROOLZ: 112731"[CR][LF]" 09:41:06.675124 > "A002 OK LIST Completed[CR][LF]" 09:41:06.675348 return proof we are we 09:41:06.716623 < "A003 LOGOUT" 09:41:06.717473 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.717976 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.722143 MAIN sockfilt said DISC 09:41:06.722725 ====> Client disconnected 09:41:06.723284 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:06.919366 ====> Client connect 09:41:06.921088 Received DATA (on stdin) 09:41:06.921233 > 178 bytes data, server => client 09:41:06.921432 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:06.921730 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:06.921856 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:06.921933 'rve\r\n' 09:41:06.923121 < 17 bytes data, client => server 09:41:06.923261 'A001 CAPABILITY\r\n' 09:41:06.924521 Received DATA (on stdin) 09:41:06.924665 > 18 bytes data, server => client 09:41:06.924840 'A001 BAD Command\r\n' 09:41:06.925578 < 30 bytes data, client => server 09:41:06.925705 'A002 LIST "verifiedserver" *\r\n' 09:41:06.927084 Received DATA (on stdin) 09:41:06.927218 > 34 bytes data, server => client 09:41:06.927392 '* LIST () "/" "WE ROOLZ: 112731"\r\n' 09:41:06.928199 Received DATA (on stdin) 09:41:06.928326 > 24 bytes data, server => client 09:41:06.928581 'A002 OK LIST Completed\r\n' 09:41:06.969406 < 13 bytes data, client => server 09:41:06.969655 'A003 LOGOUT\r\n' 09:41:06.970821 Received DATA (on stdin) 09:41:06.970972 > 36 bytes data, server => client 09:41:06.972259 '* BYE curl IMAP server signing off\r\n' 09:41:06.972618 Received DATA (on stdin) 09:41:06.972742 > 26 bytes data, server => client 09:41:06.972821 'A003 OK LOGOUT completed\r\n' 09:41:06.975583 ====> Client disconnect 09:41:06.976153 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH EXTERNAL CAPA SASL-IR REPLY AUTHENTICATE A002 OK AUTHENTICATE completed Testnum 840 === End of file server.cmd === Start of file valgrind840 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind840 test 0843...[IMAP OAuth 2.0 (OAUTHBEARER) authentication with initial response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind846 ../src/curl -q --output log/58/curl846.out --include --trace-ascii log/58/trace846 --trace-config all --trace-time 'imap://127.0.0.1:36021/846/;MAILINDEX=1' -u notused:still-provided > log/58/stdout846 2> log/58/stderr846 --num-callers=16 --log-file=log/9/valgrind843 ../src/curl -q --output log/9/curl843.out --include --trace-ascii log/9/trace843 --trace-config all --trace-time 'imap://127.0.0.1:41403/843/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout843 2> log/9/stderr843 843: protocol FAILED! There was no content at all in the file log/9/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/9/ dir after test 843 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/9/valgrind843 ../src/curl -q --output log/9/curl843.out --include --trace-ascii log/9/trace843 --trace-config all --trace-time 'imap://127.0.0.1:41403/843/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/9/stdout843 2> log/9/stderr843 === End of file commands.log === Start of file imap_server.log 09:41:06.898509 ====> Client connect 09:41:06.900916 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.903016 < "A001 CAPABILITY" 09:41:06.903427 > "A001 BAD Command[CR][LF]" 09:41:06.905841 < "A002 LIST "verifiedserver" *" 09:41:06.906162 LIST_imap got "verifiedserver" * 09:41:06.907290 > "* LIST () "/" "WE ROOLZ: 112889"[CR][LF]" 09:41:06.908061 > "A002 OK LIST Completed[CR][LF]" 09:41:06.908292 return proof we are we 09:41:06.950907 < "A003 LOGOUT" 09:41:06.952113 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.955942 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.957014 MAIN sockfilt said DISC 09:41:06.957274 ====> Client disconnected 09:41:06.957710 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:07.151324 ====> Client connect 09:41:07.153416 Received DATA (on stdin) 09:41:07.153788 > 178 bytes data, server => client 09:41:07.154087 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:07.154220 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:07.154301 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:07.154371 'rve\r\n' 09:41:07.155644 < 17 bytes data, client => server 09:41:07.155793 'A001 CAPABILITY\r\n' 09:41:07.157526 Received DATA (on stdin) 09:41:07.157670 > 18 bytes data, server => client 09:41:07.157757 'A001 BAD Command\r\n' 09:41:07.158710 < 30 bytes data, client => server 09:41:07.158855 'A002 LIST "verifiedserver" *\r\n' 09:41:07.160205 Received DATA (on stdin) 09:41:07.160338 > 34 bytes data, server => client 09:41:07.160578 '* LIST () "/" "WE ROOLZ: 112889"\r\n' 09:41:07.161344 Received DATA (on stdin) 09:41:07.161552 > 24 bytes data, server => client 09:41:07.162259 'A002 OK LIST Completed\r\n' 09:41:07.203671 < 13 bytes data, client => server 09:41:07.203845 'A003 LOGOUT\r\n' 09:41:07.205054 Received DATA (on stdin) 09:41:07.205187 > 36 bytes data, server => client 09:41:07.205366 '* BYE curl IMAP server signing off\r\n' 09:41:07.206145 Received DATA (on stdin) 09:41:07.206273 > 26 bytes data, server => client 09:41:07.209998 'A003 OK LOGOUT completed\r\n' 09:41:07.210410 ====> Client disconnect 09:41:07.211798 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH OAUTHBEARER CAPA SASL-IR REPLY AUTHENTICATE A002 OK AUTHENTICATE completed Testnum 843 === End of file server.cmd === Start of file valgrind843 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind843 test 0846...[IMAP PREAUTH response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind846 ../src/curl -q --output log/58/curl846.out --include --trace-ascii log/58/trace846 --trace-config all --trace-time 'imap://127.0.0.1:36021/846/;MAILINDEX=1' -u notused:still-provided > log/58/stdout846 2> log/58/stderr846 846: protocol FAILED! There was no content at all in the file log/58/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/58/ dir after test 846 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/58/valgrind846 ../src/curl -q --output log/58/curl846.out --include --trace-ascii log/58/trace846 --trace-config all --trace-time 'imap://127.0.0.1:36021/846/;MAILINDEX=1' -u notused:still-provided > log/58/stdout846 2> log/58/stderr846 === End of file commands.log === Start of file imap_server.log 09:41:07.055130 ====> Client connect 09:41:07.057370 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:07.058525 < "A001 CAPABILITY" 09:41:07.058928 > "A001 BAD Command[CR][LF]" 09:41:07.061115 < "A002 LIST "verifiedserver" *" 09:41:07.061388 LIST_imap got "verifiedserver" * 09:41:07.062419 > "* LIST () "/" "WE ROOLZ: 113069"[CR][LF]" 09:41:07.063116 > "A002 OK LIST Completed[CR][LF]" 09:41:07.063316 return proof we are we 09:41:07.105665 < "A003 LOGOUT" 09:41:07.106168 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:07.106485 > "A003 OK LOGOUT completed[CR][LF]" 09:41:07.111178 MAIN sockfilt said DISC 09:41:07.111919 ====> Client disconnected 09:41:07.112441 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:07.308198 ====> Client connect 09:41:07.309933 Received DATA (on stdin) 09:41:07.310077 > 178 bytes data, server => client 09:41:07.310261 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:07.310384 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:07.310545 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:07.310639 'rve\r\n' 09:41:07.312914 < 17 bytes data, client => server 09:41:07.313042 'A001 CAPABILITY\r\n' 09:41:07.313143 Received DATA (on stdin) 09:41:07.313227 > 18 bytes data, server => client 09:41:07.313301 'A001 BAD Command\r\n' 09:41:07.314013 < 30 bytes data, client => server 09:41:07.314157 'A002 LIST "verifiedserver" *\r\n' 09:41:07.315368 Received DATA (on stdin) 09:41:07.315573 > 34 bytes data, server => client 09:41:07.315748 '* LIST () "/" "WE ROOLZ: 113069"\r\n' 09:41:07.316429 Received DATA (on stdin) 09:41:07.316617 > 24 bytes data, server => client 09:41:07.317228 'A002 OK LIST Completed\r\n' 09:41:07.358307 < 13 bytes data, client => server 09:CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind842 ../src/curl -q --output log/63/curl842.out --include --trace-ascii log/63/trace842 --trace-config all --trace-time 'imap://127.0.0.1:43275/842/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/63/stdout842 2> log/63/stderr842 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind845 ../src/curl -q --output log/36/curl845.out --include --trace-ascii log/36/trace845 --trace-config all --trace-time 'imap://127.0.0.1:39751/845/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/36/stdout845 2> log/36/stderr845 41:07.358565 'A003 LOGOUT\r\n' 09:41:07.360552 Received DATA (on stdin) 09:41:07.360700 > 36 bytes data, server => client 09:41:07.360785 '* BYE curl IMAP server signing off\r\n' 09:41:07.361043 Received DATA (on stdin) 09:41:07.361177 > 26 bytes data, server => client 09:41:07.361261 'A003 OK LOGOUT completed\r\n' 09:41:07.364584 ====> Client disconnect 09:41:07.365256 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd REPLY welcome * PREAUTH ready to serve already REPLY CAPABILITY * CAPABILITY IMAP4REV1 I18NLEVEL=1 LITERAL+ IDLE UIDPLUS NAMESPACE CHILDREN MAILBOX-REFERRALS BINARY UNSELECT ESEARCH WITHIN SCAN SORT THREAD=REFERENCES THREAD=ORDEREDSUBJECT MULTIAPPEND SASL-IR LOGIN-REFERRALS STARTTLS LOGINDISABLED\r\nA001 OK CAPABILITY completed Testnum 846 === End of file server.cmd === Start of file valgrind846 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind846 test 0842...[IMAP OAuth 2.0 (OAUTHBEARER) authentication] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind842 ../src/curl -q --output log/63/curl842.out --include --trace-ascii log/63/trace842 --trace-config all --trace-time 'imap://127.0.0.1:43275/842/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/63/stdout842 2> log/63/stderr842 842: protocol FAILED! There was no content at all in the file log/63/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/63/ dir after test 842 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/63/valgrind842 ../src/curl -q --output log/63/curl842.out --include --trace-ascii log/63/trace842 --trace-config all --trace-time 'imap://127.0.0.1:43275/842/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/63/stdout842 2> log/63/stderr842 === End of file commands.log === Start of file imap_server.log 09:41:06.873872 ====> Client connect 09:41:06.875114 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.877401 < "A001 CAPABILITY" 09:41:06.877868 > "A001 BAD Command[CR][LF]" 09:41:06.879461 < "A002 LIST "verifiedserver" *" 09:41:06.879861 LIST_imap got "verifiedserver" * 09:41:06.880218 > "* LIST () "/" "WE ROOLZ: 112855"[CR][LF]" 09:41:06.880451 > "A002 OK LIST Completed[CR][LF]" 09:41:06.880620 return proof we are we 09:41:06.925534 < "A003 LOGOUT" 09:41:06.926692 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:06.927390 > "A003 OK LOGOUT completed[CR][LF]" 09:41:06.928958 MAIN sockfilt said DISC 09:41:06.929491 ====> Client disconnected 09:41:06.930035 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:07.126789 ====> Client connect 09:41:07.128830 Received DATA (on stdin) 09:41:07.128999 > 178 bytes data, server => client 09:41:07.129089 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:07.129173 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:07.129252 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:07.129329 'rve\r\n' 09:41:07.130273 < 17 bytes data, client => server 09:41:07.130428 'A001 CAPABILITY\r\n' 09:41:07.131595 Received DATA (on stdin) 09:41:07.131760 > 18 bytes data, server => client 09:41:07.131849 'A001 BAD Command\r\n' 09:41:07.132633 < 30 bytes data, client => server 09:41:07.132785 'A002 LIST "verifiedserver" *\r\n' 09:41:07.133989 Received DATA (on stdin) 09:41:07.134166 > 34 bytes data, server => client 09:41:07.134262 '* LIST () "/" "WE ROOLZ: 112855"\r\n' 09:41:07.134604 Received DATA (on stdin) 09:41:07.134746 > 24 bytes data, server => client 09:41:07.134826 'A002 OK LIST Completed\r\n' 09:41:07.178665 < 13 bytes data, client => server 09:41:07.178830 'A003 LOGOUT\r\n' 09:41:07.179675 Received DATA (on stdin) 09:41:07.179815 > 36 bytes data, server => client 09:41:07.179983 '* BYE curl IMAP server signing off\r\n' 09:41:07.180801 Received DATA (on stdin) 09:41:07.180922 > 26 bytes data, server => client 09:41:07.181367 'A003 OK LOGOUT completed\r\n' 09:41:07.182336 ====> Client disconnect 09:41:07.182942 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH OAUTHBEARER REPLY AUTHENTICATE + REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9NDMyNzUBYXV0aD1CZWFyZXIgbUZfOS5CNWYtNC4xSnFNAQE= A002 OK AUTHENTICATE completed Testnum 842 === End of file server.cmd === Start of file valgrind842 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind842 test 0845...[IMAP OAuth 2.0 (OAUTHBEARER) failure as continuation with initial response] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind845 ../src/curl -q --output log/36/curl845.out --include --trace-ascii log/36/trace845 --trace-config all --trace-time 'imap://127.0.0.1:39751/845/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/36/stdout845 2> log/36/stderr845 845: protocol FAILED! There was no content at all in the file lCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind844 ../src/curl -q --output log/54/curl844.out --include --trace-ascii log/54/trace844 --trace-config all --trace-time 'imap://127.0.0.1:39077/844/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/54/stdout844 2> log/54/stderr844 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind849 ../src/curl -q --output log/19/curl849.out --include --trace-ascii log/19/trace849 --trace-config all --trace-time 'imap://127.0.0.1:41739/849/;MAILINDEX=1' -u kurt:xipj3plmq --sasl-authzid ursel > log/19/stdout849 2> log/19/stderr849 CMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind847 ../src/curl -q --output log/18/curl847.out --include --trace-ascii log/18/trace847 --trace-config all --trace-time 'imap://127.0.0.1:34679/847/;UID=1' -u '"user:sec"ret{' > log/18/stdout847 2> log/18/stderr847 og/36/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/36/ dir after test 845 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/36/valgrind845 ../src/curl -q --output log/36/curl845.out --include --trace-ascii log/36/trace845 --trace-config all --trace-time 'imap://127.0.0.1:39751/845/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/36/stdout845 2> log/36/stderr845 === End of file commands.log === Start of file imap_server.log 09:41:07.061608 ====> Client connect 09:41:07.062974 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:07.069502 < "A001 CAPABILITY" 09:41:07.073981 > "A001 BAD Command[CR][LF]" 09:41:07.076087 < "A002 LIST "verifiedserver" *" 09:41:07.076407 LIST_imap got "verifiedserver" * 09:41:07.076829 > "* LIST () "/" "WE ROOLZ: 112863"[CR][LF]" 09:41:07.077138 > "A002 OK LIST Completed[CR][LF]" 09:41:07.077352 return proof we are we 09:41:07.120581 < "A003 LOGOUT" 09:41:07.121418 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:07.121723 > "A003 OK LOGOUT completed[CR][LF]" 09:41:07.125466 MAIN sockfilt said DISC 09:41:07.126119 ====> Client disconnected 09:41:07.126626 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:07.314746 ====> Client connect 09:41:07.320581 Received DATA (on stdin) 09:41:07.320759 > 178 bytes data, server => client 09:41:07.320865 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:07.320970 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:07.321072 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:07.321149 'rve\r\n' 09:41:07.322108 < 17 bytes data, client => server 09:41:07.322260 'A001 CAPABILITY\r\n' 09:41:07.323701 Received DATA (on stdin) 09:41:07.323857 > 18 bytes data, server => client 09:41:07.328047 'A001 BAD Command\r\n' 09:41:07.328863 < 30 bytes data, client => server 09:41:07.329017 'A002 LIST "verifiedserver" *\r\n' 09:41:07.331319 Received DATA (on stdin) 09:41:07.331550 > 34 bytes data, server => client 09:41:07.331670 '* LIST () "/" "WE ROOLZ: 112863"\r\n' 09:41:07.331895 Received DATA (on stdin) 09:41:07.332035 > 24 bytes data, server => client 09:41:07.332120 'A002 OK LIST Completed\r\n' 09:41:07.373401 < 13 bytes data, client => server 09:41:07.373641 'A003 LOGOUT\r\n' 09:41:07.374754 Received DATA (on stdin) 09:41:07.374905 > 36 bytes data, server => client 09:41:07.375819 '* BYE curl IMAP server signing off\r\n' 09:41:07.376176 Received DATA (on stdin) 09:41:07.376321 > 26 bytes data, server => client 09:41:07.376408 'A003 OK LOGOUT completed\r\n' 09:41:07.378901 ====> Client disconnect 09:41:07.379540 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH OAUTHBEARER CAPA SASL-IR REPLY AUTHENTICATE + eyJzdGF0dXMiOiJpbnZhbGlkX3Rva2VuIiwic2NvcGUiOiJleGFtcGxlX3Njb3BlIiwib3BlbmlkLWNvbmZpZ3VyYXRpb24iOiJodHRwczovL2V4YW1wbGUuY29tLy53ZWxsLWtub3duL29wZW5pZC1jb25maWd1cmF0aW9uIn0= REPLY AQ== A002 NO Authentication failed Testnum 845 === End of file server.cmd === Start of file valgrind845 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind845 test 0849...[IMAP plain auth with alt authorization identity (Not authorized)] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind849 ../src/curl -q --output log/19/curl849.out --include --trace-ascii log/19/trace849 --trace-config all --trace-time 'imap://127.0.0.1:41739/849/;MAILINDEX=1' -u kurt:xipj3plmq --sasl-authzid ursel > log/19/stdout849 2> log/19/stderr849 849: protocol FAILED! There was no content at all in the file log/19/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/19/ dir after test 849 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/19/valgrind849 ../src/curl -q --output log/19/curl849.out --include --trace-ascii log/19/trace849 --trace-config all --trace-time 'imap://127.0.0.1:41739/849/;MAILINDEX=1' -u kurt:xipj3plmq --sasl-authzid ursel > log/19/stdout849 2> log/19/stderr849 === End of file commands.log === Start of file imap_server.log 09:41:07.112376 ====> Client connect 09:41:07.115096 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:07.119146 < "A001 CAPABILITY" 09:41:07.119545 > "A001 BAD Command[CR][LF]" 09:41:07.121671 < "A002 LIST "verifiedserver" *" 09:41:07.122077 LIST_imap got "verifiedserver" * 09:41:07.122447 > "* LIST () "/" "WE ROOLZ: 112880"[CR][LF]" 09:41:07.124980 > "A002 OK LIST Completed[CR][LF]" 09:41:07.125216 return proof we are we 09:41:07.167605 < "A003 LOGOUT" 09:41:07.168137 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:07.168443 > "A003 OK LOGOUT completed[CR][LF]" 09:41:07.170263 MAIN sockfilt said DISC 09:41:07.170501 ====> Client disconnected 09:41:07.171236 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:07.365327 ====> Client connect 09:41:07.367260 Received DATA (on stdin) 09:41:07.367418 > 178 bytes data, server => client 09:41:07.367922 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:07.368086 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:07.368164 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:07.368231 'rve\r\n' 09:41:07.371538 < 17 bytes data, client => server 09:41:07.371716 'A001 CAPABILITY\r\n' 09:41:07.373726 Received DATA (on stdin) 09:41:07.373874 > 18 bytes data, server => client 09:41:07.373953 'A001 BAD Command\r\n' 09:41:07.374637 < 30 bytes data, client => server 09:41:07.374795 'A002 LIST "verifiedserver" *\r\n' 09:41:07.378576 Received DATA (on stdin) 09:41:07.378742 > 34 bytes data, server => client 09:41:07.378828 '* LIST () "/" "WE ROOLZ: 112880"\r\n' 09:41:07.379315 Received DATA (on stdin) 09:41:07.379571 > 24 bytes data, server => client 09:41:07.379713 'A002 OK LIST Completed\r\n' 09:41:07.420629 < 13 bytes data, client => server 09:41:07.420854 'A003 LOGOUT\r\n' 09:41:07.422418 Received DATA (on stdin) 09:41:07.422668 > 36 bytes data, server => client 09:41:07.422776 '* BYE curl IMAP server signing off\r\n' 09:41:07.423118 Received DATA (on stdin) 09:41:07.423270 > 26 bytes data, server => client 09:41:07.423351 'A003 OK LOGOUT completed\r\n' 09:41:07.423745 ====> Client disconnect 09:41:07.424549 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH PLAIN REPLY AUTHENTICATE + REPLY dXJzZWwAa3VydAB4aXBqM3BsbXE= A002 NO Not authorized Testnum 849 === End of file server.cmd === Start of file valgrind849 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind849 test 0844...[IMAP OAuth 2.0 (OAUTHBEARER) failure as continuation] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind844 ../src/curl -q --output log/54/curl844.out --include --trace-ascii log/54/trace844 --trace-config all --trace-time 'imap://127.0.0.1:39077/844/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/54/stdout844 2> log/54/stderr844 844: protocol FAILED! There was no content at all in the file log/54/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/54/ dir after test 844 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/54/valgrind844 ../src/curl -q --output log/54/curl844.out --include --trace-ascii log/54/trace844 --trace-config all --trace-time 'imap://127.0.0.1:39077/844/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/54/stdout844 2> log/54/stderr844 === End of file commands.log === Start of file imap_server.log 09:41:06.972025 ====> Client connect 09:41:06.973183 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 09:41:06.976286 < "A001 CAPABILITY" 09:41:06.978136 > "A001 BAD Command[CR][LF]" 09:41:06.978931 < "A002 LIST "verifiedserver" *" 09:41:06.979244 LIST_imap got "verifiedserver" * 09:41:06.979594 > "* LIST () "/" "WE ROOLZ: 112844"[CR][LF]" 09:41:06.980608 > "A002 OK LIST Completed[CR][LF]" 09:41:06.981566 return proof we are we 09:41:07.022686 < "A003 LOGOUT" 09:41:07.023954 > "* BYE curl IMAP server signing off[CR][LF]" 09:41:07.024855 > "A003 OK LOGOUT completed[CR][LF]" 09:41:07.028528 MAIN sockfilt said DISC 09:41:07.029171 ====> Client disconnected 09:41:07.029649 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 09:41:07.225129 ====> Client connect 09:41:07.227211 Received DATA (on stdin) 09:41:07.227354 > 178 bytes data, server => client 09:41:07.227534 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 09:41:07.227651 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 09:41:07.227738 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 09:41:07.227810 'rve\r\n' 09:41:07.228753 < 17 bytes data, client => server 09:41:07.228899 'A001 CAPABILITY\r\n' 09:41:07.230382 Received DATA (on stdin) 09:41:07.230604 > 18 bytes data, server => client 09:41:07.230799 'A001 BAD Command\r\n' 09:41:07.231426 < 30 bytes data, client => server 09:41:07.231642 'A002 LIST "verifiedserver" *\r\n' 09:41:07.233576 Received DATA (on stdin) 09:41:07.233724 > 34 bytes data, server => client 09:41:07.233813 '* LIST () "/" "WE ROOLZ: 112844"\r\n' 09:41:07.234781 Received DATA (on stdin) 09:41:07.234929 > 24 bytes data, server => client 09:41:07.235020 'A002 OK LIST Completed\r\n' 09:41:07.275443 < 13 bytes data, client => server 09:41:07.275711 'A003 LOGOUT\r\n' 09:41:07.276877 Received DATA (on stdin) 09:41:07.277019 > 36 bytes data, server => client 09:41:07.277188 '* BYE curl IMAP server signing off\r\n' 09:41:07.278060 Received DATA (on stdin) 09:41:07.278239 > 26 bytes data, server => client 09:41:07.281557 'A003 OK LOGOUT completed\r\n' 09:41:07.281977 ====> Client disconnect 09:41:07.282605 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH OAUTHBEARER REPLY AUTHENTICATE + REPLY bixhPXVzZXIsAWhvc3Q9MTI3LjAuMC4xAXBvcnQ9MzkwNzcBYXV0aD1CZWFyZXIgbUZfOS5CNWYtNC4xSnFNAQE= A002 NO Authentication failed Testnum 844 === End of file server.cmd === Start of file valgrind844 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind844 test 0847...[IMAP FETCH message] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind847 ../src/curl -q --output log/18/curl847.out --include --trace-ascii log/18/trace847 --trace-config all --trace-time 'imap://127.0.0.1:34679/847/;UID=1' -u '"user:sec"ret{' > log/18/stdout847 2> log/18/stderr847 847: protocol FAILED! There was no content at all in the file log/18/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/18/ dir after test 847 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/18/valgrind847 ../src/curl -q --output log/18/curl847.out --includeCMD (256): ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/test