-
Notifications
You must be signed in to change notification settings - Fork 12.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Do not hash leading zero bytes of i64 numbers in Sip128 hasher #92103
Conversation
This comment has been minimized.
This comment has been minimized.
@bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit 26e11a65ff6301065305883c083c82e5d2fc9ad1 with merge 41ab8755356cf3e4f52487f9ee223909c551c1ac... |
26e11a6
to
58ddd5b
Compare
@the8472 I forgot to format the code, so I force-pushed to fix CI tests. Did it cancel the perf. build? |
@bors try- |
@bors try |
⌛ Trying commit 58ddd5b3502d8ace6dc249f3970c0459ff81abd2 with merge 00912d4c7610ecf99395e9146a0df5c231bbd3c3... |
☀️ Try build successful - checks-actions |
Queued 00912d4c7610ecf99395e9146a0df5c231bbd3c3 with parent 60f3bd7, future comparison URL. |
Finished benchmarking commit (00912d4c7610ecf99395e9146a0df5c231bbd3c3): comparison url. Summary: This change led to very large relevant improvements 🎉 in compiler performance.
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR led to changes in compiler perf. @bors rollup=never |
@@ -409,6 +409,18 @@ impl SipHasher128 { | |||
} | |||
} | |||
|
|||
macro_rules! dispatch_u64 { | |||
($target: expr, $value:expr) => { | |||
let value = $value as u64; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This turns negative numbers of small magnitude into unsigned ones of large magnitude. Are they uncommon enough that it doesn't matter (perf results do look good after all)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a very good point. I suppose so, for example in clap
there was not a single negative i64
number.
clap counts larger than 10
val: ('i64', '0'), count: 69716
val: ('i64', '1'), count: 51123
val: ('u64', '1'), count: 46405
val: ('u64', '4123556366180851409'), count: 40030
val: ('i64', '7'), count: 27610
val: ('i64', '3'), count: 26883
val: ('u64', '0'), count: 24688
val: ('u64', '3553076525994023152'), count: 19811
val: ('i64', '8'), count: 17967
val: ('i64', '5'), count: 16594
val: ('u64', '4'), count: 15662
val: ('u64', '10397717518009349142'), count: 14374
val: ('u64', '4675565100481621351'), count: 14332
val: ('u64', '9359258411201595610'), count: 14280
val: ('u64', '3'), count: 12971
val: ('u64', '2'), count: 11811
val: ('u64', '3424409560933081818'), count: 10390
val: ('i64', '22'), count: 10002
val: ('u64', '5'), count: 9893
val: ('i64', '2'), count: 9013
val: ('u64', '4175576119844674727'), count: 7956
val: ('u64', '2254901369232247007'), count: 7101
val: ('u64', '6'), count: 6694
val: ('u64', '17263232017173089937'), count: 6393
val: ('i64', '10'), count: 6303
val: ('u64', '15077819631841426575'), count: 6225
val: ('i64', '15'), count: 5927
val: ('i64', '4'), count: 5876
val: ('u64', '9313708463642812613'), count: 5563
val: ('u64', '8'), count: 5143
val: ('u64', '9'), count: 5098
val: ('u64', '12436741956529633511'), count: 4588
val: ('u64', '14829434783666926937'), count: 4238
val: ('u64', '8516250509783203598'), count: 4091
val: ('u64', '10'), count: 3586
val: ('i64', '32'), count: 3234
val: ('u64', '7'), count: 2904
val: ('u64', '3731342926491762417'), count: 2688
val: ('u64', '12325118110711103087'), count: 2564
val: ('i64', '9'), count: 2326
val: ('i64', '6'), count: 2197
val: ('u64', '11'), count: 1807
val: ('i64', '17'), count: 1446
val: ('u64', '14343764279712422270'), count: 1352
val: ('u64', '12'), count: 1321
val: ('i64', '20'), count: 1211
val: ('u64', '16991242760273525868'), count: 1208
val: ('u64', '14'), count: 1137
val: ('i64', '11'), count: 1130
val: ('i64', '26'), count: 1047
val: ('u64', '15422541054788436452'), count: 967
val: ('u64', '9785122672296426403'), count: 916
val: ('u64', '8173264106939382879'), count: 916
val: ('u64', '12460766867709644225'), count: 883
val: ('u64', '13954507008523372228'), count: 876
val: ('u64', '13'), count: 870
val: ('u64', '4953516894469726062'), count: 869
val: ('u64', '5351840378456149447'), count: 850
val: ('u64', '17508521953601273679'), count: 846
val: ('u64', '16959706381154203451'), count: 783
val: ('u64', '15'), count: 755
val: ('u64', '16'), count: 711
val: ('u64', '3198978688118858546'), count: 709
val: ('u64', '4926031611796201074'), count: 666
val: ('u64', '3084221938898261862'), count: 663
val: ('u64', '14512168144743378613'), count: 663
val: ('i64', '16'), count: 662
val: ('u64', '8373749061233914219'), count: 651
val: ('u64', '12900240287980658989'), count: 647
val: ('u64', '10857270988090866464'), count: 615
val: ('i64', '18'), count: 594
val: ('u64', '1276928100247864700'), count: 557
val: ('u64', '12212807588254450492'), count: 553
val: ('u64', '7293410763509788858'), count: 553
val: ('u64', '17414487241002693485'), count: 553
val: ('u64', '4730615519180414076'), count: 553
val: ('u64', '18'), count: 521
val: ('u64', '15029720767272404231'), count: 520
val: ('u64', '10531361067455361614'), count: 504
val: ('u64', '1697728074762586862'), count: 498
val: ('i64', '21'), count: 497
val: ('u64', '19'), count: 476
val: ('u64', '12888257279961233561'), count: 472
val: ('u64', '230115293571335744'), count: 460
val: ('u64', '7851447997805013263'), count: 423
val: ('u64', '18268550671202360175'), count: 421
val: ('u64', '10882931222121242394'), count: 409
val: ('u64', '24'), count: 404
val: ('i64', '13'), count: 403
val: ('u64', '14261018313741893166'), count: 402
val: ('u64', '11146145969246257400'), count: 401
val: ('i64', '12'), count: 397
val: ('u64', '16091424419180589980'), count: 383
val: ('u64', '3785016577619009572'), count: 377
val: ('u64', '7178288797994868914'), count: 377
val: ('u64', '17'), count: 371
val: ('u64', '14473835987706218422'), count: 354
val: ('u64', '583056068119256633'), count: 347
val: ('i64', '19'), count: 313
val: ('u64', '14801347897698107457'), count: 299
val: ('u64', '11611876753637737151'), count: 294
val: ('u64', '2817596162749060606'), count: 267
val: ('i64', '14'), count: 249
val: ('u64', '15836525964262797668'), count: 238
val: ('u64', '9004495922043804146'), count: 235
val: ('u64', '1693045649438289385'), count: 235
val: ('u64', '11548663128351014502'), count: 235
val: ('u64', '7231066428900354790'), count: 235
val: ('i64', '23'), count: 234
val: ('u64', '1151066230828838050'), count: 224
val: ('i64', '25'), count: 217
val: ('u64', '22'), count: 209
val: ('u64', '21'), count: 209
val: ('u64', '1786430848153721534'), count: 198
val: ('u64', '717224964392386724'), count: 192
val: ('i64', '35'), count: 188
val: ('u64', '17347150040457716767'), count: 183
val: ('u64', '1260755616316668822'), count: 166
val: ('u64', '7102902181303090067'), count: 163
val: ('u64', '20'), count: 160
val: ('i64', '29'), count: 160
val: ('u64', '10630686983033810931'), count: 160
val: ('u64', '3872312265541436359'), count: 152
val: ('u64', '4744484766366675976'), count: 150
val: ('u64', '14373709078601336969'), count: 145
val: ('u64', '18141027783828633404'), count: 140
val: ('u64', '11842206891812292464'), count: 139
val: ('i64', '24'), count: 139
val: ('u64', '15926829660047426411'), count: 137
val: ('u64', '6828511400896982793'), count: 133
val: ('u64', '16223337370864402989'), count: 118
val: ('u64', '1527221651336471'), count: 106
val: ('u64', '5934290079416697393'), count: 104
val: ('i64', '31'), count: 102
val: ('u64', '7914393758597035038'), count: 99
val: ('u64', '7242557889658258395'), count: 99
val: ('u32', '64'), count: 95
val: ('u64', '1521724093196311'), count: 94
val: ('u64', '9880219152616748179'), count: 93
val: ('u64', '3225968046817975941'), count: 92
val: ('u64', '13801988359420914882'), count: 91
val: ('u64', '16442543459689550152'), count: 87
val: ('u64', '11373167891584403890'), count: 87
val: ('u64', '1525022628080408'), count: 82
val: ('u64', '1529420674592536'), count: 82
val: ('u64', '1533818721104660'), count: 82
val: ('u64', '1536017744360724'), count: 82
val: ('u64', '15128606027534119622'), count: 81
val: ('u64', '7843173363127459213'), count: 79
val: ('u64', '1099511628032'), count: 78
val: ('u64', '15271518302699163385'), count: 76
val: ('u64', '1066033829928962345'), count: 73
val: ('u64', '18079401088936675055'), count: 72
val: ('u64', '10928653513314141561'), count: 72
val: ('u64', '3271229113085632895'), count: 72
val: ('u64', '10158639335571275732'), count: 71
val: ('u64', '23'), count: 71
val: ('u64', '1702638239974621460'), count: 70
val: ('u64', '13560770513350654490'), count: 70
val: ('u64', '6142549601549617973'), count: 69
val: ('u64', '7638960698149238382'), count: 68
val: ('u64', '14755978951955257389'), count: 68
val: ('u64', '1522823604824344'), count: 66
val: ('u64', '1523923116452376'), count: 66
val: ('u64', '1528321162964504'), count: 66
val: ('u64', '1532719209476628'), count: 66
val: ('u64', '1534918232732692'), count: 66
val: ('u64', '5381316971740057954'), count: 63
val: ('u64', '5353856357126547964'), count: 63
val: ('u64', '16263231830787805301'), count: 63
val: ('u64', '620166437783249184'), count: 60
val: ('u64', '18049469517547229757'), count: 60
val: ('u64', '13515071814850372670'), count: 60
val: ('u64', '13392129397242746422'), count: 60
val: ('u64', '2447783078148060494'), count: 59
val: ('u64', '12945362438948794844'), count: 59
val: ('u64', '8049583221647460045'), count: 57
val: ('u64', '2761689045897535380'), count: 57
val: ('u64', '9635222291745467359'), count: 57
val: ('u64', '13699322521062916524'), count: 56
val: ('u64', '8763731815232377981'), count: 55
val: ('u64', '15191366368004621059'), count: 54
val: ('u64', '15006274097834017715'), count: 54
val: ('u64', '17086401524900658843'), count: 53
val: ('u64', '16007729339347891935'), count: 52
val: ('u64', '43980465121296'), count: 51
val: ('u64', '10342647868919187185'), count: 50
val: ('u64', '38508830197340670'), count: 50
val: ('u64', '1525022628080417'), count: 50
val: ('u64', '1529420674592545'), count: 50
val: ('u64', '1533818721104669'), count: 50
val: ('u64', '1540415790872868'), count: 50
val: ('u64', '17106452343823006614'), count: 49
val: ('u64', '62672162797836'), count: 48
val: ('u64', '16307052434980877189'), count: 48
val: ('u64', '14918085701180073661'), count: 48
val: ('u64', '4529902387450120135'), count: 48
val: ('u64', '17342651063982746802'), count: 48
val: ('u64', '1651891799928311894'), count: 48
val: ('u64', '61572651169804'), count: 47
val: ('u64', '8762714086121276567'), count: 47
val: ('u64', '141837000016144'), count: 47
val: ('u64', '15767530671390576453'), count: 47
val: ('u64', '1512928000172054'), count: 47
val: ('u64', '282574488404236'), count: 47
val: ('u64', '4537538442993397567'), count: 47
val: ('u64', '14634070445650946595'), count: 46
val: ('u64', '12197500975648538900'), count: 46
val: ('u64', '62672162797857'), count: 46
val: ('u64', '14720773644038394912'), count: 46
val: ('u64', '2201897908438769206'), count: 44
val: ('u64', '8796093024256'), count: 42
val: ('u64', '25'), count: 42
val: ('u64', '1512928000172048'), count: 42
val: ('u64', '1539316279244816'), count: 42
val: ('u64', '1540415790872871'), count: 42
val: ('i64', '117'), count: 41
val: ('i64', '129'), count: 41
val: ('i64', '115'), count: 41
val: ('i64', '128'), count: 41
val: ('u64', '2199023256064'), count: 40
val: ('u64', '4270366873766265000'), count: 40
val: ('u64', '12590346959137693231'), count: 40
val: ('i64', '27'), count: 40
val: ('u64', '8362475310504463964'), count: 40
val: ('u64', '16492416629859869210'), count: 40
val: ('u64', '8302801358701319482'), count: 40
val: ('u64', '9581521860471055601'), count: 40
val: ('u64', '6339717300715212282'), count: 40
val: ('u64', '17739081170718606370'), count: 39
val: ('u64', '6463199092588012537'), count: 39
val: ('u64', '13450942318825287371'), count: 38
val: ('u64', '9922429832822829289'), count: 38
val: ('u64', '9986950373769682739'), count: 38
val: ('u64', '1517326046684184'), count: 38
val: ('u64', '1517326046684188'), count: 38
val: ('u64', '1521724093196317'), count: 38
val: ('u64', '14340879039198234161'), count: 38
val: ('u64', '13230579363344290205'), count: 37
val: ('u64', '1099511628036'), count: 36
val: ('u64', '27'), count: 36
val: ('u64', '13301032994335913104'), count: 36
val: ('u64', '17530691709057607205'), count: 36
val: ('u64', '1495335814123539'), count: 36
val: ('u64', '1517326046684208'), count: 36
val: ('u64', '1525022628080412'), count: 36
val: ('u64', '9069876638151160781'), count: 36
val: ('u64', '8528342034391903371'), count: 36
val: ('u64', '3298534884096'), count: 35
val: ('u64', '5497558140160'), count: 35
val: ('u64', '134140418619921'), count: 35
val: ('i64', '131'), count: 35
val: ('i64', '132'), count: 35
val: ('i64', '125'), count: 35
val: ('i64', '124'), count: 35
val: ('u64', '1527221651336482'), count: 35
val: ('u64', '13663715589581664588'), count: 34
val: ('u64', '10270741611847202945'), count: 34
val: ('u64', '62672162797840'), count: 34
val: ('u64', '62672162797861'), count: 34
val: ('u64', '1485440209471251'), count: 34
val: ('u64', '1516226535056152'), count: 34
val: ('u64', '1516226535056156'), count: 34
val: ('u64', '1516226535056161'), count: 34
val: ('u64', '1516226535056170'), count: 34
val: ('u64', '1516226535056177'), count: 34
val: ('u64', '1516226535056148'), count: 34
val: ('u64', '1517326046684193'), count: 34
val: ('u64', '1517326046684202'), count: 34
val: ('u64', '1517326046684180'), count: 34
val: ('u64', '1518425558312216'), count: 34
val: ('u64', '1518425558312220'), count: 34
val: ('u64', '1518425558312233'), count: 34
val: ('u64', '1518425558312212'), count: 34
val: ('u64', '1519525069940262'), count: 34
val: ('u64', '1519525069940244'), count: 34
val: ('u64', '1522823604824354'), count: 34
val: ('u64', '1523923116452381'), count: 34
val: ('u64', '1525022628080424'), count: 34
val: ('u64', '1527221651336477'), count: 34
val: ('u64', '1528321162964509'), count: 34
val: ('u64', '1529420674592540'), count: 34
val: ('u64', '1529420674592552'), count: 34
val: ('u64', '1532719209476633'), count: 34
val: ('u64', '1533818721104664'), count: 34
val: ('u64', '1533818721104676'), count: 34
val: ('u64', '1534918232732697'), count: 34
val: ('u64', '1536017744360728'), count: 34
val: ('u64', '1536017744360733'), count: 34
val: ('u64', '387028093067277'), count: 33
val: ('u64', '9337178021383192437'), count: 33
val: ('u64', '2095018513981585783'), count: 33
val: ('u64', '12094627908352'), count: 32
val: ('u64', '12588985021058100380'), count: 32
val: ('u64', '3647572784919789523'), count: 32
val: ('u64', '10995116280320'), count: 32
val: ('u64', '7770622571928249020'), count: 32
val: ('u64', '9745191140687621072'), count: 32
val: ('u64', '61572651169807'), count: 32
val: ('u64', '61572651169817'), count: 32
val: ('u64', '1526122139707412'), count: 32
val: ('u64', '1526122139707423'), count: 32
val: ('u64', '1530520186219796'), count: 32
val: ('u64', '1530520186219818'), count: 32
val: ('u64', '2225879557606095988'), count: 31
val: ('u64', '1496435325751587'), count: 31
val: ('u64', '1466691260593873445'), count: 31
val: ('u64', '37383395353105'), count: 30
val: ('u64', '11450092452267337001'), count: 30
val: ('u64', '11651898187838050413'), count: 30
val: ('u64', '12578021191460339684'), count: 30
val: ('u64', '8118305654842463098'), count: 30
val: ('u64', '14293651164416'), count: 29
val: ('u64', '15774093456027462068'), count: 29
val: ('u64', '7878982020546070894'), count: 29
val: ('u64', '8018269418161357853'), count: 29
val: ('u64', '7117829710136320230'), count: 29
val: ('u64', '10407228153110251052'), count: 29
val: ('u64', '18387249550974887491'), count: 29
val: ('u64', '673841591222401859'), count: 29
val: ('u64', '18300018891997473830'), count: 28
val: ('u64', '36283883725072'), count: 28
val: ('u64', '5467061697817418266'), count: 28
val: ('u64', '8833330914075347083'), count: 28
val: ('u64', '6597069768192'), count: 28
val: ('u64', '17729798039165116625'), count: 28
val: ('u64', '7371109685452221717'), count: 28
val: ('u64', '763061069854220'), count: 28
val: ('u64', '523778365952915859'), count: 28
val: ('u64', '17904992296327311236'), count: 28
val: ('u64', '404032157549208787'), count: 28
val: ('u64', '43980465121284'), count: 27
val: ('u32', '164'), count: 27
val: ('u64', '1446957302490124'), count: 27
val: ('u64', '1488738744355348'), count: 27
val: ('u64', '1840582465325590'), count: 27
val: ('u64', '12625836528494103352'), count: 26
val: ('u64', '6787551394714920148'), count: 26
val: ('u64', '38482906981138'), count: 26
val: ('u64', '135239930247954'), count: 26
val: ('u64', '1510728976915984'), count: 26
val: ('u64', '5081529687788729793'), count: 26
val: ('u64', '13084594167268299740'), count: 26
val: ('u64', '102254581406999'), count: 26
val: ('u64', '1532719209476630'), count: 26
val: ('u64', '703687441940495'), count: 26
val: ('u64', '787250325670927'), count: 26
val: ('u64', '1486539721099284'), count: 26
val: ('u64', '1514027511800092'), count: 26
val: ('u64', '1540415790872848'), count: 26
val: ('u64', '1540415790872864'), count: 26
val: ('u64', '1496435325751572'), count: 26
val: ('u64', '1498634349007636'), count: 26
val: ('u64', '2278188093282326'), count: 26
val: ('u64', '4476752172246491386'), count: 25
val: ('u64', '21990232560644'), count: 25
val: ('u64', '6584121183518706064'), count: 25
val: ('u64', '10649720286075230081'), count: 25
val: ('u64', '28'), count: 25
val: ('u64', '2433282028043031556'), count: 25
val: ('u64', '516770465175058'), count: 25
val: ('u64', '1078620907099408'), count: 25
val: ('u64', '1079720418727440'), count: 25
val: ('u64', '1433763162953740'), count: 25
val: ('u64', '1437061697837836'), count: 25
val: ('u64', '1440360232721932'), count: 25
val: ('u64', '1443658767606028'), count: 25
val: ('u64', '1450255837374220'), count: 25
val: ('u64', '1453554372258316'), count: 25
val: ('u64', '129742372107794'), count: 25
val: ('u64', '230897441886743'), count: 25
val: ('u64', '1301821767589908'), count: 25
val: ('u64', '1304020790845981'), count: 25
val: ('u64', '2346357814220311'), count: 25
val: ('u64', '1741626418802709'), count: 25
val: ('u64', '1781208837411862'), count: 25
val: ('u64', '14434378200233050206'), count: 24
val: ('u64', '42880953493248'), count: 24
val: ('u64', '9895604652288'), count: 24
val: ('u64', '5825763329062248101'), count: 24
val: ('u64', '6597069768196'), count: 24
val: ('u64', '8796093024260'), count: 24
val: ('u64', '17495364231153397948'), count: 24
val: ('u64', '16590396324043187078'), count: 24
val: ('u64', '8159332221075124997'), count: 24
val: ('u64', '16381146064150494751'), count: 24
val: ('u64', '11372431948001542340'), count: 24
val: ('u64', '12873598980330494200'), count: 24
val: ('u64', '133040906991888'), count: 24
val: ('u64', '8601647483485445669'), count: 24
val: ('u64', '17266919570775477750'), count: 24
val: ('u64', '17922039121703462186'), count: 24
val: ('u64', '13319157584847015273'), count: 24
val: ('u64', '2361070733454535769'), count: 24
val: ('u64', '17008334879502004956'), count: 24
val: ('u64', '2615234817342320622'), count: 24
val: ('u64', '9360619933158943794'), count: 24
val: ('u64', '12253662224792054513'), count: 24
val: ('u64', '7563436345536822254'), count: 24
val: ('u64', '8844445591934582311'), count: 24
val: ('u64', '63'), count: 24
val: ('u64', '10215511313851778562'), count: 24
val: ('u64', '51'), count: 24
val: ('u64', '1084118465239595'), count: 24
val: ('u64', '1085217976867624'), count: 24
val: ('u64', '236337436375242527'), count: 24
val: ('u64', '15925809545985139787'), count: 24
val: ('u64', '283674000032274'), count: 24
val: ('u64', '16222908092068349960'), count: 24
val: ('u64', '17300751243169971508'), count: 24
val: ('u64', '4074422149263508015'), count: 24
val: ('u64', '232735924896336374'), count: 24
val: ('u64', '14938656152367091148'), count: 24
val: ('u64', '11231423843769099888'), count: 24
val: ('u64', '10614125541832435012'), count: 24
val: ('u64', '14181708883219753832'), count: 24
val: ('u64', '18021725256364069089'), count: 24
val: ('u64', '1697146955343849257'), count: 24
val: ('u64', '8242583125433086362'), count: 24
val: ('u64', '2899608543514338824'), count: 24
val: ('u64', '10389208831618503424'), count: 24
val: ('u64', '13673058309665597875'), count: 24
val: ('u64', '53876069773576'), count: 23
val: ('u64', '2060016322158445485'), count: 23
val: ('u64', '36283883725060'), count: 23
val: ('u64', '10793583675805217472'), count: 23
val: ('u64', '4568563953489989740'), count: 23
val: ('u64', '8407803167579751399'), count: 23
val: ('u64', '6035233162407455602'), count: 23
val: ('u64', '139637976760072'), count: 23
val: ('u64', '12874973979857942802'), count: 23
val: ('u64', '5521315951478198545'), count: 23
val: ('u64', '17062143351369946852'), count: 23
val: ('u64', '9820246901184615860'), count: 23
val: ('u64', '11966596477788974868'), count: 23
val: ('u64', '12097158775235289077'), count: 22
val: ('u64', '24189255816712'), count: 22
val: ('u64', '31885837212932'), count: 22
val: ('u64', '14539856435240590400'), count: 22
val: ('u64', '16856647274143003998'), count: 22
val: ('u64', '10460364303053882946'), count: 22
val: ('u64', '16689685159187768074'), count: 22
val: ('u64', '9211445081593382334'), count: 22
val: ('u64', '2725440259312477593'), count: 22
val: ('u64', '2048562602178479272'), count: 22
val: ('u64', '120343201483834698'), count: 22
val: ('u64', '11873469830571137135'), count: 22
val: ('u64', '16425390972942458594'), count: 22
val: ('u64', '8428281289297094902'), count: 22
val: ('u64', '102254581406992'), count: 22
val: ('u64', '141837000016136'), count: 22
val: ('u64', '175921860485140'), count: 22
val: ('i64', '138'), count: 22
val: ('u64', '175921860485139'), count: 22
val: ('u64', '17040068721347235650'), count: 22
val: ('u64', '14540192323883882898'), count: 22
val: ('u64', '1534918232732694'), count: 22
val: ('u64', '1521724093196314'), count: 22
val: ('u64', '500277790753299'), count: 22
val: ('u64', '520069000057875'), count: 22
val: ('u64', '867514674517008'), count: 22
val: ('u64', '2078076976979736'), count: 22
val: ('u64', '1540415790871580'), count: 22
val: ('u64', '14973183094282036544'), count: 22
val: ('u64', '11429806020050747157'), count: 21
val: ('u64', '7001988334154764505'), count: 21
val: ('u64', '26388279072772'), count: 21
val: ('u64', '13194139536384'), count: 21
val: ('u64', '7627954360765671034'), count: 21
val: ('u64', '6027146316751225433'), count: 21
val: ('u64', '4392643963219895754'), count: 21
val: ('u64', '6671596510193214366'), count: 21
val: ('u64', '102254581407007'), count: 21
val: ('u64', '148434069784340'), count: 21
val: ('u64', '62672162797850'), count: 21
val: ('u64', '109951162803204'), count: 21
val: ('u64', '16796476644601923016'), count: 21
val: ('u64', '12995976728580809009'), count: 21
val: ('u64', '2199023256068'), count: 20
val: ('u64', '390326627951377'), count: 20
val: ('u64', '5497558140164'), count: 20
val: ('u64', '18691697676544'), count: 20
val: ('u64', '12094627908356'), count: 20
val: ('u64', '34084860469004'), count: 20
val: ('u64', '39582418609164'), count: 20
val: ('u64', '2230619916444788390'), count: 20
val: ('u64', '12400486014995929589'), count: 20
val: ('u64', '10995116280324'), count: 20
val: ('u64', '7696581396224'), count: 20
val: ('u64', '1486539721099299'), count: 20
val: ('u64', '76965813962240'), count: 20
val: ('u64', '1498634349007651'), count: 20
val: ('u64', '16696833344260503642'), count: 20
val: ('u64', '12834772897077537023'), count: 20
val: ('u64', '994739235223631525'), count: 20
val: ('u64', '101155069778960'), count: 20
val: ('u64', '16776544916791110729'), count: 20
val: ('u64', '2059170146012788148'), count: 20
val: ('u64', '17483193752926515248'), count: 20
val: ('u64', '38'), count: 20
val: ('u64', '15551398757186370577'), count: 20
val: ('u64', '62'), count: 20
val: ('u64', '10825642441266935255'), count: 20
val: ('u64', '4772254417877066457'), count: 20
val: ('u64', '1519525069940252'), count: 20
val: ('u64', '1533818721104674'), count: 20
val: ('u64', '481417650246029890'), count: 20
val: ('u64', '10204395005049140037'), count: 20
val: ('u64', '17009339381642948161'), count: 20
val: ('u64', '5554103258360113733'), count: 20
val: ('u64', '15623969011952665914'), count: 20
val: ('u64', '15089062524500007171'), count: 20
val: ('u64', '27487790700804'), count: 19
val: ('u64', '43980465121323'), count: 19
val: ('u64', '17488724351511742793'), count: 19
val: ('u64', '39582418609156'), count: 19
val: ('u64', '9190978810673496851'), count: 19
val: ('u64', '71468255822106'), count: 19
val: ('u64', '17756895554821204302'), count: 19
val: ('u64', '3971959454689863651'), count: 19
val: ('u64', '3845899007154490022'), count: 19
val: ('u64', '476088534937882'), count: 19
val: ('u64', '5917697101411491378'), count: 19
val: ('u64', '131941395363844'), count: 19
val: ('u64', '15542171270079706936'), count: 19
val: ('u64', '10285376222477888174'), count: 19
val: ('u64', '61572651169809'), count: 19
val: ('u64', '877305747422240528'), count: 19
val: ('u64', '4292234320994743381'), count: 19
val: ('i64', '140'), count: 19
val: ('u64', '4837238526296111186'), count: 19
val: ('u64', '6453498886998389100'), count: 19
val: ('u64', '2187111740239077683'), count: 19
val: ('u64', '727876697757204'), count: 19
val: ('u64', '17039470379272705283'), count: 19
val: ('u64', '8013210429559930811'), count: 19
val: ('u64', '17829434712787171627'), count: 19
val: ('u64', '13609844635355704462'), count: 19
val: ('u64', '10723693178006902193'), count: 19
val: ('u64', '13898529479314358904'), count: 19
val: ('u64', '16164155664028402816'), count: 19
val: ('u64', '394724674463500'), count: 19
val: ('u64', '1540415790872853'), count: 19
val: ('u64', '417814418652177'), count: 19
val: ('u64', '10993848997574897548'), count: 19
val: ('u64', '47279000005380'), count: 18
val: ('u64', '14411274106407275011'), count: 18
val: ('u64', '57174604657672'), count: 18
val: ('u64', '23089744188676'), count: 18
val: ('u64', '3248394460770503028'), count: 18
val: ('u64', '1488738744355363'), count: 18
val: ('u64', '61572651169796'), count: 18
val: ('u64', '2696421360316639161'), count: 18
val: ('u64', '2812678025819075250'), count: 18
val: ('u64', '93458488382733'), count: 18
val: ('u64', '487083651218194'), count: 18
val: ('u64', '18431869087064001423'), count: 18
val: ('u64', '12783853161284751233'), count: 18
val: ('u64', '15155052192518490539'), count: 18
val: ('u64', '308962767477005'), count: 18
val: ('u64', '315559837245207'), count: 18
val: ('u64', '724578162873096'), count: 18
val: ('u64', '373833953530893'), count: 18
val: ('u64', '379331511671053'), count: 18
val: ('u64', '390326627951389'), count: 18
val: ('u64', '1486539721099289'), count: 18
val: ('u64', '1488738744355353'), count: 18
val: ('u64', '1509629465287956'), count: 18
val: ('u64', '1509629465287971'), count: 18
val: ('u64', '1509629465287952'), count: 18
val: ('u64', '1511828488544031'), count: 18
val: ('u64', '1511828488544036'), count: 18
val: ('u64', '1511828488544016'), count: 18
val: ('u64', '1512928000172063'), count: 18
val: ('u64', '1512928000172052'), count: 18
val: ('u64', '1514027511800102'), count: 18
val: ('u64', '1514027511800080'), count: 18
val: ('u64', '1516226535056175'), count: 18
val: ('u64', '1516226535056168'), count: 18
val: ('u64', '1517326046684206'), count: 18
val: ('u64', '1517326046684200'), count: 18
val: ('u64', '1518425558312225'), count: 18
val: ('u64', '1518425558312231'), count: 18
val: ('u64', '1519525069940248'), count: 18
val: ('u64', '1522823604824352'), count: 18
val: ('u64', '1523923116452378'), count: 18
val: ('u64', '1525022628080422'), count: 18
val: ('u64', '1525022628080415'), count: 18
val: ('u64', '1527221651336479'), count: 18
val: ('u64', '1527221651336474'), count: 18
val: ('u64', '1528321162964506'), count: 18
val: ('u64', '1529420674592550'), count: 18
val: ('u64', '1529420674592543'), count: 18
val: ('u64', '1533818721104667'), count: 18
val: ('u64', '1536017744360731'), count: 18
val: ('u64', '1539316279244820'), count: 18
val: ('u64', '1539316279244825'), count: 18
val: ('u64', '1540415790872873'), count: 18
val: ('u64', '1496435325751577'), count: 18
val: ('u64', '1498634349007641'), count: 18
val: ('u64', '786150814042909'), count: 18
val: ('u64', '801543976835357'), count: 18
val: ('u64', '3634687952827901359'), count: 18
val: ('u64', '14218250542193269654'), count: 18
val: ('u64', '10701789009426519427'), count: 18
val: ('u64', '17450573329112963510'), count: 17
val: ('u64', '7696581396228'), count: 17
val: ('u64', '5424100724188568282'), count: 17
val: ('u64', '8184391836281476160'), count: 17
val: ('u64', '14700707472326475153'), count: 17
val: ('u64', '417814418652164'), count: 17
val: ('u64', '2867475439091971494'), count: 17
val: ('u64', '20890720932608'), count: 17
val: ('u64', '47279000005383'), count: 17
val: ('u64', '8191305369603297891'), count: 17
val: ('u64', '12957822557762148515'), count: 17
val: ('u64', '27487790700808'), count: 17
val: ('u64', '11007066070298860069'), count: 17
val: ('u64', '149533581412360'), count: 17
val: ('u64', '928058122184191911'), count: 17
val: ('u64', '15082851388354036231'), count: 17
val: ('u64', '9759949690866816583'), count: 17
val: ('u64', '140737488388100'), count: 17
val: ('u64', '146235046528273'), count: 17
val: ('u64', '148434069784339'), count: 17
val: ('u64', '108851651175184'), count: 17
val: ('u64', '3022483323762603190'), count: 17
val: ('u64', '210006720954134'), count: 17
val: ('u64', '3170724349574686996'), count: 17
val: ('u64', '7613820641803228537'), count: 17
val: ('u64', '26388279072786'), count: 17
val: ('u64', '293569604684568'), count: 17
val: ('u64', '90159953498639'), count: 17
val: ('u64', '1012650209417498'), count: 17
val: ('u64', '299067162824735'), count: 17
val: ('u64', '656408441935128'), count: 17
val: ('u64', '1735029349034521'), count: 17
val: ('u64', '16125297545420784736'), count: 17
val: ('u64', '1386484162948370'), count: 17
val: ('u64', '199011604673821'), count: 17
val: ('u64', '72567767450120'), count: 16
val: ('u64', '76965813962248'), count: 16
val: ('u64', '102254581406984'), count: 16
val: ('u64', '1803664824281338935'), count: 16
val: ('u64', '5279332388172811762'), count: 16
val: ('u64', '129742372107798'), count: 16
val: ('u64', '6365100989899901984'), count: 16
val: ('u64', '15610532100416347476'), count: 16
val: ('u64', '13023302294063180985'), count: 16
val: ('u64', '65970697680128'), count: 16
val: ('u64', '10587827272312612760'), count: 16
val: ('u64', '3062881391065216153'), count: 16
val: ('u64', '6366296982245697355'), count: 16
val: ('u64', '24189255816708'), count: 16
val: ('u64', '8001890998537028479'), count: 16
val: ('u64', '46179488377352'), count: 16
val: ('u64', '101155069778971'), count: 16
val: ('u64', '69269232566020'), count: 16
val: ('u64', '32985348840968'), count: 16
val: ('u64', '72567767450112'), count: 16
val: ('u64', '141837000016157'), count: 16
val: ('u64', '3962535509605348054'), count: 16
val: ('u64', '43980465121297'), count: 16
val: ('u64', '82463372102400'), count: 16
val: ('u64', '50577534889484'), count: 16
val: ('u64', '39582418609169'), count: 16
val: ('u64', '130841883735816'), count: 16
val: ('u64', '74766790706193'), count: 16
val: ('u64', '477188046565900'), count: 16
val: ('u64', '118747255827483'), count: 16
val: ('u64', '146235046528256'), count: 16
val: ('u64', '156130651180548'), count: 16
val: ('u64', '75866302334208'), count: 16
val: ('u64', '8004323621108293509'), count: 16
val: ('u64', '136339441875985'), count: 16
val: ('u64', '62672162797835'), count: 16
val: ('u64', '205608674441988'), count: 16
val: ('u64', '63771674425096'), count: 16
val: ('u64', '677299162867732'), count: 16
val: ('u64', '233096465142807'), count: 16
val: ('u64', '237494511654939'), count: 16
val: ('u64', '728976209385229'), count: 16
val: ('u64', '123145302339602'), count: 16
val: ('u64', '318858372129307'), count: 16
val: ('u64', '102254581406994'), count: 16
val: ('u64', '138538465132050'), count: 16
val: ('u64', '858718581493000'), count: 16
val: ('u64', '46'), count: 16
val: ('u64', '1487639232726806'), count: 16
val: ('u64', '1489838255982871'), count: 16
val: ('u64', '1541515302492205'), count: 16
val: ('u64', '1497534837379094'), count: 16
val: ('u64', '1499733860635159'), count: 16
val: ('u64', '1871368790910485'), count: 16
val: ('u64', '6481674067216154038'), count: 16
val: ('u64', '6509663261803311881'), count: 16
val: ('u64', '4674807930557227822'), count: 16
val: ('u64', '2086270601703419948'), count: 16
val: ('u64', '6761438423610176670'), count: 16
val: ('u64', '16777113381245149658'), count: 16
val: ('u64', '781752767530776'), count: 16
val: ('u64', '8173411933912958581'), count: 16
val: ('u64', '11108110998242258813'), count: 16
val: ('u64', '8988027627290221778'), count: 16
val: ('u64', '11913884427921192055'), count: 16
val: ('u64', '4433178997300477684'), count: 16
val: ('u64', '10340120308351377116'), count: 16
val: ('u64', '9572700583032802285'), count: 16
val: ('u64', '396741283813451738'), count: 16
val: ('u64', '11724230237239570890'), count: 16
val: ('u64', '1663556415827805301'), count: 16
val: ('u64', '14855620591367359132'), count: 16
val: ('u64', '14672461920353068759'), count: 16
val: ('u64', '2775094484072873721'), count: 16
val: ('u64', '16291592883037191672'), count: 16
val: ('u64', '2820275387395126199'), count: 16
val: ('u64', '4516171189582183448'), count: 16
val: ('u64', '225399883746586'), count: 16
val: ('u64', '3876091767365045200'), count: 16
val: ('u64', '5729728227359075643'), count: 16
val: ('u64', '11462690582903731624'), count: 16
val: ('u64', '10303992314892173913'), count: 16
val: ('u64', '2746488176456641767'), count: 16
val: ('u64', '4710516627113035484'), count: 16
val: ('u64', '14772452292228586223'), count: 16
val: ('u64', '11400539333733961433'), count: 16
val: ('u64', '8177386716495267202'), count: 16
val: ('u64', '3080242251690284804'), count: 16
val: ('u64', '17830221332277793721'), count: 16
val: ('u64', '15643013742892927884'), count: 16
val: ('u64', '16086794021148435408'), count: 15
val: ('u64', '25288767444740'), count: 15
val: ('u64', '7135137603522209902'), count: 15
val: ('u64', '2847366339243529927'), count: 15
val: ('u64', '9692854017002441492'), count: 15
val: ('u64', '4398046512128'), count: 15
val: ('u64', '8311124266976595148'), count: 15
val: ('u64', '8249629852490847464'), count: 15
val: ('u64', '10479079407628131442'), count: 15
val: ('u64', '1275967192187507155'), count: 15
val: ('u64', '9176478570052424504'), count: 15
val: ('u64', '16492674420487'), count: 15
val: ('u64', '15824745009649522918'), count: 15
val: ('u64', '4945973918583958092'), count: 15
val: ('u64', '36283883725068'), count: 15
val: ('u64', '15790765708795183900'), count: 15
val: ('u64', '9294675500910437449'), count: 15
val: ('u64', '11092481723449020900'), count: 15
val: ('u64', '3441602257183268649'), count: 15
val: ('u64', '15272785551440768833'), count: 15
val: ('u64', '94558000010760'), count: 15
val: ('u64', '15151198705754877758'), count: 15
val: ('u64', '16809291353205113459'), count: 15
val: ('u64', '11783770316539660641'), count: 15
val: ('u64', '11449109331115840825'), count: 15
val: ('u64', '5964104885366139599'), count: 15
val: ('u64', '93458488382740'), count: 15
val: ('u64', '37383395353111'), count: 15
val: ('u64', '41781441865245'), count: 15
val: ('u64', '46179488377362'), count: 15
val: ('u64', '153931627924488'), count: 15
val: ('u64', '70368744194060'), count: 15
val: ('u64', '11331214967710625838'), count: 15
val: ('u64', '184717953509385'), count: 15
val: ('u64', '92358976754692'), count: 15
val: ('u64', '31885837212939'), count: 15
val: ('u64', '299067162824725'), count: 15
val: ('u64', '146235046528281'), count: 15
val: ('u64', '146235046528282'), count: 15
val: ('u64', '153931627924502'), count: 15
val: ('u64', '61572651169808'), count: 15
val: ('u64', '390326627951368'), count: 15
val: ('u64', '27487790700829'), count: 15
val: ('u64', '197912093045781'), count: 15
val: ('u64', '40'), count: 15
val: ('u64', '106652627919122'), count: 15
val: ('u64', '44'), count: 15
val: ('u64', '775155697762582'), count: 15
val: ('u64', '195713069789712'), count: 15
val: ('u64', '740628533561957438'), count: 15
val: ('u64', '1041237511746325'), count: 15
val: ('u64', '507974372150802'), count: 15
val: ('u64', '514571441918994'), count: 15
val: ('u64', '483785116334103'), count: 15
val: ('u32', '264'), count: 15
val: ('u64', '775155697762581'), count: 15
val: ('u64', '775155697762583'), count: 15
val: ('u64', '1310617860614166'), count: 15
val: ('u64', '1426066581557512'), count: 15
val: ('u64', '1426066581557526'), count: 15
val: ('u64', '1465649000166678'), count: 15
val: ('u64', '355142255854354'), count: 15
val: ('u64', '627821139606296'), count: 15
val: ('u64', '870813209401368'), count: 15
val: ('u64', '1758119093223182'), count: 15
val: ('u64', '1784507372295952'), count: 15
val: ('u64', '1792203953692180'), count: 15
val: ('u64', '2169336442107164'), count: 15
val: ('u64', '2234207628161046'), count: 15
val: ('u64', '1560207000177435'), count: 15
val: ('u64', '1749323000198932'), count: 15
val: ('u64', '1788905418808092'), count: 15
val: ('u64', '1841681976953612'), count: 15
val: ('u64', '2009907256042513'), count: 15
val: ('u64', '1199567186182944'), count: 15
val: ('u64', '1803199069972491'), count: 15
val: ('u64', '127543348851741'), count: 15
val: ('u64', '1225637791070846096'), count: 14
val: ('u64', '3298534884100'), count: 14
val: ('u64', '5133902845492319358'), count: 14
val: ('u64', '387028093067272'), count: 14
val: ('u64', '18691697676572'), count: 14
val: ('u64', '11716881615264026246'), count: 14
val: ('u64', '1345271515661785468'), count: 14
val: ('u64', '11413532002269996633'), count: 14
val: ('u64', '20890720932619'), count: 14
val: ('u64', '13216236219785016657'), count: 14
val: ('u64', '14748642964864597937'), count: 14
val: ('u64', '45079976749316'), count: 14
val: ('u64', '60473139541768'), count: 14
val: ('u64', '9142468193664705415'), count: 14
val: ('u64', '21990232560648'), count: 14
val: ('u64', '9895604652292'), count: 14
val: ('u64', '2677299014954721716'), count: 14
val: ('u64', '78065325590276'), count: 14
val: ('u64', '16492674420484'), count: 14
val: ('u64', '606436877455874907'), count: 14
val: ('u64', '929263289420251089'), count: 14
val: ('u64', '47279000005388'), count: 14
val: ('u64', '5497558140179'), count: 14
val: ('u64', '7535976790584596415'), count: 14
val: ('u64', '101155069778965'), count: 14
val: ('u64', '7113633460826314552'), count: 14
val: ('u64', '17567148905121068024'), count: 14
val: ('u64', '83562883730432'), count: 14
val: ('u64', '13220558627109366807'), count: 14
val: ('u64', '65970697681924'), count: 14
val: ('u64', '175921860485128'), count: 14
val: ('u64', '2283742128855646029'), count: 14
val: ('u64', '179220395369224'), count: 14
val: ('u64', '71468255822080'), count: 14
val: ('u64', '129742372107780'), count: 14
val: ('u64', '188016488393480'), count: 14
val: ('u64', '140737488388113'), count: 14
val: ('u64', '148434069784324'), count: 14
val: ('u64', '244091581423124'), count: 14
val: ('u64', '188016488393476'), count: 14
val: ('u64', '52776558145540'), count: 14
val: ('u64', '234195976770837'), count: 14
val: ('u64', '213305255838243'), count: 14
val: ('u64', '49478023261460'), count: 14
val: ('u64', '128642860479756'), count: 14
val: ('u64', '710284511708685'), count: 14
val: ('u64', '365037860506628'), count: 14
val: ('u64', '421112953536268'), count: 14
val: ('u64', '741070837293576'), count: 14
val: ('u64', '462894395401488'), count: 14
val: ('u64', '8929467853982238041'), count: 14
val: ('u64', '12052290535018165407'), count: 14
val: ('u64', '305664232592926'), count: 14
val: ('u64', '428809534932507'), count: 14
val: ('u64', '330953000037649'), count: 14
val: ('u64', '686095255891985'), count: 14
val: ('u64', '1083018953611528'), count: 14
val: ('u64', '775155697762564'), count: 14
val: ('u64', '1477743628075016'), count: 14
val: ('u64', '1503032395519752'), count: 14
val: ('u64', '1549211883897129'), count: 14
val: ('u64', '654209418679068'), count: 14
val: ('u64', '2073678930468376'), count: 14
val: ('u64', '1373290023411985'), count: 14
val: ('u64', '1964827279293188'), count: 14
val: ('u64', '1972523860689425'), count: 14
val: ('u64', '2171535465363224'), count: 14
val: ('u64', '805114402173937513'), count: 14
val: ('u64', '13487732336764186762'), count: 14
val: ('u64', '4280001328370020367'), count: 14
val: ('u64', '17769936429014634005'), count: 14
val: ('u64', '11459277574695946541'), count: 14
val: ('u64', '2866107521534286248'), count: 14
val: ('u64', '1740526907174664'), count: 14
val: ('u64', '13655581639867720576'), count: 14
val: ('u64', '17450044268509394602'), count: 14
val: ('u64', '90159953498632'), count: 13
val: ('u64', '776799016710660939'), count: 13
val: ('u64', '9286772987678573310'), count: 13
val: ('u64', '8485205323870965883'), count: 13
val: ('u64', '30786325584907'), count: 13
val: ('u64', '2845575871855831341'), count: 13
val: ('u64', '208907209326088'), count: 13
val: ('u64', '43980465121309'), count: 13
val: ('u64', '388127604695313'), count: 13
val: ('u64', '36283883725064'), count: 13
val: ('u64', '390326627951403'), count: 13
val: ('u64', '398023209347597'), count: 13
val: ('u64', '118747255827460'), count: 13
val: ('u64', '399122720975659'), count: 13
val: ('u64', '64871186053888'), count: 13
val: ('u64', '9027982489778093240'), count: 13
val: ('u64', '1515240334076986329'), count: 13
val: ('u64', '46179488377348'), count: 13
val: ('u64', '29'), count: 13
val: ('u64', '69269232566036'), count: 13
val: ('u64', '127543348851716'), count: 13
val: ('u64', '75866302334216'), count: 13
val: ('u64', '83562883730452'), count: 13
val: ('u64', '12432407276130822819'), count: 13
val: ('u64', '96757023266836'), count: 13
val: ('u64', '139637976760084'), count: 13
val: ('u64', '11719199570092610840'), count: 13
val: ('u64', '137438953504004'), count: 13
val: ('u64', '7216812116415048387'), count: 13
val: ('u64', '148434069784352'), count: 13
val: ('u64', '148434069784328'), count: 13
val: ('u64', '6537932804690615392'), count: 13
val: ('u64', '16240763310221722341'), count: 13
val: ('u64', '476088534937877'), count: 13
val: ('u64', '177021372113160'), count: 13
val: ('u64', '177021372113163'), count: 13
val: ('u64', '70368744194052'), count: 13
val: ('u64', '118747255827468'), count: 13
val: ('u64', '73667279078144'), count: 13
val: ('u64', '201210627929864'), count: 13
val: ('i64', '134'), count: 13
val: ('u64', '233096465142792'), count: 13
val: ('u64', '4147472362124766531'), count: 13
val: ('u64', '150633093040401'), count: 13
val: ('u64', '19791209304589'), count: 13
val: ('u64', '13764297334843790753'), count: 13
val: ('u64', '535462162851604'), count: 13
val: ('u64', '7995852325303511722'), count: 13
val: ('u64', '546457279131931'), count: 13
val: ('u64', '311161790733064'), count: 13
val: ('u64', '5879461502748870859'), count: 13
val: ('u64', '10240676418040906023'), count: 13
val: ('u64', '15387105477788167043'), count: 13
val: ('u64', '3582898449924056622'), count: 13
val: ('u64', '12609287046972513905'), count: 13
val: ('u64', '14293651164435'), count: 13
val: ('u64', '2067127006936237744'), count: 13
val: ('u64', '8440668246243817679'), count: 13
val: ('u64', '15147621271319098156'), count: 13
val: ('u64', '352943232598293'), count: 13
val: ('u64', '360639813994517'), count: 13
val: ('u64', '56'), count: 13
val: ('u64', '365037860506645'), count: 13
val: ('u64', '61572651169818'), count: 13
val: ('u64', '203409651185942'), count: 13
val: ('u64', '109951162803229'), count: 13
val: ('u64', '656408441935129'), count: 13
val: ('u64', '216603790722317'), count: 13
val: ('u64', '219902325606422'), count: 13
val: ('u64', '56075093029644'), count: 13
val: ('u64', '337550069805835'), count: 13
val: ('u64', '507974372150792'), count: 13
val: ('u64', '747667907061773'), count: 13
val: ('u64', '31885837212942'), count: 13
val: ('u64', '769658139622413'), count: 13
val: ('u64', '365037860506636'), count: 13
val: ('u64', '390326627951372'), count: 13
val: ('u64', '26'), count: 13
val: ('u64', '613527488441878'), count: 13
val: ('u64', '680597697751830'), count: 13
val: ('u64', '697090372172310'), count: 13
val: ('u64', '717981093104918'), count: 13
val: ('u64', '734473767525398'), count: 13
val: ('u64', '755364488458006'), count: 13
val: ('u64', '805942023347478'), count: 13
val: ('u64', '989560465228817'), count: 13
val: ('u64', '251788162819357'), count: 13
val: ('u64', '844424930328598'), count: 13
val: ('u64', '267181325611792'), count: 13
val: ('u64', '1010451186161424'), count: 13
val: ('u64', '587139209369100'), count: 13
val: ('u64', '400222232603673'), count: 13
val: ('u64', '1033540930350088'), count: 13
val: ('u64', '350744209342231'), count: 13
val: ('u64', '1105009186172168'), count: 13
val: ('u64', '382630046555158'), count: 13
val: ('u64', '1188572069902600'), count: 13
val: ('u64', '454098302377233'), count: 13
val: ('u64', '1360095883875606'), count: 13
val: ('u64', '1376588558296086'), count: 13
val: ('u64', '1463449976910600'), count: 13
val: ('u64', '1526122139708424'), count: 13
val: ('u64', '1540415790872841'), count: 13
val: ('u64', '703687441940531'), count: 13
val: ('u64', '1187472558274580'), count: 13
val: ('u64', '28587302328845'), count: 13
val: ('u64', '1229254000139796'), count: 13
val: ('u64', '1253443255956493'), count: 13
val: ('u64', '1277632511773206'), count: 13
val: ('u64', '1471146558306839'), count: 13
val: ('u64', '131941395363853'), count: 13
val: ('u64', '332052511665700'), count: 13
val: ('u64', '264982302355716'), count: 13
val: ('u64', '1518425558312218'), count: 13
val: ('u64', '931286348943134'), count: 13
val: ('u64', '1739427395546636'), count: 13
val: ('u64', '1775711279271698'), count: 13
val: ('u64', '1905453651379475'), count: 13
val: ('u64', '1393081232716568'), count: 13
val: ('u64', '1575600162969877'), count: 13
val: ('u64', '1695446930425361'), count: 13
val: ('u64', '1840582465325580'), count: 13
val: ('u64', '1139094046641181'), count: 13
val: ('u64', '849922488468753'), count: 13
val: ('u64', '13658302702032323475'), count: 13
val: ('u64', '138538465132049'), count: 13
val: ('u64', '56075093029640'), count: 12
val: ('u64', '63771674425864'), count: 12
val: ('u64', '68169720937992'), count: 12
val: ('u64', '24189255816711'), count: 12
val: ('u64', '17999921399090086941'), count: 12
val: ('u64', '8954906340537193604'), count: 12
val: ('u64', '16966580297247448238'), count: 12
val: ('u64', '894031539582597525'), count: 12
val: ('u64', '109951162803218'), count: 12
val: ('u64', '29686813956879'), count: 12
val: ('u64', '43980465121300'), count: 12
val: ('u64', '9615632160547607980'), count: 12
val: ('u64', '52776558145544'), count: 12
val: ('u64', '37383395353096'), count: 12
val: ('u64', '71468255822087'), count: 12
val: ('u64', '13194139536388'), count: 12
val: ('u64', '14293651164420'), count: 12
val: ('u64', '51677046517512'), count: 12
val: ('u64', '65970697681920'), count: 12
val: ('u64', '68169720937984'), count: 12
val: ('u64', '20890720932650'), count: 12
val: ('u64', '11947421069903910358'), count: 12
val: ('u64', '14775899548974021021'), count: 12
val: ('u64', '9118557071994277285'), count: 12
val: ('u64', '1532187329583188249'), count: 12
val: ('u64', '24189255816716'), count: 12
val: ('u64', '47279000005385'), count: 12
val: ('u64', '30786325584916'), count: 12
val: ('u64', '54975581401608'), count: 12
val: ('u64', '46179488377371'), count: 12
val: ('u64', '1990723494324315395'), count: 12
val: ('u64', '4281316336405434388'), count: 12
val: ('u64', '65970697681940'), count: 12
val: ('u64', '942729038461747028'), count: 12
val: ('u64', '14362552894507667204'), count: 12
val: ('u64', '436506116328712'), count: 12
val: ('u64', '3926778354114988977'), count: 12
val: ('u64', '11779756130812310783'), count: 12
val: ('u64', '35'), count: 12
val: ('u64', '454098302377224'), count: 12
val: ('u64', '118747255827465'), count: 12
val: ('u64', '136339441875976'), count: 12
val: ('u64', '8404237374461061733'), count: 12
val: ('u64', '129742372107784'), count: 12
val: ('u64', '13981132825993736909'), count: 12
val: ('u64', '14169620064722848439'), count: 12
val: ('u32', '2641'), count: 12
val: ('u64', '52919071584095115'), count: 12
val: ('u64', '76965813960968'), count: 12
val: ('u64', '12287127119175554758'), count: 12
val: ('u64', '111050674431236'), count: 12
val: ('u64', '16139176164455508226'), count: 12
val: ('u64', '155031139552520'), count: 12
val: ('u64', '95657511638276'), count: 12
val: ('u64', '184717953507332'), count: 12
val: ('u64', '134140418612484'), count: 12
val: ('u64', '184717953509384'), count: 12
val: ('u64', '96757023266820'), count: 12
val: ('u64', '8257562096857072886'), count: 12
val: ('u64', '7853358598643073540'), count: 12
val: ('u64', '6950580220513806017'), count: 12
val: ('u64', '2834877361686172778'), count: 12
val: ('u64', '11759669134883036209'), count: 12
val: ('u64', '1205857905794501823'), count: 12
val: ('u64', '13504542906581339604'), count: 12
val: ('u64', '10493429018525932629'), count: 12
val: ('u64', '96757023266828'), count: 12
val: ('u64', '253987186075400'), count: 12
val: ('u64', '112150186059276'), count: 12
val: ('u64', '275977418636040'), count: 12
val: ('u64', '279275953520136'), count: 12
val: ('u64', '289171558172424'), count: 12
val: ('u64', '10070494053858673585'), count: 12
val: ('u64', '17375186009987835362'), count: 12
val: ('u64', '16336244331170372538'), count: 12
val: ('u64', '211106232582155'), count: 12
val: ('u64', '6018497304626683430'), count: 12
val: ('u64', '316659348873224'), count: 12
val: ('u64', '218802813978379'), count: 12
val: ('u64', '11126553716731062593'), count: 12
val: ('u64', '139637976760064'), count: 12
val: ('u64', '195713069789700'), count: 12
val: ('u64', '195713069789707'), count: 12
val: ('u64', '156130651180566'), count: 12
val: ('u64', '34084860469016'), count: 12
val: ('u64', '61572651169827'), count: 12
val: ('u64', '61572651169834'), count: 12
val: ('u64', '200111116301837'), count: 12
val: ('u64', '45'), count: 12
val: ('u64', '57'), count: 12
val: ('u64', '69'), count: 12
val: ('u64', '213305255838212'), count: 12
val: ('u64', '153931627924501'), count: 12
val: ('u64', '246290604679172'), count: 12
val: ('u64', '465093418657544'), count: 12
val: ('u64', '245191093048324'), count: 12
val: ('u64', '65'), count: 12
val: ('u64', '6597069768208'), count: 12
val: ('u64', '133040906991884'), count: 12
val: ('u64', '64'), count: 12
val: ('u64', '584940186113032'), count: 12
val: ('u64', '313360813988100'), count: 12
val: ('u64', '337550069800708'), count: 12
val: ('u64', '332052511662600'), count: 12
val: ('u64', '418913930280205'), count: 12
val: ('u64', '427710023304461'), count: 12
val: ('u64', '123145302336260'), count: 12
val: ('u64', '118747255827473'), count: 12
val: ('u64', '4648898228701728946'), count: 12
val: ('u64', '377132488414212'), count: 12
val: ('u64', '382630046554372'), count: 12
val: ('u64', '414515883761668'), count: 12
val: ('u64', '411217348879112'), count: 12
val: ('u64', '857619069864964'), count: 12
val: ('u64', '10182948763846033204'), count: 12
val: ('u64', '319957883757334'), count: 12
val: ('u64', '360639813994522'), count: 12
val: ('u64', '368336395390746'), count: 12
val: ('u64', '510173395406340'), count: 12
val: ('u64', '522268023313412'), count: 12
val: ('u64', '723478651245073'), count: 12
val: ('u64', '1254542767584520'), count: 12
val: ('u64', '494780232612616'), count: 12
val: ('u64', '815837627999761'), count: 12
val: ('u64', '529964604708360'), count: 12
val: ('u64', '506874860522772'), count: 12
val: ('u64', '304564720964892'), count: 12
val: ('u64', '104453604663044'), count: 12
val: ('u64', '891703930333969'), count: 12
val: ('u64', '1078620907099429'), count: 12
val: ('u64', '15675312621750161029'), count: 12
val: ('u64', '12046250634422107500'), count: 12
val: ('u64', '47279000005376'), count: 12
val: ('u64', '6217545565904188787'), count: 12
val: ('u64', '10995116280343'), count: 12
val: ('u64', '1423867558301444'), count: 12
val: ('u64', '9553726153947099746'), count: 12
val: ('u64', '40681930237192'), count: 12
val: ('u64', '188016488393493'), count: 12
val: ('u64', '1573401139713843'), count: 12
val: ('u64', '1574500651341877'), count: 12
val: ('u64', '1574500651341880'), count: 12
val: ('u64', '1574500651341883'), count: 12
val: ('u64', '1588794302506291'), count: 12
val: ('u64', '1589893814134325'), count: 12
val: ('u64', '1589893814134328'), count: 12
val: ('u64', '1589893814134331'), count: 12
val: ('u64', '847723465201932'), count: 12
val: ('u64', '881808325679116'), count: 12
val: ('u64', '962072674528026'), count: 12
val: ('u64', '1018147767556364'), count: 12
val: ('u64', '1871368790910468'), count: 12
val: ('u64', '1872468302538504'), count: 12
val: ('u64', '1885662442074899'), count: 12
val: ('u64', '1972523860689412'), count: 12
val: ('u64', '1981319953713672'), count: 12
val: ('u64', '2080276000235020'), count: 12
val: ('u64', '2078076976980498'), count: 12
val: ('u64', '11803761747969481407'), count: 12
val: ('u64', '1377688069923080'), count: 12
val: ('u64', '2230909093276941'), count: 12
val: ('u64', '1575600162969860'), count: 12
val: ('u64', '1757019581593352'), count: 12
val: ('u64', '1838383442069508'), count: 12
val: ('u64', '13928704840151612708'), count: 12
val: ('u64', '15810729701965604402'), count: 12
val: ('u64', '10095299580369680169'), count: 12
val: ('u64', '14234074704174571561'), count: 12
val: ('u64', '16548880349276071764'), count: 12
val: ('u64', '10295785148918615141'), count: 12
val: ('u64', '4783568636088809240'), count: 12
val: ('u64', '5771995559389741749'), count: 12
val: ('u64', '10323359556389130384'), count: 12
val: ('u64', '5122062870952364236'), count: 12
val: ('u64', '2708474982438960163'), count: 12
val: ('u64', '3627852477246295951'), count: 12
val: ('u64', '8144702854823364613'), count: 12
val: ('u64', '14040911570082410700'), count: 12
val: ('u64', '10043991166337750817'), count: 12
val: ('u64', '11656309917549401745'), count: 12
val: ('u64', '5940612501910617763'), count: 12
val: ('u64', '15882676249482585551'), count: 12
val: ('u64', '17580095559134229065'), count: 12
val: ('u64', '31930215478245063'), count: 12
val: ('u64', '9746055599712566997'), count: 12
val: ('u64', '2738048607232640023'), count: 12
val: ('u64', '1576699674597892'), count: 12
val: ('u64', '1614083069950980'), count: 12
val: ('u64', '1627277209487368'), count: 12
val: ('u64', '14370628999745966943'), count: 12
val: ('u64', '8804282593811330148'), count: 12
val: ('u64', '3608348738724650689'), count: 12
val: ('u64', '1866970744398340'), count: 12
val: ('u64', '10034807039410817090'), count: 12
val: ('u64', '15044740857603137572'), count: 12
val: ('u64', '1308353159349108388'), count: 12
val: ('u64', '2408830999033671928'), count: 12
val: ('u64', '5136511905589353800'), count: 12
val: ('u64', '5580990577475290504'), count: 12
val: ('u64', '7096979896533235727'), count: 12
val: ('u64', '6913908574129116441'), count: 12
val: ('u64', '7789826481799205866'), count: 12
val: ('u64', '12957086615148490231'), count: 12
val: ('u64', '11003014060321530048'), count: 12
val: ('u64', '16774962752918647333'), count: 12
val: ('u64', '10659334186050034561'), count: 12
val: ('u64', '9457026777339179755'), count: 12
val: ('u64', '4544228965915456135'), count: 12
val: ('u64', '1067608133802981410'), count: 12
val: ('u64', '8595274124016006608'), count: 12
val: ('u64', '16841244036851436105'), count: 12
val: ('u64', '3917300483192699793'), count: 12
val: ('u64', '3496056143852118910'), count: 12
val: ('u64', '10593001795407527673'), count: 12
val: ('u64', '15686500987659824503'), count: 12
val: ('u64', '5283973767895568689'), count: 12
val: ('u64', '1547888608723548863'), count: 12
val: ('u64', '2367726410583117758'), count: 12
val: ('u64', '4878129135742568893'), count: 12
val: ('u64', '15161189574842561247'), count: 12
val: ('u64', '3062332959642491603'), count: 12
val: ('u64', '12759911037599728509'), count: 12
val: ('u64', '13694241670108992127'), count: 12
val: ('u64', '6631359877958758554'), count: 12
val: ('u64', '4252406643031623735'), count: 12
val: ('u64', '5272496431883259033'), count: 12
val: ('u64', '8922222587701540318'), count: 12
val: ('u64', '423311976746248'), count: 12
val: ('u64', '8971782258949919868'), count: 12
val: ('u64', '12380491130370076479'), count: 12
val: ('u64', '739528546264320629'), count: 12
val: ('u64', '15726501497275725113'), count: 12
val: ('u64', '13855678365807108592'), count: 12
val: ('u64', '6223517298224156588'), count: 12
val: ('u64', '7296557177527271368'), count: 12
val: ('u64', '681697209331976'), count: 12
val: ('u64', '3182368148608914045'), count: 12
val: ('u64', '12891875477337248884'), count: 12
val: ('u64', '15197581915783709532'), count: 12
val: ('u64', '5910653151611911209'), count: 12
val: ('u64', '275977418618124'), count: 12
val: ('u64', '9253785137309817228'), count: 12
val: ('u64', '98956046522884'), count: 11
val: ('u64', '3904568959873169727'), count: 11
val: ('u64', '30786325584900'), count: 11
val: ('u64', '64871186053892'), count: 11
val: ('u64', '36283883725092'), count: 11
val: ('u64', '37383395353155'), count: 11
val: ('u64', '221001837234440'), count: 11
val: ('u64', '38482906981173'), count: 11
val: ('u64', '35184372097046'), count: 11
val: ('u64', '42880953493252'), count: 11
val: ('u64', '18691697676594'), count: 11
val: ('u64', '12939261690712404682'), count: 11
val: ('u64', '37383395353092'), count: 11
val: ('u64', '3734646146380294037'), count: 11
val: ('u64', '41781441865224'), count: 11
val: ('u64', '1492037279237384'), count: 11
val: ('u64', '198151955403679112'), count: 11
val: ('u64', '93458488382724'), count: 11
val: ('u64', '43980465121314'), count: 11
val: ('u64', '1542614814119688'), count: 11
val: ('u64', '15259206906005091644'), count: 11
val: ('u64', '1501932883889672'), count: 11
val: ('u64', '14668279444924745405'), count: 11
val: ('u64', '109951162803224'), count: 11
val: ('u64', '2272228798949461470'), count: 11
val: ('u64', '64871186053908'), count: 11
val: ('u64', '70368744194056'), count: 11
val: ('u64', '71468255822100'), count: 11
val: ('u64', '73667279078152'), count: 11
val: ('u64', '13589019882632885103'), count: 11
val: ('u64', '5120889382422864651'), count: 11
val: ('u64', '133040906991908'), count: 11
val: ('u64', '134140418619971'), count: 11
val: ('u64', '135239930247989'), count: 11
val: ('u64', '34084860469000'), count: 11
val: ('u64', '141837000016171'), count: 11
val: ('u64', '36283883725069'), count: 11
val: ('u64', '90159953498633'), count: 11
val: ('u64', '134140418619912'), count: 11
val: ('u64', '23089744188684'), count: 11
val: ('u64', '60473139541788'), count: 11
val: ('u64', '104453604663048'), count: 11
val: ('u64', '134140418619908'), count: 11
val: ('u64', '11661597402512465815'), count: 11
val: ('u64', '115448720943380'), count: 11
val: ('u64', '122045790711560'), count: 11
val: ('u64', '124244813967624'), count: 11
val: ('u64', '128642860479752'), count: 11
val: ('u64', '142936511644168'), count: 11
val: ('u64', '146235046528275'), count: 11
val: ('u64', '160528697692680'), count: 11
val: ('u64', '62672162797841'), count: 11
val: ('u64', '151732604668424'), count: 11
val: ('u64', '3113212648447101016'), count: 11
val: ('u64', '158329674436616'), count: 11
val: ('u64', '14847365207056229396'), count: 11
val: ('u64', '175921860485141'), count: 11
val: ('u64', '133040906988552'), count: 11
val: ('u64', '157230162808580'), count: 11
val: ('u64', '72567767450116'), count: 11
val: ('u64', '96757023266855'), count: 11
val: ('u64', '200111116301832'), count: 11
val: ('u64', '114349209315346'), count: 11
val: ('u64', '17301708415306768961'), count: 11
val: ('u64', '214404767466248'), count: 11
val: ('u64', '216603790722312'), count: 11
val: ('u64', '11775030186217895913'), count: 11
val: ('u64', '17953238150780935354'), count: 11
val: ('u64', '517869976803088'), count: 11
val: ('u64', '2759432214809508044'), count: 11
val: ('u64', '7700966758263132712'), count: 11
val: ('u64', '518969488431120'), count: 11
val: ('u64', '231996953514760'), count: 11
val: ('u64', '178120883741209'), count: 11
val: ('u64', '15393162792467'), count: 11
val: ('u64', '6804665284764175116'), count: 11
val: ('u64', '13067586092562941174'), count: 11
val: ('u64', '175921860485124'), count: 11
val: ('u64', '6436203240476285557'), count: 11
val: ('u64', '267181325611784'), count: 11
val: ('u64', '15917786231568379776'), count: 11
val: ('u64', '4572053123462473845'), count: 11
val: ('u64', '134140418619937'), count: 11
val: ('u64', '277076930264072'), count: 11
val: ('u64', '202310139557907'), count: 11
val: ('u64', '31885837212949'), count: 11
val: ('u64', '284773511660296'), count: 11
val: ('u64', '294669116312584'), count: 11
val: ('u64', '300166674452744'), count: 11
val: ('u64', '1322349904441341975'), count: 11
val: ('u64', '455106429049962661'), count: 11
val: ('u64', '308962767477000'), count: 11
val: ('u64', '191315023277572'), count: 11
val: ('u64', '11354255387520332023'), count: 11
val: ('u64', '16682157842818573566'), count: 11
val: ('u64', '1313653482104680718'), count: 11
val: ('u64', '14759690919221511210'), count: 11
val: ('u64', '186916976765462'), count: 11
val: ('u64', '193514046533654'), count: 11
val: ('u64', '196812581417745'), count: 11
val: ('u64', '78065325590286'), count: 11
val: ('u64', '213305255838225'), count: 11
val: ('u64', '131941395363858'), count: 11
val: ('u64', '207807697698052'), count: 11
val: ('u64', '451899279121161'), count: 11
val: ('u64', '246290604679196'), count: 11
val: ('u64', '207807697698059'), count: 11
val: ('u64', '244091581421576'), count: 11
val: ('u64', '257285720959512'), count: 11
val: ('u64', '483785116334101'), count: 11
val: ('u64', '509073883778824'), count: 11
val: ('u64', '133040906991917'), count: 11
val: ('u64', '9542729502321375797'), count: 11
val: ('u64', '13190454054929954930'), count: 11
val: ('u64', '749866930317846'), count: 11
val: ('u64', '536561674479624'), count: 11
val: ('u64', '14295149886361830733'), count: 11
val: ('u64', '15686151923202741318'), count: 11
val: ('u64', '809240558231573'), count: 11
val: ('u64', '69269232566033'), count: 11
val: ('u64', '129742372107793'), count: 11
val: ('u64', '85761906986500'), count: 11
val: ('u64', '85761906986509'), count: 11
val: ('u64', '120946279083539'), count: 11
val: ('u64', '846623953584648'), count: 11
val: ('u64', '157230162808587'), count: 11
val: ('u64', '116548232571409'), count: 11
val: ('u64', '7669501477375030319'), count: 11
val: ('u64', '16522619243180527227'), count: 11
val: ('u64', '123145302339596'), count: 11
val: ('u64', '5098636699629875015'), count: 11
val: ('u64', '10027360935117301840'), count: 11
val: ('u64', '429909046560524'), count: 11
val: ('u64', '14136480270949104280'), count: 11
val: ('u64', '7420857291749897525'), count: 11
val: ('u64', '14649699547114877838'), count: 11
val: ('u64', '4350638003848931720'), count: 11
val: ('u64', '463993907029516'), count: 11
val: ('u64', '238594023282975'), count: 11
val: ('u64', '245191093051166'), count: 11
val: ('u64', '988460953600776'), count: 11
val: ('u64', '369435907018756'), count: 11
val: ('u64', '17773097072077411399'), count: 11
val: ('u64', '17124028428310328454'), count: 11
val: ('u64', '531064116339472'), count: 11
val: ('u64', '11099712614952903469'), count: 11
val: ('u64', '5737996033656420516'), count: 11
val: ('u64', '7176679705016537445'), count: 11
val: ('u64', '5622524012353255871'), count: 11
val: ('u64', '6639297281330675778'), count: 11
val: ('u64', '11350779023964972482'), count: 11
val: ('u64', '667403558215437'), count: 11
val: ('u64', '672901116355597'), count: 11
val: ('u64', '328753976781593'), count: 11
val: ('u64', '336450558177817'), count: 11
val: ('u64', '691592814032141'), count: 11
val: ('u64', '456297325633303'), count: 11
val: ('u64', '704786953568525'), count: 11
val: ('u64', '327654465153561'), count: 11
val: ('u64', '392525651207449'), count: 11
val: ('u64', '371634930274838'), count: 11
val: ('u64', '414515883768092'), count: 11
val: ('u64', '1170979883854088'), count: 11
val: ('u64', '6973033394859767973'), count: 11
val: ('u64', '14596817001086251076'), count: 11
val: ('u64', '742170348921613'), count: 11
val: ('u64', '421112953536287'), count: 11
val: ('u64', '838091385807022'), count: 11
val: ('u64', '11368553906447456733'), count: 11
val: ('u64', '403520767487766'), count: 11
val: ('u64', '435406604700698'), count: 11
val: ('u64', '763061069854236'), count: 11
val: ('u64', '1201766209438984'), count: 11
val: ('u64', '760862046598161'), count: 11
val: ('u64', '442003674468893'), count: 11
val: ('u64', '1230353511767816'), count: 11
val: ('u64', '782852279158797'), count: 11
val: ('u64', '452998790749198'), count: 11
val: ('u64', '793847395439117'), count: 11
val: ('u64', '469491465169690'), count: 11
val: ('u64', '7685540072504532916'), count: 11
val: ('u64', '474074270092031825'), count: 11
val: ('u64', '830131279164173'), count: 11
val: ('u64', '1960788162479839561'), count: 11
val: ('u64', '14250610978135412134'), count: 11
val: ('u64', '856519558236941'), count: 11
val: ('u64', '566248488436503'), count: 11
val: ('u64', '867514674517261'), count: 11
val: ('u64', '1462350465282568'), count: 11
val: ('u64', '880708814053654'), count: 11
val: ('u64', '135239930247949'), count: 11
val: ('u64', '905997581498381'), count: 11
val: ('u64', '921390744290838'), count: 11
val: ('u64', '666304046587417'), count: 11
val: ('u64', '61572651169792'), count: 11
val: ('u64', '1051133116398610'), count: 11
val: ('u64', '753165465201931'), count: 11
val: ('u64', '787250325670963'), count: 11
val: ('u64', '748767418689817'), count: 11
val: ('u64', '1079720418727463'), count: 11
val: ('u64', '1084118465239617'), count: 11
val: ('u64', '1085217976867646'), count: 11
val: ('u64', '1070924325703185'), count: 11
val: ('u64', '1192970116414735'), count: 11
val: ('u64', '34084860468996'), count: 11
val: ('u64', '1203965232695057'), count: 11
val: ('u64', '1240249116420120'), count: 11
val: ('u64', '1264438372236813'), count: 11
val: ('u64', '1288627628053521'), count: 11
val: ('u64', '1299622744333837'), count: 11
val: ('u64', '1333707604802835'), count: 11
val: ('u64', '1339205162942995'), count: 11
val: ('u64', '1346901744339213'), count: 11
val: ('u64', '1352399302479373'), count: 11
val: ('u64', '1365593442015761'), count: 11
val: ('u64', '1371091000155917'), count: 11
val: ('u64', '1399678302484755'), count: 11
val: ('u64', '1405175860624915'), count: 11
val: ('u64', '1412872442021133'), count: 11
val: ('u64', '1418370000161293'), count: 11
val: ('u64', '127543348851734'), count: 11
val: ('u64', '1433763162953752'), count: 11
val: ('u64', '1437061697837861'), count: 11
val: ('u64', '1440360232721957'), count: 11
val: ('u64', '1443658767606053'), count: 11
val: ('u64', '1446957302490149'), count: 11
val: ('u64', '1450255837374259'), count: 11
val: ('u64', '1453554372258356'), count: 11
val: ('u64', '1431564139697681'), count: 11
val: ('u64', '1460151442026509'), count: 11
val: ('u64', '53876069773597'), count: 11
val: ('u64', '1472246069934865'), count: 11
val: ('u64', '1514027511800084'), count: 11
val: ('u64', '129742372107817'), count: 11
val: ('u64', '191315023277585'), count: 11
val: ('u64', '230897441886761'), count: 11
val: ('u64', '282574488404290'), count: 11
val: ('u64', '282574488404261'), count: 11
val: ('u64', '283674000032321'), count: 11
val: ('u64', '325455441897485'), count: 11
val: ('u64', '346346162830108'), count: 11
val: ('u64', '377132488414999'), count: 11
val: ('u64', '381530534927127'), count: 11
val: ('u64', '385928581439256'), count: 11
val: ('u64', '394724674463517'), count: 11
val: ('u64', '500277790754573'), count: 11
val: ('u64', '520069000059149'), count: 11
val: ('u64', '553054348900123'), count: 11
val: ('u64', '567348000064543'), count: 11
val: ('u64', '573945069832729'), count: 11
val: ('u64', '583840674485024'), count: 11
val: ('u64', '593736279137304'), count: 11
val: ('u64', '604731395417623'), count: 11
val: ('u64', '620124558210073'), count: 11
val: ('u64', '638816255886617'), count: 11
val: ('u64', '645413325654801'), count: 11
val: ('u64', '658607465190668'), count: 11
val: ('u64', '2304371360480502491'), count: 11
val: ('u64', '722716227041302546'), count: 11
val: ('u64', '665204534959381'), count: 11
val: ('u64', '706985976824595'), count: 11
val: ('u64', '792747883809556'), count: 11
val: ('u64', '10439084330319281010'), count: 11
val: ('u64', '14797831143506864906'), count: 11
val: ('u64', '12116452167459897331'), count: 11
val: ('u64', '3647579081048198563'), count: 11
val: ('u64', '867514674517331'), count: 11
val: ('u64', '18432473681965218284'), count: 11
val: ('u64', '11476002094001787074'), count: 11
val: ('u64', '899400511730194'), count: 11
val: ('u64', '949978046619672'), count: 11
val: ('u64', '986261930344745'), count: 11
val: ('u64', '1743825442058772'), count: 11
val: ('u64', '5989526558940951548'), count: 11
val: ('u64', '9662982313591684793'), count: 11
val: ('u64', '1025844348953871'), count: 11
val: ('u64', '1763616651363346'), count: 11
val: ('u64', '1770213721131534'), count: 11
val: ('u64', '1036839465234195'), count: 11
val: ('u64', '1114904790824468'), count: 11
val: ('u64', '1801000046716434'), count: 11
val: ('u64', '1121501860592655'), count: 11
val: ('u64', '1808696628112662'), count: 11
val: ('u64', '1128098930360851'), count: 11
val: ('u64', '1817492721136914'), count: 11
val: ('u64', '1137994535013143'), count: 11
val: ('u64', '1825189302533142'), count: 11
val: ('u64', '1833985395557397'), count: 11
val: ('u64', '1155586721061660'), count: 11
val: ('u64', '1841681976953625'), count: 11
val: ('u64', '1163283302457873'), count: 11
val: ('u64', '1854876116490001'), count: 11
val: ('u64', '1179775976878370'), count: 11
val: ('u64', '1898856581611287'), count: 11
val: ('u64', '1917548279287825'), count: 11
val: ('u64', '1923045837427976'), count: 11
val: ('u64', '4435754066555936944'), count: 11
val: ('u64', '14994209300710378476'), count: 11
val: ('u64', '1301821767589984'), count: 11
val: ('u64', '1304020790846047'), count: 11
val: ('u64', '2117659395589651'), count: 11
val: ('u64', '2124256465357843'), count: 11
val: ('u64', '2136351093266187'), count: 11
val: ('u64', '1318314442010402'), count: 11
val: ('u64', '1331508581546776'), count: 11
val: ('u64', '1368891976899878'), count: 11
val: ('u64', '15256762164899289007'), count: 11
val: ('u64', '3692587886597676918'), count: 11
val: ('u64', '2207819349088282'), count: 11
val: ('u64', '2217714953740559'), count: 11
val: ('u64', '1400777814112794'), count: 11
val: ('u64', '1411772930393105'), count: 11
val: ('u64', '2224312023508758'), count: 11
val: ('u64', '2227610558392849'), count: 11
val: ('u64', '1423867558301477'), count: 11
val: ('u64', '1437061697837860'), count: 11
val: ('u64', '2241904209557261'), count: 11
val: ('u64', '1444758279234072'), count: 11
val: ('u64', '2256197860721677'), count: 11
val: ('u64', '1455753395514394'), count: 11
val: ('u64', '1461250953654558'), count: 11
val: ('u64', '1500833372263699'), count: 11
val: ('u64', '1507430442031887'), count: 11
val: ('u64', '1530520186220596'), count: 11
val: ('u64', '1587694790878228'), count: 11
val: ('u64', '1616282093207053'), count: 11
val: ('u64', '1647068418791954'), count: 11
val: ('u64', '1694347418797346'), count: 11
val: ('u64', '1739427395545616'), count: 11
val: ('u64', '1721835209498142'), count: 11
val: ('u64', '16023333284210682817'), count: 11
val: ('u64', '1657853972532797026'), count: 11
val: ('u64', '6298312855511244985'), count: 11
val: ('u64', '6035132143115250594'), count: 11
val: ('u64', '1801000046713616'), count: 11
val: ('u64', '1769114209503522'), count: 11
val: ('u64', '13704181789732057767'), count: 11
val: ('u64', '16945906229708942649'), count: 11
val: ('u64', '1967026302549261'), count: 11
val: ('u64', '1982419465341708'), count: 11
val: ('u64', '2003310186274335'), count: 11
val: ('u64', '2050589186279706'), count: 11
val: ('u64', '2065982349072154'), count: 11
val: ('u64', '2067081860700168'), count: 11
val: ('u64', '2072579418840347'), count: 11
val: ('u64', '2173734488618764'), count: 11
val: ('u64', '14047247172246716139'), count: 11
val: ('u64', '4953961972480585876'), count: 11
val: ('u64', '2181431070015501'), count: 11
val: ('u64', '2194625209551884'), count: 11
val: ('u64', '2210018372344337'), count: 11
val: ('u64', '2229809581648912'), count: 11
val: ('u64', '11867072553745741250'), count: 11
val: ('u64', '2258396883977740'), count: 11
val: ('u64', '2278188093282342'), count: 11
val: ('u64', '2277088581654284'), count: 11
val: ('u64', '2282586139794449'), count: 11
val: ('u64', '2310073930495248'), count: 11
val: ('u64', '2321069046775564'), count: 11
val: ('u64', '2346357814220327'), count: 11
val: ('u64', '2344158790964236'), count: 11
val: ('u64', '2352954883988497'), count: 11
val: ('u64', '2422224116554508'), count: 11
val: ('u64', '2436517767718924'), count: 11
val: ('u64', '217703302350349'), count: 11
val: ('u64', '225399883746578'), count: 11
val: ('u64', '237494511654971'), count: 11
val: ('u64', '250688651191333'), count: 11
val: ('u64', '262783279099678'), count: 11
val: ('u64', '559651418668304'), count: 11
val: ('u64', '583840674485010'), count: 11
val: ('u64', '639915767514640'), count: 11
val: ('u64', '709185000080655'), count: 11
val: ('u64', '754264976829969'), count: 11
val: ('u64', '787250325669644'), count: 11
val: ('u64', '5642806682319149218'), count: 11
val: ('u64', '2953898968394986710'), count: 11
val: ('u64', '820235674511899'), count: 11
val: ('u64', '881808325681683'), count: 11
val: ('u64', '905997581498391'), count: 11
val: ('u64', '930186837315097'), count: 11
val: ('u64', '962072674528021'), count: 11
val: ('u64', '1031341907094042'), count: 11
val: ('u64', '1066526279191076'), count: 11
val: ('u64', '1080819930355484'), count: 11
val: ('u64', '1117103814080552'), count: 11
val: ('u64', '1152288186177571'), count: 11
val: ('u64', '1185273535018526'), count: 11
val: ('u64', '1386484162948390'), count: 11
val: ('u64', '1460151442026525'), count: 11
val: ('u64', '1543714325756953'), count: 11
val: ('u64', '1565704558317589'), count: 11
val: ('u64', '1578898697853962'), count: 11
val: ('u64', '1606386488554763'), count: 11
val: ('u64', '1641570860651789'), count: 11
val: ('u64', '1663561093212429'), count: 11
val: ('u64', '1673456697864715'), count: 11
val: ('u64', '1702044000193559'), count: 11
val: ('u64', '1718536674614036'), count: 11
val: ('u64', '1726233256010263'), count: 11
val: ('u64', '1750422511826957'), count: 11
val: ('u64', '1759218604851211'), count: 11
val: ('u64', '1780109325783821'), count: 11
val: ('u64', '1788905418808075'), count: 11
val: ('u64', '1809796139740695'), count: 11
val: ('u64', '1855975628118028'), count: 11
val: ('u64', '1870269279282444'), count: 11
val: ('u64', '1875766837422609'), count: 11
val: ('u64', '1892259511843098'), count: 11
val: ('u64', '2328765628171791'), count: 11
val: ('u64', '2335362697939987'), count: 11
val: ('u64', '2349656349104399'), count: 11
val: ('u64', '2363950000268819'), count: 11
val: ('u64', '2370547070037017'), count: 11
val: ('u64', '2380442674689309'), count: 11
val: ('u64', '2401333395621906'), count: 11
val: ('u64', '2407930465390102'), count: 11
val: ('u64', '2531075767729675'), count: 11
val: ('u64', '2537672837497867'), count: 11
val: ('u64', '2547568442150155'), count: 11
val: ('u64', '2557464046802443'), count: 11
val: ('u64', '2564061116570635'), count: 11
val: ('u64', '2589349884015371'), count: 11
val: ('u64', '2630031814252555'), count: 11
val: ('u64', '2650922535185163'), count: 11
val: ('u64', '2668514721233675'), count: 11
val: ('u64', '2681708860770059'), count: 11
val: ('u64', '2752077604964108'), count: 11
val: ('u64', '2764172232872465'), count: 11
val: ('u64', '2770769302640651'), count: 11
val: ('u64', '2782863930549004'), count: 11
val: ('u64', '2794958558457361'), count: 11
val: ('u64', '2801555628225547'), count: 11
val: ('u64', '2813650256133899'), count: 11
val: ('u64', '2823545860786188'), count: 11
val: ('u64', '2827943907298321'), count: 11
val: ('u64', '2834540977066507'), count: 11
val: ('u64', '2842237558462731'), count: 11
val: ('u64', '2852133163115020'), count: 11
val: ('u64', '2860929256139281'), count: 11
val: ('u64', '2867526325907467'), count: 11
val: ('u64', '2878521442187788'), count: 11
val: ('u64', '2887317535212049'), count: 11
val: ('u64', '2893914604980235'), count: 11
val: ('u64', '2904909721260556'), count: 11
val: ('u64', '2913705814284817'), count: 11
val: ('u64', '2920302884053003'), count: 11
val: ('u64', '2932397511961355'), count: 11
val: ('u64', '2942293116613644'), count: 11
val: ('u64', '2946691163125777'), count: 11
val: ('u64', '2953288232893963'), count: 11
val: ('u64', '2966482372430347'), count: 11
val: ('u64', '3111617907330575'), count: 11
val: ('u64', '3273246116651279'), count: 11
val: ('u64', '3320525116656655'), count: 11
val: ('u64', '3355709488753683'), count: 11
val: ('u64', '3410685070155282'), count: 11
val: ('u64', '3618492767853327'), count: 11
val: ('u64', '3729543442284590'), count: 11
val: ('u64', '3781220488802102'), count: 11
val: ('u64', '288072046544399'), count: 11
val: ('u64', '306763744220948'), count: 11
val: ('u64', '389227116323355'), count: 11
val: ('u64', '579442627972882'), count: 11
val: ('u64', '610228953557779'), count: 11
val: ('u64', '633318697746455'), count: 11
val: ('u64', '684995744263957'), count: 11
val: ('u64', '844424930328607'), count: 11
val: ('u64', '874111744285466'), count: 11
val: ('u64', '903798558242329'), count: 11
val: ('u64', '935684395455274'), count: 11
val: ('u64', '971968279180332'), count: 11
val: ('u64', '1007152651277335'), count: 11
val: ('u64', '1030242395466005'), count: 11
val: ('u64', '199011604673809'), count: 11
val: ('u64', '1057730186166807'), count: 11
val: ('u64', '1081919441983506'), count: 11
val: ('u64', '205608674441996'), count: 11
val: ('u64', '1103909674544147'), count: 11
val: ('u64', '4299430296350620244'), count: 11
val: ('u64', '13101175995894793878'), count: 11
val: ('u64', '1168780860598043'), count: 11
val: ('u64', '1189671581530634'), count: 11
val: ('u64', '1214960348975371'), count: 11
val: ('u64', '1253443255956521'), count: 11
val: ('u64', '16825495667627210476'), count: 11
val: ('u64', '2281856370131766747'), count: 11
val: ('u64', '1279831535029293'), count: 11
val: ('u64', '727876697757202'), count: 11
val: ('u64', '733374255897364'), count: 11
val: ('u64', '746568395433748'), count: 11
val: ('u64', '11552238224964240365'), count: 11
val: ('u64', '1612983558322957'), count: 11
val: ('u64', '1623978674603276'), count: 11
val: ('u64', '1628376721115409'), count: 11
val: ('u64', '1634973790883595'), count: 11
val: ('u64', '138538465129484'), count: 11
val: ('u64', '3606651220741549233'), count: 11
val: ('u64', '11639991681463942019'), count: 11
val: ('u64', '1642670372279819'), count: 11
val: ('u64', '1652565976932108'), count: 11
val: ('u64', '1661362069956369'), count: 11
val: ('u64', '1667959139724555'), count: 11
val: ('u64', '1675655721120779'), count: 11
val: ('u64', '8257886432440943814'), count: 11
val: ('u64', '1114096868148586161'), count: 11
val: ('u64', '1686650837401100'), count: 11
val: ('u64', '1702044000193547'), count: 11
val: ('u64', '1709740581589771'), count: 11
val: ('u64', '1721835209498124'), count: 11
val: ('u64', '1741626418802742'), count: 11
val: ('u64', '380431023299084'), count: 11
val: ('u64', '1747123976942865'), count: 11
val: ('u64', '426610511676433'), count: 11
val: ('u64', '1760318116479245'), count: 11
val: ('u64', '1781208837411878'), count: 11
val: ('u64', '1779009814155788'), count: 11
val: ('u64', '288072046544401'), count: 11
val: ('u64', '310062279105049'), count: 11
val: ('u64', '1790004930436113'), count: 11
val: ('u64', '315559837245216'), count: 11
val: ('u64', '321057395385369'), count: 11
val: ('u64', '326554953525533'), count: 11
val: ('u64', '1819691744392973'), count: 11
val: ('u64', '1840582465325606'), count: 11
val: ('u64', '1838383442069516'), count: 11
val: ('u64', '1849378558349841'), count: 11
val: ('u64', '1871368790910475'), count: 11
val: ('u64', '1879065372306701'), count: 11
val: ('u64', '1896657558355212'), count: 11
val: ('u64', '1901055604867345'), count: 11
val: ('u64', '1921946325799947'), count: 11
val: ('u64', '1929642907196173'), count: 11
val: ('u64', '1952732651384843'), count: 11
val: ('u64', '1968125814177292'), count: 11
val: ('u64', '25288767444744'), count: 10
val: ('u64', '123145302339588'), count: 10
val: ('u64', '81363860474376'), count: 10
val: ('u64', '10041081509663128001'), count: 10
val: ('u64', '12968620188419884836'), count: 10
val: ('u64', '129742372107792'), count: 10
val: ('u64', '4482972917095000032'), count: 10
val: ('u64', '42880953493256'), count: 10
val: ('u64', '17290476147260971154'), count: 10
val: ('u64', '51677046517504'), count: 10
val: ('u64', '41781441865216'), count: 10
val: ('u64', '17530321025153968714'), count: 10
val: ('u64', '42880953493273'), count: 10
val: ('u64', '54975581401600'), count: 10
val: ('u64', '4398046512132'), count: 10
val: ('u64', '390326627951407'), count: 10
val: ('u64', '75866302334215'), count: 10
val: ('u64', '8200252652928346298'), count: 10
val: ('u64', '34'), count: 10
val: ('u32', '1564'), count: 10
val: ('u64', '37383395353129'), count: 10
val: ('u64', '5202136776330774571'), count: 10
val: ('u64', '23089744188680'), count: 10
val: ('u64', '15393162792448'), count: 10
val: ('u64', '54975581401623'), count: 10
val: ('u64', '13479781351462036046'), count: 10
val: ('u64', '47279000005384'), count: 10
val: ('u64', '12016361416431012332'), count: 10
val: ('u64', '20890720932633'), count: 10
val: ('u64', '3228061480509567917'), count: 10
val: ('u64', '1397131547879314568'), count: 10
val: ('u64', '60473139541796'), count: 10
val: ('u64', '93458488382728'), count: 10
val: ('u64', '16088011003500778166'), count: 10
val: ('u64', '45079976749331'), count: 10
val: ('u64', '6335191599069187561'), count: 10
val: ('u64', '30786325584904'), count: 10
val: ('u64', '8078756480773032433'), count: 10
val: ('u64', '6172151650523609720'), count: 10
val: ('u64', '18403610489236183660'), count: 10
val: ('u64', '58274116285705'), count: 10
val: ('u64', '14387553200081779475'), count: 10
val: ('u64', '67070209309960'), count: 10
val: ('u64', '3709219899441931880'), count: 10
val: ('u64', '5449856924893621148'), count: 10
val: ('u64', '6178097643820839173'), count: 10
val: ('u64', '128642860479748'), count: 10
val: ('u64', '126443837223699'), count: 10
val: ('u64', '74766790706184'), count: 10
val: ('u64', '12074391557214621107'), count: 10
val: ('u64', '16977781991081489189'), count: 10
val: ('u64', '131941395363840'), count: 10
val: ('u64', '53876069773598'), count: 10
val: ('u64', '14808742969980607109'), count: 10
val: ('u64', '16626959594269779739'), count: 10
val: ('u64', '91259465126665'), count: 10
val: ('u64', '94558000010772'), count: 10
val: ('u64', '15322083508895687504'), count: 10
val: ('u64', '457396837261321'), count: 10
val: ('u64', '30786325584896'), count: 10
val: ('u64', '108851651175176'), count: 10
val: ('u64', '109951162803208'), count: 10
val: ('u64', '86861418614528'), count: 10
val: ('u64', '642086668258877340'), count: 10
val: ('u64', '1718536674614020'), count: 10
val: ('u64', '3346937568878096673'), count: 10
val: ('u64', '48378511633420'), count: 10
val: ('u64', '137438953504008'), count: 10
val: ('u64', '140737488387588'), count: 10
val: ('u64', '142936511644180'), count: 10
val: ('u64', '144036023272197'), count: 10
val: ('u64', '146235046528285'), count: 10
val: ('u64', '14674977751528627164'), count: 10
val: ('u64', '152832116296465'), count: 10
val: ('u64', '147334558156296'), count: 10
val: ('u64', '15709365742457081123'), count: 10
val: ('u64', '153931627924513'), count: 10
val: ('u64', '18049827298084851559'), count: 10
val: ('u64', '161628209320717'), count: 10
val: ('u64', '153931627924500'), count: 10
val: ('i64', '30'), count: 10
val: ('u64', '64871186053906'), count: 10
val: ('u64', '170424302344980'), count: 10
val: ('u64', '65970697681942'), count: 10
val: ('u64', '129742372107804'), count: 10
val: ('u64', '146235046528293'), count: 10
val: ('u64', '8000881024033081781'), count: 10
val: ('u64', '182518930253321'), count: 10
val: ('u64', '5259981543624522256'), count: 10
val: ('u64', '80264348846377'), count: 10
val: ('u64', '153931627924484'), count: 10
val: ('u64', '13211991205477640816'), count: 10
val: ('u64', '2827341892335658222'), count: 10
val: ('u64', '2136470742283483585'), count: 10
val: ('u64', '489282674474261'), count: 10
val: ('u64', '10037431286518837954'), count: 10
val: ('u64', '105553116291076'), count: 10
val: ('u64', '2944594445831501783'), count: 10
val: ('u64', '70368744194082'), count: 10
val: ('u64', '199011604673800'), count: 10
val: ('u64', '10535965388150789543'), count: 10
val: ('u64', '97856534894852'), count: 10
val: ('u64', '14424547638679987297'), count: 10
val: ('u64', '11559199670603703921'), count: 10
val: ('u64', '207807697698056'), count: 10
val: ('u64', '114349209315345'), count: 10
val: ('u64', '217703302350356'), count: 10
val: ('u64', '117647744199436'), count: 10
val: ('u64', '226499395374600'), count: 10
val: ('u64', '229797930258696'), count: 10
val: ('u64', '146235046528306'), count: 10
val: ('u64', '146235046528260'), count: 10
val: ('u64', '150633093040388'), count: 10
val: ('u64', '11175239359108500426'), count: 10
val: ('u64', '150633093040402'), count: 10
val: ('u64', '9869172863506807154'), count: 10
val: ('u64', '266081813983752'), count: 10
val: ('u64', '4621027300013649501'), count: 10
val: ('u64', '1782914785764496607'), count: 10
val: ('u64', '315559837245192'), count: 10
val: ('u64', '7589393667250276000'), count: 10
val: ('u64', '18018867544060914680'), count: 10
val: ('u64', '16492674420485'), count: 10
val: ('u64', '172623325601037'), count: 10
val: ('u64', '109951162803234'), count: 10
val: ('u64', '129742372107776'), count: 10
val: ('u64', '18691697676548'), count: 10
val: ('u64', '175921860485131'), count: 10
val: ('u64', '175921860485153'), count: 10
val: ('u64', '213305255838236'), count: 10
val: ('u64', '434307093072661'), count: 10
val: ('u64', '670702093099549'), count: 10
val: ('u64', '40681930237219'), count: 10
val: ('u64', '122045790711575'), count: 10
val: ('u64', '465093418657545'), count: 10
val: ('u64', '478287558193929'), count: 10
val: ('u64', '328753976781572'), count: 10
val: ('u32', '64318'), count: 10
val: ('u64', '339749093061907'), count: 10
val: ('u64', '95657511638788'), count: 10
val: ('u64', '58274116285700'), count: 10
val: ('u32', '67644'), count: 10
val: ('u64', '786150814042892'), count: 10
val: ('u64', '384829069811204'), count: 10
val: ('u64', '86861418614532'), count: 10
val: ('u64', '120946279083524'), count: 10
val: ('u64', '416714907024175'), count: 10
val: ('u64', '416714907024172'), count: 10
val: ('u64', '877410279169544'), count: 10
val: ('u64', '87960930242560'), count: 10
val: ('u64', '305664232592900'), count: 10
val: ('u64', '92358976754711'), count: 10
val: ('u32', '73648'), count: 10
val: ('u64', '101155069778957'), count: 10
val: ('u64', '743269860549640'), count: 10
val: ('u64', '451899279121156'), count: 10
val: ('u64', '938982930339336'), count: 10
val: ('u64', '346346162830121'), count: 10
val: ('u32', '126564'), count: 10
val: ('u64', '190215511649540'), count: 10
val: ('u64', '398023209347600'), count: 10
val: ('u64', '409018325627916'), count: 10
val: ('u64', '279275953520132'), count: 10
val: ('u64', '1125899907104777'), count: 10
val: ('u64', '516770465175056'), count: 10
val: ('u64', '1199567186182933'), count: 10
val: ('u64', '18134745493060530058'), count: 10
val: ('u64', '476088534937868'), count: 10
val: ('u64', '1317214930382358'), count: 10
val: ('u64', '1328210046662678'), count: 10
val: ('u64', '1394180744344598'), count: 10
val: ('u64', '584940186113035'), count: 10
val: ('u64', '1542614814128904'), count: 10
val: ('u64', '17166658939937080815'), count: 10
val: ('u64', '777354721018650'), count: 10
val: ('u64', '16960402678583030774'), count: 10
val: ('u64', '17982601828018297084'), count: 10
val: ('u64', '4651576414765050335'), count: 10
val: ('u64', '12862034972193571134'), count: 10
val: ('u64', '6343528002852651096'), count: 10
val: ('u64', '26388279072783'), count: 10
val: ('u64', '1187472558274564'), count: 10
val: ('u64', '20890720932625'), count: 10
val: ('u64', '1203965232695044'), count: 10
val: ('u64', '74766790706180'), count: 10
val: ('u64', '82463372102422'), count: 10
val: ('u64', '1352399302479364'), count: 10
val: ('u64', '1388683186204420'), count: 10
val: ('u64', '137438953504056'), count: 10
val: ('u64', '94558000010764'), count: 10
val: ('u64', '16286064883664354746'), count: 10
val: ('u64', '6457372073357275685'), count: 10
val: ('u64', '8826660682729554157'), count: 10
val: ('u64', '4985394474099711899'), count: 10
val: ('u64', '7328575488562512128'), count: 10
val: ('u64', '14734440402342280515'), count: 10
val: ('u64', '13984420610670538665'), count: 10
val: ('u64', '1545913349013011'), count: 10
val: ('u64', '1554709442037267'), count: 10
val: ('u64', '12645299837753382590'), count: 10
val: ('u64', '1509629465287966'), count: 10
val: ('u64', '1547012860641065'), count: 10
val: ('u64', '1511828488544024'), count: 10
val: ('u64', '1511828488544020'), count: 10
val: ('u64', '1511828488544030'), count: 10
val: ('u64', '1514027511800088'), count: 10
val: ('u64', '1514027511800100'), count: 10
val: ('u64', '1245751933682392836'), count: 10
val: ('u64', '1539316279244823'), count: 10
val: ('u64', '1540415790872863'), count: 10
val: ('u64', '1540415790872872'), count: 10
val: ('u64', '9014080183672020897'), count: 10
val: ('u64', '1555808953665321'), count: 10
val: ('u64', '2212480936615862282'), count: 10
val: ('u64', '250688651191320'), count: 10
val: ('u64', '266081813983748'), count: 10
val: ('u64', '275977418636036'), count: 10
val: ('u64', '10040369821954663219'), count: 10
val: ('u64', '1621558239661680073'), count: 10
val: ('u64', '9040998628966140003'), count: 10
val: ('u64', '1558007976921385'), count: 10
val: ('u64', '405719790743828'), count: 10
val: ('u64', '377132488414980'), count: 10
val: ('u64', '10364921527702537513'), count: 10
val: ('u64', '9315288062072470779'), count: 10
val: ('u64', '627821139606322'), count: 10
val: ('u64', '775155697762602'), count: 10
val: ('u64', '775155697762588'), count: 10
val: ('u64', '1351081445038724743'), count: 10
val: ('u64', '1722934721126158'), count: 10
val: ('u64', '1735029349034516'), count: 10
val: ('u64', '1775711279271684'), count: 10
val: ('u64', '1801000046716420'), count: 10
val: ('u64', '1885662442074884'), count: 10
val: ('u64', '1917548279287812'), count: 10
val: ('u64', '3449690208765566194'), count: 10
val: ('u64', '735668021727081550'), count: 10
val: ('u64', '17400020056424899449'), count: 10
val: ('u64', '1318314442010372'), count: 10
val: ('u64', '2195724721179912'), count: 10
val: ('u64', '17752065575018716171'), count: 10
val: ('u64', '1648167930419979'), count: 10
val: ('u64', '14946165065995716130'), count: 10
val: ('u64', '1891160000215044'), count: 10
val: ('u64', '1967026302549252'), count: 10
val: ('u64', '7319618841074374820'), count: 10
val: ('u64', '16207540389375303993'), count: 10
val: ('u64', '2236406651417099'), count: 10
val: ('u64', '6796909116748323627'), count: 10
val: ('u64', '15653668021539312722'), count: 10
val: ('u64', '6983695088482452362'), count: 10
val: ('u64', '436506116328740'), count: 10
val: ('u64', '1565704558317572'), count: 10
val: ('u64', '1603087953670660'), count: 10
val: ('u64', '1628376721115396'), count: 10
val: ('u64', '1641570860651796'), count: 10
val: ('u64', '1649267442048004'), count: 10
val: ('u64', '1672357186236680'), count: 10
val: ('u64', '1674556209492744'), count: 10
val: ('u64', '1773512256015620'), count: 10
val: ('u64', '1830686860673284'), count: 10
val: ('u64', '1831786372301316'), count: 10
val: ('u64', '1918647790915844'), count: 10
val: ('u64', '2003310186274324'), count: 10
val: ('u64', '2006608721158408'), count: 10
val: ('u64', '8369333018572388660'), count: 10
val: ('u64', '2161639860710933'), count: 10
val: ('u64', '2343059279336212'), count: 10
val: ('u64', '2429920697950753'), count: 10
val: ('u64', '2491493349120520'), count: 10
val: ('u64', '12492439746405493336'), count: 10
val: ('u64', '543329342795383710'), count: 10
val: ('u64', '2889707338148721547'), count: 10
val: ('u64', '188016488393504'), count: 10
val: ('u64', '14119449856068327817'), count: 10
val: ('u64', '12816517190678400861'), count: 10
val: ('u64', '12042341833584081276'), count: 10
I tried to test other types, but apart from The problem with that is that once we are inside the stable hasher, we can't really tell where the input value came from (was it a 8-byte number? a pointer? size of some data structure?). I conjecture that it could be quite useful to compress the bytes of data structures sizes, as these would rarely need all 8 bytes. But we need a way to distinguish them from pointers, which are usually very large and checking their value slows everything down. |
I tried to create a |
This seems like a clear win. Do you have further changes you want to make before it gets merged? |
Maybe another perf. run to check that the second commit (which added this "trick" for |
@bors try @rust-timer queue |
Awaiting bors try build completion. @rustbot label: +S-waiting-on-perf |
⌛ Trying commit 7c53440e68b07747b2b0188aaa023d452d4a6029 with merge a9bc89758a59e9db658dac1e75c2149024628ae5... |
☀️ Try build successful - checks-actions |
Hopefully this should fix it, the test now passes locally. |
@bors r+ |
📌 Commit 65a3279 has been approved by |
☀️ Test successful - checks-actions |
Finished benchmarking commit (936ce3d): comparison url. Summary: This change led to very large relevant improvements 🎉 in compiler performance.
If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf. @rustbot label: -perf-regression |
Not sure how relevant it is(and maybe it should be move to an issue), but:
I suppose this could lead to hashing ambiguity if 2x #[derive(Hash)]
struct X {
u: i64,
v: i64,
} Then This could be made worse when using something like |
Heh, I was worried thinking about cases where one of the values would be zero or the "adjacent" hashed types would be different that I missed this blatantly obvious error. I thought that the hashing order of the two hashed values would differentiate them, but that is not the case, since the stable hasher accumulates bytes and hashes values in batches. Thank you very much for noticing! @the8472 I suggest to solve this problem by hashing the number of bytes hashed, i.e. making something like macro_rules! dispatch_value {
($target: expr, $value:expr) => {
let value = $value;
#[allow(unreachable_patterns)]
#[allow(overflowing_literals)]
match value {
0..=0xFF => { $target.short_write(value as u8); $target.short_write(1); }
0x100..=0xFFFF => { $target.short_write(value as u16); $target.short_write(2); }
...
}
};
} It will probably undo a lot of the performance gained here, but it might still be a win. |
We'll also need a baseline for that change, which would be reverting this PR. |
from triage meeting today: the examples that are provided on PR #92103 of where the change introduces hash-collisions, can those be adapted into concrete tests of some form? |
Well, for the current implementation of this PR, we would need to find a data structure in Rustc that uses two adjacent (or "near") To be honest, I'm not sure how to do that (I'm also quite new to |
It doesn't need to be anything fancy like testing multiple runs with code changes. It's enough to exercise the hasher directly and do a bunch of writes that do the I have already been asked if I can add a test and answered affirmatively, but if you want to use it as an opportunity to learn you can claim it instead. |
Ah, ok, we can do it in a unit test way like this. But to make it future-proof, we would have to do such tests for various data types, right? (what if the next PR tried something like this, but for |
…zero-bytes, r=the8472 Revert "Do not hash leading zero bytes of i64 numbers in Sip128 hasher" Reverts rust-lang#92103. It had a (in retrospect, obvious) correctness problem where changing the order of two adjacent values would produce identical hashes, which is problematic in stable hashing (see [this comment](rust-lang#92103 (comment))). I'll try to send the PR again with a fix for this issue. r? `@the8472`
…zero-bytes, r=the8472 Revert "Do not hash leading zero bytes of i64 numbers in Sip128 hasher" Reverts rust-lang#92103. It had a (in retrospect, obvious) correctness problem where changing the order of two adjacent values would produce identical hashes, which is problematic in stable hashing (see [this comment](rust-lang#92103 (comment))). I'll try to send the PR again with a fix for this issue. r? `@the8472`
@the8472 I added the test in #93193. By the way, I tried to analyze why Anyway, the performance gain comes from the fact that |
…sion, r=the8472 Compress amount of hashed bytes for `isize` values in StableHasher This is another attempt to land rust-lang#92103, this time hopefully with a correct implementation w.r.t. stable hashing guarantees. The previous PR was [reverted](rust-lang#93014) because it could produce the [same hash](rust-lang#92103 (comment)) for different values even in quite simple situations. I have since added a basic [test](rust-lang#93193) that should guard against that situation, I also added a new test in this PR, specialised for this optimization. ## Why this optimization helps Since the original PR, I have tried to analyze why this optimization even helps (and why it especially helps for `clap`). I found that the vast majority of stable-hashing `i64` actually comes from hashing `isize` (which is converted to `i64` in the stable hasher). I only found a single place where is this datatype used directly in the compiler, and this place has also been showing up in traces that I used to find out when is `isize` being hashed. This place is `rustc_span::FileName::DocTest`, however, I suppose that isizes also come from other places, but they might not be so easy to find (there were some other entries in the trace). `clap` hashes about 8.5 million `isize`s, and all of them fit into a single byte, which is why this optimization has helped it [quite a lot](rust-lang#92103 (comment)). Now, I'm not sure if special casing `isize` is the correct solution here, maybe something could be done with that `isize` inside `DocTest` or in other places, but that's for another discussion I suppose. In this PR, instead of hardcoding a special case inside `SipHasher128`, I instead put it into `StableHasher`, and only used it for `isize` (I tested that for `i64` it doesn't help, or at least not for `clap` and other few benchmarks that I was testing). ## New approach Since the most common case is a single byte, I added a fast path for hashing `isize` values which positive value fits within a single byte, and a cold path for the rest of the values. To avoid the previous correctness problem, we need to make sure that each unique `isize` value will produce a unique hash stream to the hasher. By hash stream I mean a sequence of bytes that will be hashed (a different sequence should produce a different hash, but that is of course not guaranteed). We have to distinguish different values that produce the same bit pattern when we combine them. For example, if we just simply skipped the leading zero bytes for values that fit within a single byte, `(0xFF, 0xFFFFFFFFFFFFFFFF)` and `(0xFFFFFFFFFFFFFFFF, 0xFF)` would send the same hash stream to the hasher, which must not happen. To avoid this situation, values `[0, 0xFE]` are hashed as a single byte. When we hash a larger (treating `isize` as `u64`) value, we first hash an additional byte `0xFF`. Since `0xFF` cannot occur when we apply the single byte optimization, we guarantee that the hash streams will be unique when hashing two values `(a, b)` and `(b, a)` if `a != b`: 1) When both `a` and `b` are within `[0, 0xFE]`, their hash streams will be different. 2) When neither `a` and `b` are within `[0, 0xFE]`, their hash streams will be different. 3) When `a` is within `[0, 0xFE]` and `b` isn't, when we hash `(a, b)`, the hash stream will definitely not begin with `0xFF`. When we hash `(b, a)`, the hash stream will definitely begin with `0xFF`. Therefore the hash streams will be different. r? `@the8472`
I was poking into the stable hasher, trying to improve its performance by compressing the number of hashed bytes. First I was experimenting with LEB128, but it was painful to implement because of the many assumptions that the SipHasher makes, so I tried something simpler - just ignoring leading zero bytes. For example, if an 8-byte integer can fit into a 4-byte integer, I will just hash the four bytes.
I wonder if this could produce any hashing ambiguity. Originally I thought so, but then I struggled to find any counter-example where this could cause different values to have the same hash. I'd be glad for any examples that could be broken by this (there are some ways of mitigating it if that would be the case). It could happen if you had e.g. 2x
u8
vs 1xu16
hashed after one another in two different runs, but that can also happen now, without this "trick". And with collections, it should be fine, because the length is included in their hash.I gathered some statistics for common values used in the
clap
benchmark. I observed that especiallyi64
often had very low values, so I started with that type, let's see what perf does on CI.There are some tradeoffs that we can try:
u64
,u32
,u16
? Locally it was a slight loss foru64
, I noticed that its values are often quite large.u64
/u32
oru64
/u8
instead ofu64
/u32
/u16
/u8
to reduce branching (withi64
it seemed to be better to go all the way down tou8
locally though).(The macro was introduced because I expect that I will be trying out this "trick" for different types).
Can you please schedule a perf. run? Thanks.
r? @the8472