const sizes* = [ 643584, 140800, 802, 2464928, 488122, 1161601, 861051, 1413, 389, 2412032, 328704, 323488, 484864, 31232, 38400, 87552, 328704, 242176, 55808, 32256, 15360, 15080, 567074, 1390, 1390, 366080, 186536, 314368, 4154, 3017582, 62658, 3874662, 227, 126616, 290, 261792, 287, 151200, 293, 34976, 293, 28840, 296, 20664, 314, 223232, 288, 53248, 326, 12800, 312, 473600, 306, 2676224, 308, 2846720, 308, 563712, 308, 567296, 308, 576000, 308, 577024, 308, 577536, 308, 577536, 308, 578560, 308, 578560, 308, 145920, 310, 159232, 312, 364544, 310, 178176, 312, 8032448, 323, 29392, 332, 35112, 394, 85768, 371, 88864, 385, 23840, 385, 176128, 386, 126976, 389, 24800, 401, 118784, 379, 21792, 385, 259152, 385, 172032, 389, 40960, 389, 114688, 403, 57344, 407, 7680, 407, 126216, 373, 29952, 367, 148768, 385, 27384, 362, 24832, 362, 50944, 364, 20136, 302, 32416, 293, 69296, 305, 36016, 308, 89784, 305, 5120, 305, 49152, 320, 30424, 331, 12288, 326, 62976, 69120, 72192, 503808, 77824, 382144, 163840, 88728, 1581, 1718096, 66728, 82172, 116756, 4554752, 59342, 45794, 39284, 66384, 60294, 83748, 83748, 262148, 20320, 28288, 382, 3072, 4222976, 161, 1737888, 2975744, 487424, 258048, 113664, 372736, 261632, 5287936, 80896, 89600, 503808, 77824, 554176, 163840, 84632, 1581, 1714000, 66728, 82172, 116756, 4571136, 59342, 45794, 39284, 66384, 60294, 83748, 83748, 262148, 20320, 28288, 4006400, 161, 2256032, 3150336, 503296, 245760, 133120, 358400, 283136, 5296128, 10752, 507904, 315392, 11264, 921600, 7680, 118784, 166560, 13312, 5120, 18768, 52736, 8192, 77824, 6656, 106496, 389120, 733184, 53248, 36864, 36864, 655360, 139264, 802816, 169864, 77824, 10752, 94208, 17808, 40960, 36864, 749568, 45056, 188416, 28672, 16384, 69632, 102400, 11776, 10752, 290816, 36864, 36864, 667648, 53248, 49152, 200704, 45056, 40960, 77824, 10240, 9216, 77504, 161472, 163528, 26304, 26312, 96448, 99016, 19648, 19656, 127680, 127680, 364224, 323272, 73408, 71368, 24776, 138944, 128200, 27328, 48832, 37576, 32960, 52928, 40128, 89792, 80584, 25792, 499392, 504520, 163520, 167624, 36032, 36040, 138944, 127688, 4208320, 4839104, 77504, 81608, 2768576, 2757832, 331456, 321728, 65224, 65216, 56008, 163520, 154816, 48832, 77504, 62656, 48832, 77504, 50888, 57024, 47296, 52928, 40640, 71360, 71360, 22208, 22208, 57024, 45768, 48832, 48840, 3720896, 4037832, 790208, 868040, 230592, 230592, 20160, 20160, 29376, 31944, 1355456, 1419976, 839360, 851656, 32960, 36040, 179904, 265920, 85696, 85696, 33472, 33472, 392896, 391872, 397008, 48832, 48832, 48832, 48832, 52928, 48832, 48832, 57024, 36032, 36032, 48832, 48840, 48840, 48832, 52928, 48832, 48832, 57024, 36032, 36032, 48848, 48848, 48848, 48848, 52944, 48848, 48848, 57040, 36048, 36048, 57024, 45760, 20160, 20160, 34528, 13024, 397312, 5120, 28672, 659456, 372736, 110592, 9216, 9728, 61440, 28672, 5632, 41984, 29736, 20056, 216632, 110184, 27032, 37472, 31592, 24376, 102728, 280912, 27472, 27936, 23392, 56624, 57216, 38744, 51016, 36696, 48896, 53024, 32032, 34120, 34120, 20256, 107848, 109928, 1267040, 46984, 496544, 1174384, 762288, 101744, 32664, 95712, 48480, 365344, 98448, 86440, 35312, 37704, 75664, 101672, 47912, 15872, 11168, 22856, 22856, 506616, 556824, 61784, 30008, 44848, 81816, 31528, 32768, 12800, 27000, 155000, 14712, 14712, 14712, 15224, 14712, 15224, 14712, 14712, 14712, 15736, 14712, 13688, 14200, 122232, 14200, 14200, 14200, 14200, 14200, 14200, 14712, 13688, 14200, 14200, 15224, 14200, 13688, 13176, 978296, 1580408, 134520, 15224, 15736, 15736, 15736, 15736, 15736, 16248, 15736, 15736, 15224, 16760, 15224, 14712, 15224, 171384, 175480, 159096, 171384, 179576, 171384, 191864, 175480, 175480, 171384, 216440, 167288, 155000, 155000, 40312, 27000, 48504, 14200, 14200, 14712, 14200, 14200, 14200, 14712, 13688, 14200, 14200, 14712, 14712, 13688, 14200, 52600, 56696, 146704, 21792, 286720, 15360, 13824, 7168, 7168, 421888, 36864, 36864, 110592, 4608, 4096, 29576, 29576, 29576, 29576, 40840, 30088, 32136, 27368, 27528, 315392, 381, 3072, 1318, 3072, 375, 3072, 378, 3072, 598016, 53248, 32768, 110592, 43696, 5283840, 196608, 139264, 397312, 249856, 163840, 864256, 372736, 532480, 36864, 5632, 110592, 5120, 129664, 110592, 10752, 3203072, 163840, 45056, 57344, 8192, 425984, 81920, 28672, 49152, 671744, 61440, 53248, 2879488, 229376, 15360, 397312, 684032, 57344, 110592, 356352, 696320, 462848, 53248, 163840, 11776, 98304, 470240, 47328, 745472, 36864, 974848, 397312, 5062656, 544768, 401408, 290816, 36864, 188416, 28672, 40960, 630784, 81920, 6144, 24576, 32768, 446464, 65536, 126976, 53248, 131072, 11776, 389120, 3010560, 278528, 253952, 143360, 13824, 258048, 77824, 237568, 16896, 212992, 307200, 32768, 970752, 131072, 11776, 98304, 270336, 28672, 5992448, 73728, 36864, 491520, 32768, 569344, 69632, 114688, 40960, 692224, 65536, 28672, 77824, 3584, 229376, 32768, 4096, 16896, 139264, 131072, 11264, 15360, 1282048, 335872, 49152, 634880, 835584, 81920, 98304, 622592, 61440, 7168, 839680, 81920, 5025792, 434176, 12288, 3584, 1142784, 188416, 1630208, 311296, 540672, 36864, 507904, 102400, 2056192, 139264, 167936, 172032, 4096, 380928, 8192, 40960, 4096, 98304, 7168, 10584, 81080, 23376, 1257472, 90112, 94208, 5120, 150168, 25600, 2553856, 69120, 220672, 51712, 1349120, 1349120, 167424, 786432, 515584, 291328, 1681920, 33792, 102400, 102912, 60928, 44032, 631296, 44544, 11776, 408576, 138752, 1849856, 13824, 33280, 44544, 17920, 11776, 9153536, 150016, 13824, 24576, 293888, 651264, 818176, 17920, 141312, 64512, 583168, 58368, 830976, 109568, 65536, 24576, 771584, 1545728, 1540608, 11776, 144896, 11776, 18944, 67584, 65536, 17920, 848896, 43520, 30720, 27648, 1935872, 127488, 11264, 44032, 583168, 11264, 67584, 632320, 38400, 8470528, 127488, 257536, 30720, 111104, 286720, 1711616, 64000, 240128, 22016, 86528, 174080, 16896, 531456, 17920, 23552, 20992, 20992, 22528, 20992, 19456, 19456, 20992, 20992, 11500544, 12260864, 368128, 14345216, 29184, 29184, 84480, 64512, 925696, 8003072, 141312, 978432, 2305024, 6658048, 1116160, 1593344, 1059328, 777216, 214016, 627200, 11935232, 1840640, 12438528, 5466624, 86528, 98816, 3358720, 145408, 126976, 73728, 78848, 94208, 348672, 76288, 2347008, 2347008, 2176512, 237056, 1130496, 416768, 713216, 1126400, 61440, 163328, 158208, 61440, 2173952, 681472, 33792, 15580160, 16565248, 463360, 19202560, 47104, 116736, 89088, 10677248, 192512, 1320448, 3324416, 8741888, 1639936, 2320384, 1482752, 11899392, 1028608, 296448, 921600, 15390720, 2292224, 17390080, 6968320, 125952, 136192, 4978176, 193536, 169984, 104960, 43520, 300, 112128, 536, 110592, 536, 112128, 536, 2664448, 1060, 2664448, 1060, 2664448, 1060, 71168, 572, 72192, 572, 71168, 572, 131072, 2416, 82944, 3084, 12800, 3508, 15872, 3576, 1321984, 1364, 653312, 2124, 18492416, 2048, 6656, 344, 1219584, 416, 548864, 2444, 6656, 344, 11776, 1008, 54272, 404, 63488, 404, 64000, 404, 624640, 5752, 624640, 5720, 89600, 1736, 164352, 1096, 178688, 1096, 16384, 352, 326656, 1368, 315392, 1368, 699392, 1004, 54784, 360, 75776, 352, 69120, 352, 61440, 352, 62976, 352, 61952, 352, 53760, 360, 61440, 352, 62464, 352, 33280, 320, 23552, 368, 26112, 360, 26624, 324, 26112, 360, 27648, 320, 27136, 320, 27136, 320, 28160, 360, 27648, 320, 27648, 320, 27648, 320, 33280, 320, 27648, 320, 26112, 360, 29696, 320, 31232, 360, 26112, 360, 27648, 320, 25088, 328, 27648, 320, 26624, 320, 25088, 328, 25088, 328, 25088, 328, 27648, 320, 26112, 360, 27136, 320, 27136, 320, 27648, 320, 23552, 368, 26624, 320, 25600, 320, 25600, 320, 29696, 320, 27648, 320, 26624, 324, 1927168, 928, 2015232, 928, 414720, 588, 426496, 588, 327680, 708, 1290240, 2608, 83456, 308, 86016, 308, 109056, 308, 100352, 348, 86016, 308, 109056, 308, 83968, 308, 87040, 308, 76800, 312, 87040, 308, 88576, 348, 79360, 348, 79872, 308, 75264, 312, 87552, 308, 76800, 312, 86528, 308, 88064, 308, 80384, 348, 88576, 308, 83456, 308, 79872, 308, 96768, 308, 86528, 308, 78848, 348, 82944, 308, 88576, 308, 87552, 308, 79360, 348, 69120, 352, 83968, 308, 88064, 308, 82944, 308, 70144, 352, 80384, 348, 75264, 312, 96768, 308, 10240, 364, 9728, 364, 9728, 364, 9728, 364, 9728, 364, 9728, 364, 10240, 364, 9216, 368, 9216, 368, 163840, 8280, 242176, 2980, 210432, 360, 244224, 360, 209408, 360, 212480, 360, 192512, 364, 206336, 360, 224768, 360, 193536, 364, 206336, 360, 872960, 1232, 1231872, 1056, 809472, 888, 809472, 992, 3544576, 2160, 3544576, 2056, 3580928, 2220, 2396160, 2568, 145408, 316, 160256, 316, 145408, 316, 195584, 364, 140288, 316, 126464, 324, 144896, 316, 160256, 316, 139264, 316, 216064, 356, 212992, 356, 144896, 316, 139264, 316, 140288, 316, 196608, 364, 132608, 316, 128000, 324, 249344, 356, 181760, 316, 142848, 316, 228864, 356, 144896, 316, 147456, 316, 141824, 316, 144896, 316, 214528, 356, 210944, 356, 181760, 316, 140288, 320, 142848, 316, 141824, 316, 210432, 356, 128000, 324, 132608, 316, 140288, 320, 126464, 324, 147456, 316, 26624, 364, 24576, 364, 22016, 368, 29696, 364, 22528, 368, 24576, 364, 24576, 364, 24576, 364, 25088, 364, 2791936, 2000, 161280, 1048, 169472, 1048, 5100032, 2612, 5506560, 1728, 8192, 380, 101888, 5804, 104960, 3332, 99328, 2872, 8704, 388, 35328, 368, 11244032, 5592, 11244032, 5592, 10870784, 5256, 10744320, 7916, 540160, 744, 408064, 720, 58368, 4604, 58368, 4604, 52736, 5008, 1554432, 4636, 2222080, 6712, 7168, 384, 6656, 400, 6656, 372, 272384, 3816, 235008, 2760, 8192, 368, 625664, 5764, 563200, 6720, 9728, 392, 7168, 404, 415744, 4688, 1320960, 6228, 7168, 376, 1756160, 4992, 1961472, 6552, 244736, 360, 2317824, 6480, 1916928, 4832, 6656, 400, 8192, 372, 7168, 372, 405504, 4152, 411136, 5580, 83456, 1784, 84992, 2280, 6943744, 6676, 8638976, 9976, 16384, 368, 366080, 5696, 294912, 6460, 366080, 5696, 8192, 380, 384000, 364, 622592, 8296, 564224, 7396, 359936, 4004, 700416, 6276, 7168, 372, 1648640, 6952, 1498624, 4620, 38912, 360, 6656, 396, 8255488, 5060, 7553024, 5084, 8255488, 5060, 8048640, 8684, 4229120, 7476, 4243456, 9716, 57344, 372, 483840, 4016, 484352, 4468, 20480, 364, 6948352, 8444, 5271552, 5800, 9728, 364, 12800, 376, 273920, 2708, 114176, 2116, 256512, 6212, 186368, 6428, 1016320, 3228, 379904, 7256, 508928, 6568, 470528, 5128, 468480, 3764, 13023232, 5424, 12046336, 7648, 13023232, 5424, 23040, 352, 1604096, 700, 625664, 708, 608256, 656, 722944, 3524, 1263104, 4232, 243200, 3632, 60928, 720, 1249280, 2216, 233472, 1212, 110080, 1104, 1939456, 2864, 289792, 1632, 241664, 2956, 535040, 3040, 25088, 688, 38400, 544, 24576, 1816, 10240, 600, 10752, 1516, 68096, 1056, 75776, 424, 723968, 2076, 1162240, 1976, 117248, 760, 117248, 3696, 140800, 892, 998400, 708, 1829888, 10068, 3081216, 10696, 1305600, 4820, 172032, 1524, 7168, 304, 578048, 2232, 505856, 2232, 7168, 288, 149504, 856, 38400, 464, 196608, 1268, 198656, 1268, 752128, 2188, 799232, 2188, 164864, 1912, 197120, 1912, 261632, 1552, 259584, 1552, 601600, 1372, 583680, 1372, 19968, 832, 19968, 832, 375296, 1556, 373248, 1556, 44032, 2192, 44032, 1696, 148992, 1272, 148992, 1272, 71168, 988, 71168, 988, 108032, 2516, 96768, 1772, 1223680, 3812, 1895936, 4020, 560128, 708, 392192, 656, 1083904, 2364, 294400, 1948, 446464, 1620, 451072, 1620, 1251840, 432, 611840, 5216, 47104, 620, 53248, 620, 501760, 3572, 200192, 3312, 2404352, 580, 1298944, 876, 783360, 772, 111104, 504, 491008, 748, 580096, 1784, 6215680, 696, 1199616, 1832, 1252864, 2000, 314880, 1076, 346112, 2008, 11637248, 2264, 1553920, 3336, 311296, 1268, 259584, 1652, 1376256, 2196, 1782784, 3148, 516096, 1248, 1872896, 3692, 377856, 316, 96256, 608, 62464, 804, 338432, 1500, 296960, 1512, 396800, 1652, 329216, 1424, 859648, 2168, 2535424, 3688, 1282560, 2192, 4596736, 5784, 2210816, 2420, 139776, 760, 4002304, 4776, 4817920, 3500, 26624, 352, 488448, 2188, 1078272, 5188, 808448, 5548, 76288, 1496, 50688, 688, 603648, 4856, 600064, 3928, 49152, 368, 491008, 3236, 487936, 3120, 144896, 2216, 1013248, 6708, 805888, 6448, 114688, 320, 104448, 328, 103936, 328, 112128, 320, 113152, 320, 114688, 320, 110592, 320, 113664, 320, 136192, 320, 122880, 320, 110592, 320, 111616, 324, 113152, 320, 1485824, 4928, 690688, 10996, 737280, 12228, 108032, 924, 101888, 740, 6156288, 4976, 6376448, 6200, 548352, 1492, 441344, 1168, 1564672, 8060, 1538560, 7084, 169472, 368, 521216, 4180, 133632, 2348, 134144, 2348, 1046016, 8576, 1351680, 4732, 1823232, 1872, 829440, 3820, 781312, 3720, 5850112, 10748, 4831232, 10408, 119296, 2012, 118784, 2012, 19456, 1652, 9411584, 320, 9260032, 320, 367616, 4564, 360960, 4372, 69632, 7804, 68608, 6724, 1329152, 7692, 1319424, 6936, 2029568, 3088, 115200, 4584, 139776, 5012, 2570752, 1576, 43520, 2792, 42496, 2792, 842752, 7988, 2548224, 11824, 5488128, 1760, 260096, 7020, 706048, 3612, 740352, 5040, 16384, 380, 235520, 2536, 264704, 2652, 4364288, 8256, 4176896, 6204, 16559104, 3220, 107008, 2052, 1103872, 3264, 1098752, 3056, 1177600, 3856, 1028608, 3404, 663552, 2212, 665088, 2396, 140288, 560, 90112, 2736, 141824, 1284, 6045184, 13232, 4726784, 12052, 176640, 4388, 626688, 3868, 621568, 3868, 1908224, 1820, 704512, 4976, 700928, 4584, 2672128, 7920, 2396160, 7872, 4750848, 4916, 4597248, 5928, 345600, 7092, 318976, 7204, 31744, 676, 32256, 676, 593920, 3824, 615936, 4292, 1656320, 9112, 1626112, 9324, 177152, 2020, 5765632, 5816, 56320, 2228, 61952, 2228, 1814528, 3612, 6656, 380, 16896, 456, 31744, 844, 3265024, 9080, 4318720, 11204, 192512, 784, 188416, 784, 627200, 11148, 681472, 11644, 1456640, 4156, 306176, 2064, 305152, 1908, 2410496, 9624, 3928576, 10028, 3820544, 9056, 5166080, 3392, 417792, 1840, 17920, 720, 17920, 720, 732672, 5100, 832512, 5676, 1738752, 4948, 1936896, 452, 1940480, 452, 68608, 3424, 68608, 3428, 211456, 4428, 203776, 4120, 467456, 3208, 423936, 4084, 701952, 5048, 474624, 5268, 2202112, 6132, 136704, 2432, 136704, 2432, 10240, 372, 35840, 824, 35840, 824, 365568, 5700, 365568, 6176, 155648, 2168, 156160, 2168, 24064, 1004, 35840, 1392, 337408, 4956, 341504, 4688, 77312, 5412, 79360, 6264, 2067456, 10360, 435712, 448, 1226240, 5600, 1228800, 5952, 16384, 324, 16896, 324, 16896, 324, 16896, 328, 15872, 332, 16896, 324, 17920, 324, 16384, 324, 16896, 324, 16896, 324, 15872, 332, 16896, 324, 18432, 324, 99328, 776, 2295296, 8784, 1970176, 7988, 175104, 7768, 183808, 8200, 23552, 1244, 364032, 4316, 955904, 6660, 1570304, 8804, 1491968, 8444, 725504, 528, 729088, 528, 172544, 928, 411648, 7312, 294400, 3532, 313344, 3416, 48640, 984, 48128, 984, 48128, 1760, 160768, 900, 160768, 900, 3207680, 2016, 155136, 4012, 312320, 4680, 287232, 2888, 288768, 2888, 898560, 4116, 894464, 4116, 15360, 364, 2923520, 6556, 103936, 2668, 115200, 4552, 93696, 920, 87552, 920, 384512, 1976, 374784, 1976, 122368, 2456, 4463616, 2788, 1618432, 1200, 69632, 1672, 18432, 328, 23040, 1268, 13824, 328, 80384, 2132, 363008, 5288, 363520, 5776, 47616, 2808, 206848, 1952, 214016, 2120, 1050624, 6560, 1114112, 7476, 1883648, 1708, 710144, 9276, 937472, 12088, 3946496, 10876, 3973632, 11776, 6656, 372, 56832, 2452, 2269696, 10188, 300544, 4128, 299520, 3920, 1971712, 7600, 1007104, 3108, 9728, 384, 7168, 364, 32256, 512, 28672, 512, 640000, 1636, 24064, 1976, 272896, 3096, 167936, 3860, 1135616, 4944, 96768, 1772, 1086464, 10516, 1362944, 7912, 62976, 656, 63488, 656, 63488, 656, 115712, 320, 115200, 320, 895488, 9612, 11264, 336, 271360, 2784, 394240, 9496, 53760, 784, 360448, 6288, 84480, 2488, 588288, 7708, 724480, 7052, 2811392, 12416, 2999296, 10636, 34304, 332, 38400, 336, 38400, 336, 1101312, 4140, 1100288, 4072, 13824, 332, 13312, 332, 13824, 332, 12800, 336, 11776, 372, 13312, 332, 13312, 332, 13312, 332, 15360, 332, 13312, 332, 13824, 332, 12800, 336, 13312, 332, 13312, 332, 125952, 3308, 128000, 3688, 431616, 2860, 442880, 3348, 2013184, 1400, 660992, 5236, 1506816, 5124, 707584, 3248, 706560, 3248, 1534976, 572, 1537536, 572, 2013696, 3344, 2031616, 3344, 57856, 2364, 205824, 1748, 739328, 1232, 741376, 1232, 67584, 1316, 1430528, 2832, 429568, 620, 455680, 620, 1007616, 5588, 1282048, 2624, 1265152, 2628, 4728320, 7148, 4441600, 6448, 4735488, 5152, 3809280, 5136, 4013568, 5852, 97280, 1332, 978432, 3564, 72704, 2504, 28672, 376, 2288640, 7400, 2407936, 7308, 901632, 8740, 972288, 9456, 1052160, 6812, 1026560, 6528, 1321472, 9780, 837120, 8460, 288768, 1108, 308736, 1108, 1195520, 1948, 1198080, 1948, 181248, 5368, 144384, 4900, 776704, 348, 157696, 5076, 60928, 444, 60928, 444, 209920, 5220, 246784, 756, 246272, 756, 604672, 8528, 24064, 564, 24064, 564, 47104, 556, 44032, 556, 321536, 2176, 332288, 2176, 204288, 2388, 204800, 2440, 107008, 912, 82432, 1448, 87552, 1996, 89088, 372, 922112, 4576, 508928, 1944, 528896, 1996, 5450240, 2776, 3680768, 15000, 3721728, 16696, 845312, 9152, 3270656, 4144, 1602048, 852, 1606656, 852, 36864, 564, 39936, 564, 214016, 3144, 576000, 4544, 580096, 4468, 627200, 6596, 1623040, 11196, 1107456, 9700, 2272256, 13208, 2289152, 13624, 1189376, 704, 1203712, 704, 470528, 6616, 451584, 5508, 143360, 1388, 143360, 1388, 55296, 2920, 55808, 2920, 82944, 2444, 82944, 2444, 2862592, 3168, 7680, 372, 68096, 1124, 67584, 1124, 1022976, 1240, 193024, 2660, 193536, 2660, 2833408, 1172, 195072, 1564, 512000, 2840, 131072, 3096, 313344, 2100, 89088, 2136, 86016, 2136, 1243648, 1840, 1280512, 1840, 778752, 1040, 10240, 388, 420864, 1660, 3430400, 5764, 1161216, 736, 2591232, 9460, 1972224, 8028, 583168, 6348, 468992, 6044, 553472, 4172, 551424, 3364, 1433600, 2712, 677376, 2552, 1743872, 5072, 1784320, 5540, 1024512, 2564, 1110016, 3572, 5252096, 11496, 5855744, 13532, 18944, 1000, 12800, 424, 149504, 512, 9216, 312, 84480, 1308, 20992, 992, 17920, 996, 36352, 1096, 15872, 996, 1478144, 1736, 83968, 432, 1655296, 2292, 1654272, 2200, 604160, 560, 27136, 2024, 43520, 656, 21504, 1316, 26624, 324, 412160, 2000, 163840, 724, 155136, 724, 1257472, 7584, 1146368, 3468, 18944, 324, 2123264, 5428, 2144768, 6080, 57344, 896, 80384, 1284, 1655808, 1172, 260608, 1280, 908800, 1356, 532480, 1196, 46592, 340, 61440, 300, 50176, 300, 49664, 300, 50176, 300, 49152, 300, 48640, 300, 49664, 300, 4966
discard """
output: '''
13
hello humans!
13
'''
"""
import asyncfile, asyncdispatch, os
proc main() {.async.} =
let fn = getTempDir() / "foobar.txt"
removeFile(fn)
# Simple write/read test.
block:
var file = openAsync(fn, fmReadWrite)
await file.write("testing")
file.setFilePos(0)
await file.write("foo")
file.setFileSize(4)
file.setFilePos(0)
let data = await file.readAll()
doAssert data == "foot"
file.close()
# Append test
block:
var file = openAsync(fn, fmAppend)
await file.write("\ntest2")
let errorTest = file.readAll()
yield errorTest
doAssert errorTest.failed
file.close()
file = openAsync(fn, fmRead)
let data = await file.readAll()
doAssert data == "foot\ntest2"
file.close()
# Issue #5531
block:
removeFile(fn)
var file = openAsync(fn, fmWrite)
await file.write("test2")
file.close()
file = openAsync(fn, fmWrite)
await file.write("t3")
file.close()
file = openAsync(fn, fmRead)
let data = await file.readAll()
doAssert data == "t3"
file.close()
# Issue #7347
block:
var file = openAsync( parentDir(currentSourcePath) / "hello.txt")
echo file.getFileSize()
echo await file.readAll()
echo file.getFilePos()
waitFor main()