From 22136d080284138712ba1c4340a9d77e6a2daf30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kami=C5=84ski?= Date: Fri, 6 Dec 2024 13:59:41 +0100 Subject: [PATCH] Use snfoundry profiler --- packages/client/src/lib.cairo | 2 +- packages/client/src/test.cairo | 18 +- packages/utils/src/lib.cairo | 1 - profiling/.gitignore | 5 + profiling/README.md | 10 + profiling/Scarb.lock | 77 +++++ profiling/Scarb.toml | 54 ++++ profiling/snfoundry.toml | 11 + profiling/src/block_24834.cairo | 532 ++++++++++++++++++++++++++++++++ profiling/src/lib.cairo | 2 + profiling/src/test.cairo | 28 ++ 11 files changed, 729 insertions(+), 11 deletions(-) create mode 100644 profiling/.gitignore create mode 100644 profiling/README.md create mode 100644 profiling/Scarb.lock create mode 100644 profiling/Scarb.toml create mode 100644 profiling/snfoundry.toml create mode 100644 profiling/src/block_24834.cairo create mode 100644 profiling/src/lib.cairo create mode 100644 profiling/src/test.cairo diff --git a/packages/client/src/lib.cairo b/packages/client/src/lib.cairo index 58572291..7b788c20 100644 --- a/packages/client/src/lib.cairo +++ b/packages/client/src/lib.cairo @@ -1 +1 @@ -mod test; +pub mod test; diff --git a/packages/client/src/test.cairo b/packages/client/src/test.cairo index 87cde83d..002b76a7 100644 --- a/packages/client/src/test.cairo +++ b/packages/client/src/test.cairo @@ -9,30 +9,30 @@ use utreexo::stump::proof::UtreexoBatchProof; /// Integration testing program arguments. #[derive(Drop)] -struct Args { +pub struct Args { /// Current (initial) chain state. - chain_state: ChainState, + pub chain_state: ChainState, /// Batch of blocks that have to be applied to the current chain state. - blocks: Array, + pub blocks: Array, /// Expected chain state (that we want to compare the result with). - expected_chain_state: ChainState, + pub expected_chain_state: ChainState, /// Optional Utreexo arguments. - utreexo_args: Option, + pub utreexo_args: Option, /// If this flag is set, locking scripts will be executed - execute_script: bool, + pub execute_script: bool, } /// Utreexo arguments necessary for constraining the UTXO set. #[derive(Drop, Serde)] struct UtreexoArgs { /// Current (initial) accumulator state. - state: UtreexoStumpState, + pub state: UtreexoStumpState, /// Batch inclusion proof for TXOs spent during the current block. /// Note that it doesn't support flow with multiple blocks applied /// in a single program run. - proof: UtreexoBatchProof, + pub proof: UtreexoBatchProof, /// Expected accumulator state at the end of the execution. - expected_state: UtreexoStumpState, + pub expected_state: UtreexoStumpState, } /// Integration testing program entrypoint. diff --git a/packages/utils/src/lib.cairo b/packages/utils/src/lib.cairo index 56cbee50..1e7ce324 100644 --- a/packages/utils/src/lib.cairo +++ b/packages/utils/src/lib.cairo @@ -7,7 +7,6 @@ pub mod numeric; pub mod sort; pub mod word_array; - // pub mod sha256; // Let's use core non provable functions for now. Much faster. pub use core::sha256; diff --git a/profiling/.gitignore b/profiling/.gitignore new file mode 100644 index 00000000..7c66c94c --- /dev/null +++ b/profiling/.gitignore @@ -0,0 +1,5 @@ +target +.snfoundry_versioned_programs/ +.snfoundry_cache/ +snfoundry_trace/ +profile/ diff --git a/profiling/README.md b/profiling/README.md new file mode 100644 index 00000000..1a61d27e --- /dev/null +++ b/profiling/README.md @@ -0,0 +1,10 @@ +## Profiling + ``` + snforge test --build-profile -- --show-details + ``` + +## Pprof +``` +go tool pprof -http=":8000" profile/shinigami_profiling_tests\:\:test\:\:test_24839_full.pb.gz +``` + diff --git a/profiling/Scarb.lock b/profiling/Scarb.lock new file mode 100644 index 00000000..419cb22f --- /dev/null +++ b/profiling/Scarb.lock @@ -0,0 +1,77 @@ +# Code generated by scarb DO NOT EDIT. +version = 1 + +[[package]] +name = "client" +version = "0.1.0" +dependencies = [ + "consensus", + "utreexo", +] + +[[package]] +name = "consensus" +version = "0.1.0" +dependencies = [ + "shinigami_engine", + "utils", +] + +[[package]] +name = "profiling" +version = "0.1.0" +dependencies = [ + "client", + "consensus", + "snforge_std", + "utreexo", +] + +[[package]] +name = "ripemd160" +version = "0.1.0" +source = "git+https://github.com/j1mbo64/ripemd160_cairo.git#833e07d7d074d4ee51ceb40a5bcb4af2fe6898f3" + +[[package]] +name = "sha1" +version = "0.1.0" +source = "git+https://github.com/j1mbo64/sha1_cairo.git#2b65bc00a829bdcc244c140d0f31feda32f8d2c4" + +[[package]] +name = "shinigami_engine" +version = "0.1.0" +source = "git+https://github.com/keep-starknet-strange/shinigami.git?rev=1963116#1963116dc6f24eb32d0513c6394ad64da515ceff" +dependencies = [ + "ripemd160", + "sha1", + "shinigami_utils", +] + +[[package]] +name = "shinigami_utils" +version = "0.1.0" +source = "git+https://github.com/keep-starknet-strange/shinigami.git?rev=1963116#1963116dc6f24eb32d0513c6394ad64da515ceff" + +[[package]] +name = "snforge_scarb_plugin" +version = "0.34.0" +source = "git+https://github.com/foundry-rs/starknet-foundry?tag=v0.34.0#d6976d4635cbe69bd199fd502788c469d408ed2d" + +[[package]] +name = "snforge_std" +version = "0.34.0" +source = "git+https://github.com/foundry-rs/starknet-foundry?tag=v0.34.0#d6976d4635cbe69bd199fd502788c469d408ed2d" +dependencies = [ + "snforge_scarb_plugin", +] + +[[package]] +name = "utils" +version = "0.1.0" + +[[package]] +name = "utreexo" +version = "0.1.0" +dependencies = [ + "utils", +] diff --git a/profiling/Scarb.toml b/profiling/Scarb.toml new file mode 100644 index 00000000..09dd02e6 --- /dev/null +++ b/profiling/Scarb.toml @@ -0,0 +1,54 @@ +[package] +name = "profiling" +version = "0.1.0" +edition = "2024_07" + +# See more keys and their definitions at https://docs.swmansion.com/scarb/docs/reference/manifest.html + +[dependencies] +starknet = "2.9.1" +# raito = { git = "https://github.com/keep-starknet-strange/raito.git", rev = "bdbbf08" } + +client = { path = ".."} +consensus = { path = ".."} +utreexo = { path = ".."} + +[dev-dependencies] +snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry", tag = "v0.34.0" } +assert_macros = "2.9.1" + +[[target.starknet-contract]] +sierra = true + +[scripts] +test = "snforge test" + +# Visit https://foundry-rs.github.io/starknet-foundry/appendix/scarb-toml.html for more information + +# [tool.snforge] # Define `snforge` tool section +# exit_first = true # Stop tests execution immediately upon the first failure +# fuzzer_runs = 1234 # Number of runs of the random fuzzer +# fuzzer_seed = 1111 # Seed for the random fuzzer + +# [[tool.snforge.fork]] # Used for fork testing +# name = "SOME_NAME" # Fork name +# url = "http://your.rpc.url" # Url of the RPC provider +# block_id.tag = "latest" # Block to fork from (block tag) + +# [[tool.snforge.fork]] +# name = "SOME_SECOND_NAME" +# url = "http://your.second.rpc.url" +# block_id.number = "123" # Block to fork from (block number) + +# [[tool.snforge.fork]] +# name = "SOME_THIRD_NAME" +# url = "http://your.third.rpc.url" +# block_id.hash = "0x123" # Block to fork from (block hash) + +# [profile.dev.cairo] # Configure Cairo compiler +# unstable-add-statements-code-locations-debug-info = true # Should be used if you want to use coverage +# unstable-add-statements-functions-debug-info = true # Should be used if you want to use coverage/profiler +# inlining-strategy = "avoid" # Should be used if you want to use coverage + +# [features] # Used for conditional compilation +# enable_for_tests = [] # Feature name and list of other features that should be enabled with it diff --git a/profiling/snfoundry.toml b/profiling/snfoundry.toml new file mode 100644 index 00000000..306a0971 --- /dev/null +++ b/profiling/snfoundry.toml @@ -0,0 +1,11 @@ +# Visit https://foundry-rs.github.io/starknet-foundry/appendix/snfoundry-toml.html +# and https://foundry-rs.github.io/starknet-foundry/projects/configuration.html for more information + +# [sncast.default] # Define a profile name +# url = "https://free-rpc.nethermind.io/sepolia-juno/v0_7" # Url of the RPC provider +# accounts-file = "../account-file" # Path to the file with the account data +# account = "mainuser" # Account from `accounts_file` or default account file that will be used for the transactions +# keystore = "~/keystore" # Path to the keystore file +# wait-params = { timeout = 300, retry-interval = 10 } # Wait for submitted transaction parameters +# block-explorer = "StarkScan" # Block explorer service used to display links to transaction details +# show-explorer-links = true # Print links pointing to pages with transaction details in the chosen block explorer diff --git a/profiling/src/block_24834.cairo b/profiling/src/block_24834.cairo new file mode 100644 index 00000000..52e46840 --- /dev/null +++ b/profiling/src/block_24834.cairo @@ -0,0 +1,532 @@ +pub const full: [felt252; 2032] = [ + 24834, 106667140407555, 0, 3881491036, 2335544806, 3052605234, 1514837856, 2296976585, + 1664934423, 2550697899, 0, 0, 79226953588444722964369244160, 1254454028, 11, 1255309188, + 1255309684, 1255310160, 1255311281, 1255314142, 1255314878, 1255315309, 1255316033, 1255316675, + 1255316753, 1255319802, 1, 1, 1255321278, 486604799, 2784354844, 1, 2, 1, 0, 1, 0, + 360286871164701704, 8, 4294967295, 0, 0, 0, 0, 0, 0, 0, 0, 4294967295, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 1, 1, 5000000000, 2, + 114873046437241629014123730969066801277650223397107943405793897035395942650, + 327995552744220747728827472264975129132281026937824481433114862999135484718, 183798206636, 5, 0, + 0, 1, 0, 74, 4, 127546132949210723170506155744618458704585488194981412814733827411511530484, + 62699134637220329802191630457467632702144190950189434455549789867210038970, + 54712568675641741154197123097153371120428671761388858160236304030375190015, + 57436490947555911569964438625238794760232423856149850092818218721695005155, + 10786344652777177960383134332007015, 15, 4294967295, 2631723232, 2814281877, 894274311, + 3661966069, 3149706559, 4090601838, 977431960, 4279768369, 0, 65000000000, 0, + 744843875201459040722321677197802543761820130542793132902572, 25, 0, 23937, 1254189634, 0, 0, 2, + 125779258924099205960274818361552842848956422794257684745854457417282082797, + 200135206351222542530690060777681155426164632184494943143945656612216766296, + 1071526948188700069374977, 10, 4294967295, 3395594216, 3165863070, 1348375711, 2521683133, + 1438919661, 1814892863, 554638363, 3936674289, 0, 5000000000, 2, + 114874969087378193772319621519151725129093617693313440098171296433633080858, + 255413361531744774092340627235087047968049018656492941084446934046414413336, 895858730156, 5, 0, + 22986, 1253102133, 1, 0, 2, + 127546132948904456761513399727841935372145197168000106924446494279072667358, + 440373486273954089701639283954338681040315202695327960915032665874444804273, + 111000390568218547575634177, 11, 4294967295, 3397770828, 4153142147, 3509550592, 3586307769, + 18049438, 726382492, 749514845, 82049036, 0, 5000000000, 2, + 114876527839860017117928651208272319760282760115654629261517713237851708635, + 267999181505468764831120874479282506082814998106478467405417864186690335044, 485721203884, 5, 0, + 19464, 1247494536, 1, 0, 2, + 129313006973936212175161443837434057915439344022076402264931658967557949008, + 359180243265416460330561010498047753752625403211988567461656524912724078540, + 25636375655015221534248527617, 12, 4294967295, 3405959482, 2159115444, 196539034, 2393807867, + 3745074495, 2516695402, 1748792353, 2042901812, 0, 5000000000, 2, + 114879354082078567911369617308865651762706741783776212127956256401659426421, + 163610538577338795768710165537636120003939838399170774677997528665347093845, 454395137708, 5, 0, + 10876, 1239677708, 1, 0, 2, + 127546132949211200504176056085224758845581916883024557571484454111779712125, + 375778897327674140373327679685102128348683855021935561821539157949001010852, + 42843842830019258514062849, 11, 4294967295, 3409479052, 3548540350, 1202744944, 1887388790, + 3630346955, 1681640524, 4261549254, 2409659301, 0, 5000000000, 2, + 114874655530151656497794845814556889718596803515881853985766868574701914536, + 216363549282060750530463604115545558351071317573042092577286555275296367941, 1067795062444, 5, + 0, 20328, 1248819855, 1, 0, 2, + 127546132948830741529141373346964033299427135007460570471808887634253817839, + 125782339672111601092429754504863575867086129437720301959730487982258489664, + 76274741702041120883989249, 11, 4294967295, 3414503512, 3897372855, 477885611, 3973295161, + 3285051585, 3047757734, 3726851722, 670877748, 0, 5000000000, 2, + 114876214614569648629192501773344588429389587982279009785740804496282758465, + 239012821222289549205122053120260559708168712902347501821015986053679049451, 28363717292, 5, 0, + 23643, 1253905045, 1, 0, 2, + 129313006973936303080737920863793279645508806480095294838160691363378026625, + 347663209679386060432992175049172103991680897627068388571695253184519523930, + 29287522651040742046997040385, 12, 4294967295, 3438808376, 4147417212, 3580873425, 1975291921, + 4124318439, 149661503, 3484245471, 161961592, 0, 5000000000, 2, + 114873886797574441491212825297864771650884282466816482133353347451650622208, + 368230928985137509906248412596647479171262384755465018144111929588957434501, 920611766444, 5, 0, + 22135, 1251999341, 1, 0, 2, + 125779258924122080409069305168101830778584597186018856534350857533344140910, + 31173130032823090025063657936852003524577066941130172533174662273928587851, + 408310125323638949790209, 10, 4294967295, 3484348283, 3669591476, 2660094325, 1437469948, + 3432885092, 1056274690, 1191319378, 1069039176, 0, 5000000000, 2, + 114873108771615495616005681425599354224326358582763264397549370019953566128, + 377501634311717591424178664159639804440251162498563483243160035342229671580, 356619024556, 5, 0, + 19924, 1248192925, 1, 0, 2, + 129313006973935999090893488013178440643674878562334965361221863856762647227, + 419767134796742161888639058433894425854471943139362004006744450933452939931, + 33788388048369532491883169793, 12, 4294967295, 3487751376, 683545979, 2248452766, 526399934, + 2891786911, 1844679179, 4131749391, 1332582406, 0, 5000000000, 2, + 114873421978203455644101589694521273634098415702835761296741752167323724802, + 199589594874261358611554441115901070934757249746878269577291129108014251712, 234285425580, 5, 0, + 15498, 1243245037, 1, 0, 2, + 129313006973935668259258640354872432121750779485765245093224276352876161274, + 168548469912947346233469925205853802456569839689569725903106475298353493566, + 5785426176118170613177320961, 12, 4294967295, 3489427763, 4279493590, 2376412316, 387135224, + 3302991017, 2821886293, 1786296811, 3612926013, 0, 5000000000, 2, + 114872906037837766457333840643336900104259424802206460890269824930841811901, + 450024356832053804109234025659396605595737316910208909787953943434019831904, 310976307372, 5, 0, + 15885, 1243534278, 1, 0, 2, + 127546132949210454694552165158407475232790307396559328034846655512417810586, + 400546503520948932641824062452826923286270882522463964989100783242801089201, + 119560841016853585889479937, 11, 4294967295, 3519569263, 1816157062, 2605488798, 4116482169, + 2384468911, 1938297515, 2374300787, 307278305, 0, 5000000000, 2, + 114878603333219679973845938185808459338989129344833241431016060908854073702, + 358626150551910214065846686467622077057160762706497113377475540362631447825, 937647101100, 5, 0, + 24046, 1254303640, 1, 0, 2, + 125779258924113373176576796430504708109855934027423665959348910097033993877, + 318934595577140538164460765372984148171422731664994444890130290380858415253, + 801513543134330388937217, 10, 4294967295, 3532075296, 2442895794, 3347711208, 349793405, + 2350887876, 2146494653, 1383142003, 1125594335, 0, 5000000000, 2, + 114873714828395743802417260892215205423469466640501868655286927836382274977, + 107116140228382350908624576739928737739971955372495996928276326045112995041, 544047201964, 5, 0, + 21887, 1251701310, 1, 0, 4, + 129313006973936205741330622822116592549645600601145322055032369799187206196, + 445097850146655949174910451680546408315285930899362901924576636297379434488, + 198074987262475347203984980315998469623827322901630367867449907948947259805, + 450770362811251894323311036277824060578040551608970919672934652496499663993, + 301745541387828680327124585817970225767, 16, 4294967295, 3540021879, 1208054096, 1245328283, + 2190248098, 817727837, 4095825746, 1744151797, 3148932369, 0, 80000000000, 0, + 744843875201459040722321677197802543761820130542793132902572, 25, 0, 23757, 1254006825, 0, 0, 2, + 127546132949211166751842857309992685871949504024197580718997627728016707309, + 85361208129701911276827978288413143447936630741877378693953749814746837888, + 5025882450954281463390209, 11, 4294967295, 3585810031, 3276143956, 1546626506, 2622616722, + 700802565, 749208383, 4075895280, 841289966, 0, 5000000000, 2, + 114875574982695480780872284617489355019127993186639483070417687227784733417, + 444475432996071490718057451887088885074933187348394057360343002229941899424, 216221624236, 5, 0, + 19385, 1247409228, 1, 0, 2, + 129313006973936258443548582963387333942523696480655733285422778914910846120, + 237920981237408313201409815574712794176577955572904687963832219214688983403, + 30733409672383397266136920065, 12, 4294967295, 3614486325, 2791203, 3832510217, 2759042334, + 1510163295, 3930871835, 2636575139, 3702779900, 0, 5000000000, 2, + 114875290569074858472513128245700972050184410367101377594836880795482139759, + 65021563320839143744047055112259529700593425513699217134059499703612817446, 227237908140, 5, 0, + 20357, 1248969168, 1, 0, 2, + 127546132949211157013452056279207786065728277571076084477719854512482252676, + 63802416017376284827277360169007980602847860984300970905823004466624997116, + 259364101253990157560842753, 11, 4294967295, 3617019718, 3252880941, 2002944587, 46396273, + 493188299, 2626919290, 2002645857, 4231615966, 0, 5000000000, 2, + 114875364336353651277335297430602435214770998347575511406035570574550292318, + 148973997778254775970367122332298433584572227100153788297832258859978658122, 289080946860, 5, 0, + 20413, 1249187994, 1, 0, 2, + 125779258924117243465892314631907621998695857429275412279286110115437928660, + 24588531631797868227758457349106437055281939305459046046786162678826989565, + 727353304336290738189569, 10, 4294967295, 3619503360, 2442329836, 3851881454, 3251411625, + 942123427, 3238902815, 155291282, 4128285591, 0, 5000000000, 2, + 114873829356411008447598852263154391300189296794930058300709558513038976894, + 122142337479281389671763222727368863823545001815648095681516670083092543991, 423495362732, 5, 0, + 10598, 1239475099, 1, 0, 2, + 125779258924263674674616788803873712814553465351685351939889363939925522422, + 42317650520532152828812651660381238575953637979921067239269801178857315449, + 305882548648788688785665, 10, 4294967295, 3624497746, 2461628926, 11636088, 2308964924, + 3264705950, 713739770, 399621917, 2494696547, 0, 5000000000, 2, + 114873244035372463710752826786356675194840873135354818962981189364411042091, + 437777204049213634343448277667865681139279956824999340230340442798809385329, 1079113680556, 5, + 0, 10351, 1239283616, 1, 0, 2, + 127546132948948255580859914140421949361466738900615193807353402180590833975, + 178048419165008127863990644346843995267409453380734982838818055037283332967, + 75674147573138783384376321, 11, 4294967295, 3632566348, 2445885106, 281665042, 4149107046, + 121755315, 3513700161, 1965926, 2838346151, 0, 5000000000, 2, + 114877413414286496946309663700537980900589819329975480338255275647432177038, + 290812438551617283875700222488422913220277713770620259869617185712068983822, 367339743660, 5, 0, + 21048, 1249960491, 1, 0, 2, + 129313006973935524129802359669129033469914402759409827913711210533191268932, + 369562003496284892765815399338291815736422979085540748803690553604869712956, + 40776353299877810498374789889, 12, 4294967295, 3639694857, 11690952, 2681621950, 3495225155, + 3145944380, 42903662, 874029434, 3712540589, 0, 5000000000, 2, + 114877050199440421762637605744091689899370308054576519412561822374822530840, + 406836167371176852653870738259051707247611377194861099503316767259039347694, 851838877612, 5, 0, + 16966, 1244773617, 1, 0, 2, + 129313006973936250914658517916058540841153698237995327321559827713023031284, + 30435410066721022173036367737337103584926507393617368445417665616622227315, + 13408700213965474507799441153, 12, 4294967295, 3674933574, 3467749896, 3927444712, 2439609342, + 1513109604, 1588882325, 3889661101, 4056291606, 0, 5000000000, 2, + 114873801861443346741729047403727293141599954771192277217432791581225256034, + 322662000500320826489245058076435874237949464532761801468491615993477831713, 332821258412, 5, 0, + 22836, 1252885221, 1, 0, 2, + 127546132948836805300272246525853826143956915580077828281957625767680619306, + 262105558464194664565501398143824213108873611164443265568728121617490199393, + 294208686196893047738820353, 11, 4294967295, 3675885482, 419292628, 4077601753, 3243048827, + 2215387165, 2286584, 99311079, 4217395462, 0, 5000000000, 2, + 114874600900606071350394628190867839841988306090173800140618084403117897098, + 434952390307940325576914068389085872041405086239427117473567519209346183773, 820286553260, 5, 0, + 21145, 1250084233, 1, 0, 2, + 127546132949210975838836626861233815069098729913924365012214308902056885178, + 8375521877789117177317939126519930853793448691000562017369031415104726358, + 88943572796824872834665985, 11, 4294967295, 3677414144, 3877507367, 2845425171, 425618722, + 56087604, 1721537721, 731938710, 3462788384, 0, 5000000000, 2, + 114875938090446144241550708861633348485886242450007233218326911197187604848, + 361893543947947925335075011478210969690800321305025897878512141524193516029, 22093895084, 5, 0, + 21180, 1250129079, 1, 0, 2, + 129313006973936264993768959642144712032547497844774485830189428339806583576, + 309376199453331772021674603294346823568911443157417624446761452894636249598, + 44925887115740825293043307009, 12, 4294967295, 3696156439, 909479480, 3332141591, 1802577611, + 2587686737, 3350871925, 3777804997, 137636838, 0, 5000000000, 2, + 114878323970497497008197156625698427387743003290315997345364017448278106029, + 318844216221295409029123519753164136697465731878070714173131731062220354566, 222348163244, 5, 0, + 19487, 1247521135, 1, 0, 2, + 127546132949210544535379662978529854478521607636068430087462476359986381487, + 388329262248604635003574949840964692884871267161989624261659853203408855604, + 211528771716255025063940353, 11, 4294967295, 3704672313, 1087469499, 985118449, 3092903750, + 2646894941, 3424263090, 113146183, 2072576842, 0, 5000000000, 2, + 114875239467678487815037178897262092357260734305336164400324132369308700765, + 267877391803576066708576639726788663911126812172021724433860704261124320870, 1080893198764, 5, + 0, 14718, 1242506178, 1, 0, 2, + 129313006973935811368345422229030870613021913585379233902701501471363241288, + 214765864395397618911087776095325963731740122096324073173309311363855691058, + 15263875538181738456060377345, 12, 4294967295, 3713325296, 1836354260, 2122050186, 3182213271, + 149551325, 907610957, 3863921561, 222784300, 0, 5000000000, 2, + 114877751711065396300424992843434216381771243108273856399997599978791259477, + 358300698536190557702330515852006953523321059558261042680311803582432563337, 940845364908, 5, 0, + 12960, 1241223563, 1, 0, 2, + 127546132948825776340484694361182461968197738443117041647991553398745515752, + 164587179813101589813540158950059441027824513139402929556954100702942797249, + 67397171777743306239511553, 11, 4294967295, 3714194846, 1897089257, 2202660862, 2325321684, + 3854218330, 3650638797, 3947406394, 70298169, 0, 5000000000, 2, + 114879289592459818288251905076334874756885546019278392292318824376339583066, + 159896222981002624701317084429205060003560168334137551245650564611403604420, 1056579106476, 5, + 0, 21379, 1250528179, 1, 0, 2, + 125779258924219839147679081901540981416195181922050605158153448129255925515, + 262812307901070808120972582433069367344324355670622772255704565588557837820, + 1122522726251189087773697, 10, 4294967295, 3717123704, 2911293907, 1758325644, 1504746014, + 1685113946, 3187107486, 1546476979, 3230680861, 0, 5000000000, 2, + 114876591888078803628565348764402176250661089858435703524239816427164284905, + 356915392754224234959646587846994905380510096360995175666432563157579425812, 333767085740, 5, 0, + 11747, 1240310123, 1, 0, 2, + 129313006973935640681752842632413547497554738635468902799166844065431896586, + 285507714923890008460521964424135507966968849388844209631332612875223094700, + 44250836939398077750013002497, 12, 4294967295, 3719263011, 185173815, 3464546824, 489085442, + 4065748733, 2344054903, 1634627391, 3468494483, 0, 5000000000, 2, + 114878622352416631228285035423083721458562827151862709295386800282344010728, + 137865797987237583952062003468843499739155229607074202992803019662229607058, 759552915116, 5, 0, + 19819, 1248072939, 1, 0, 2, + 127546132949211225667969601923936498849312797243079114108626560186232404601, + 253671141775162280475855299076549882720809635171918162881209782175137899689, + 288814034221436715705198337, 11, 4294967295, 3720420801, 2104590103, 1578788926, 3031709137, + 2914212242, 3949995084, 910605952, 3951194845, 0, 5000000000, 2, + 114876011563333385791142832415881249929260818078032987763587752995118834595, + 267933044703643243196497418981897521646789403988158406005550396415349728088, 921866928044, 5, 0, + 15014, 1242712391, 1, 0, 2, + 127546132949210768660709291249007185971616384640286712191124292001126540945, + 149004011827320080737079516763594027382733048861255833872858825217422392220, + 192858031145323614000518145, 11, 4294967295, 3744775878, 4047370639, 2448292812, 2339256938, + 2322722564, 207954610, 2774544597, 1188592373, 0, 5000000000, 2, + 114876555934578547174562618618693736639367334782674840192366349557959603563, + 119714519833247995484118178471681153022784237297210919888507606146471719221, 631930123692, 5, 0, + 17138, 1244952482, 1, 0, 2, + 129313006973935505645082025899519952896200325281933154778306096147592036973, + 54460134450663017187256019744838821386054896121644734893125335746109857120, + 63402264573272701567135091969, 12, 4294967295, 3747271894, 65511126, 1924729605, 3164914851, + 642812788, 1058576521, 3203022577, 746601188, 0, 5000000000, 2, + 114872997944107719423266777035468513692974565150057872930814558214830896197, + 295652771595244360812557636274257490041039549899694875814777404601073167624, 1035282252204, 5, + 0, 22957, 1253063784, 1, 0, 2, + 129313006973936172167690483061911394063369268798486929454230809749178129735, + 224780685877729095070737625133943078592288115254286086147717910413776863709, + 67694093526579863628781382913, 12, 4294967295, 3797153519, 3906506297, 2941207996, 1300741748, + 1940583091, 3205903577, 1808755607, 1431023011, 0, 5000000000, 2, + 114873153573271546997432453892628697894164230100274013231774259070771195074, + 15535491336608468240631819061917873662901134547191509421268259232910866213, 980810369964, 5, 0, + 23949, 1254205420, 1, 0, 2, + 127546132948943162774741841718499057643789722368733995964113695836282876872, + 434888259638323504767903363013578239427699085752631098234268313972894073503, + 18957766319243817742751489, 11, 4294967295, 3802750579, 2008260399, 1891451558, 2782596906, + 2178588113, 717790951, 2105459433, 2997862118, 0, 5000000000, 2, + 114877978724606579134160630172561079410278761137076700459273112928592861515, + 248356886653721353694996514643736975103405183683681669314613125600443344046, 608433960108, 5, 0, + 17199, 1245029747, 1, 0, 2, + 125779258924183986423067635595886325546048495727631838011230578388964732144, + 191236490843546159082953433746321598281996967182815002364757970731631242964, + 553540377016553503188737, 10, 4294967295, 3838988970, 1348773786, 1033110350, 918163797, + 2519991451, 1560195145, 3173938332, 2252005209, 0, 5000000000, 2, + 114876227300005596652113408516949831112530495704228491466332795033707465914, + 387635631458581764871524162771719765833812977275269858657607046099392711667, 125141823148, 5, 0, + 20006, 1248291568, 1, 0, 2, + 127546132949211174232171868248296022944671214033631042326460403359907007073, + 204739573471800810228845276790336574339523818999883193170924823078365623709, + 94959924519089581425625601, 11, 4294967295, 3840340964, 1438047791, 4095397709, 952041997, + 696637964, 1442050963, 642718910, 2992650360, 0, 5000000000, 2, + 114879292868429843122114836092786891559967891516465516472092892634015586149, + 168316886373860946542187911086508208446686107547910758601461100944470124149, 715869289132, 5, 0, + 21555, 1251291238, 1, 0, 2, + 125779258924095169279592266698450194368929746646143039423744897479055551685, + 217370398893724805917694250343340328666572977012695076137166765446108367938, + 76891645511200347540225, 10, 4294967295, 3840384237, 4128215773, 2385248074, 556510850, + 3962221354, 433230328, 1940204164, 69308484, 0, 5000000000, 2, + 114876042472743182256683736486876931288843354407022738586876703001683854332, + 331421254726904082156220485412988412035113338071445376586618310680137449192, 1025316789420, 5, + 0, 17500, 1245364452, 1, 0, 2, + 127546132949210668449097858294956200300362412396172033956525323005226012972, + 229771231698511334195630273421348510083061555699225803913043187880468013107, + 250628185098141117990145025, 11, 4294967295, 3857969201, 3879395550, 2522713590, 3808018639, + 2165070736, 1393595482, 836749948, 2744984532, 0, 5000000000, 2, + 114879355775616825618313892423201989579443218490085682430020415722633115456, + 412915871539109277684620153954888034856962128598452738492705068708322561467, 517160332204, 5, 0, + 20862, 1249774516, 1, 0, 2, + 129313006973936154273281074574219758600243984708883244314225607799803912743, + 187793283809610908275992775421012700760640608150641076474471434159657891310, + 78957110194114215435260210433, 12, 4294967295, 3858322336, 4129263535, 1658423990, 2787736421, + 582672843, 2042340119, 2089510708, 795338387, 0, 5000000000, 2, + 114873956423346748448037558388175401590326892871786637751936339807715102031, + 296793343637727291344714227516671910370518925305730231467397180875971142401, 754702795180, 5, 0, + 17506, 1245369325, 1, 0, 2, + 125779258924131261205859601454435538447392260660144499025817813492759668859, + 86647870387404480095555559008250355316145093354818939941854931261800813823, + 1173601142372147337586945, 10, 4294967295, 3872154259, 3441498703, 3875858820, 1218046782, + 526388242, 1761737009, 1895434779, 106733778, 0, 5000000000, 2, + 114875365091728483731745440736130245601202874115965153285003439075540632512, + 360704022214012027680014693406112673742612890310260683566780702016607718215, 675814428844, 5, 0, + 21418, 1250759452, 1, 0, 2, + 125779258924183083599616756244425233196140424612260368446663642924807129010, + 89757358299002658587724835998682177971326697808378100833773165061135813948, + 517869203114651558384641, 10, 4294967295, 3875477686, 2870965455, 1076302366, 1491808668, + 4223038307, 1271050420, 2863266014, 3309108356, 0, 5000000000, 2, + 114875054940834830900268940186432812687603501047970952001706882559402085978, + 96778680574097406498758428890360083743005651597088804108419079634412048954, 8084123052, 5, 0, + 20886, 1249798518, 1, 0, 2, + 129313006973935638665578139889433568690957170356574798422589594454378131609, + 57333044382457885573751132525411805764310473745957498564343998556061829994, + 55206165389925464359942089985, 12, 4294967295, 3878664833, 945420972, 3725401877, 3671318240, + 2833133844, 86951133, 1463625451, 688463272, 0, 5000000000, 2, + 114873541418895883554870729248711576807617307212303742958815162460345156972, + 38250762149048315751561839060417354628981329715318488478168854792738637108, 584367367852, 5, 0, + 20356, 1248959729, 1, 0, 2, + 127546132949210536045129281767965468989909527394493691742802138795618869521, + 330541928275133586457242988373793963261625952456367384572960286720395336328, + 27010226747562461311829761, 11, 4294967295, 3880694603, 648753624, 2692482763, 2775759857, + 1096068733, 1755995852, 714611536, 4126389873, 0, 5000000000, 2, + 114873611987748898868024325264894827541800854195038216146598313401511920358, + 68036468178731988167465670631231365668187840317833566760488065119417178846, 153064181420, 5, 0, + 22787, 1252830031, 1, 0, 2, + 127546132949210928224802917491434307637602895045581108683969229411671198977, + 394783206686787411240974090737008690260879258333313170679015678877743866640, + 124730249152636744431105025, 11, 4294967295, 3926745168, 3820188732, 1351818746, 2857874353, + 2291844969, 1963262258, 4237521534, 2102994533, 0, 5000000000, 2, + 114877466735709115327378693401379813907609248824748553430347233118505192404, + 384183678908818264243237186937060629233225674381765703348851490731061939116, 943422210732, 5, 0, + 19561, 1247613062, 1, 0, 2, + 127546132948917089737688118480050036360618432777177969930654706756853842549, + 172059911457850679044230225477324886907404173840612581885281472137782074446, + 164713253579345108553204993, 11, 4294967295, 3936190600, 2085469288, 3957647279, 4092866127, + 1679066816, 3820605547, 3668897081, 3114718665, 0, 5000000000, 2, + 114875074159900289886073759537830851525449716884358729843390995653737594431, + 256678624036834283151174324969411739937620818896957061441260808943512900988, 504448217260, 5, 0, + 21399, 1250692183, 1, 0, 2, + 125779258924267120085415115377059681808994711537252824680818567942574324369, + 391152527171590025334398417424055103866772241527104932519978113688848991532, + 1155609180183699070811649, 10, 4294967295, 3952598339, 96729764, 1150921728, 4267478835, + 1549745608, 2776184353, 2855259413, 3325509707, 0, 5000000000, 2, + 114877838074978034204216529116630077659984070260025175780542132641261888617, + 62812388839979891416740450634349866508056004732808607594768499299957177483, 341445451436, 5, 0, + 16183, 1243771831, 1, 0, 2, + 127546132949211250886032871028914345701874987598549191532177108722481850801, + 325251038394147686712942476210049145970197459617720489300715119852754306506, + 170805360220803878082836225, 11, 4294967295, 3953776479, 371712329, 2083527863, 2517723878, + 1104364608, 595426749, 2722555722, 383461386, 0, 5000000000, 2, + 114877116600421493195428006257841375526409074366694675161844264799690894890, + 355665555196615059707266283597668248725073905904586177556040223092360833362, 936823633580, 5, 0, + 16163, 1243759527, 1, 0, 2, + 127546132949211069469966142277619220849662183377606064265288437815070912325, + 146342525745541186996746714136276864544893655001835807119351982707107244421, + 206618725021933767678784769, 11, 4294967295, 3958406817, 1287290802, 2581047058, 313506186, + 2225404735, 4175119053, 2864956526, 3807892903, 0, 5000000000, 2, + 114877127637422008578385802935727218131524892172328931497892085124282379577, + 100891667512777561024764159093112337244209684912416667693223054550108582835, 783469373612, 5, 0, + 14932, 1242656723, 1, 0, 2, + 127546132948934852840721071610192107418324193445758997225580460665281538599, + 70305055433182647432605176132095607971218489909961023168015309272839615956, + 290781941552038102737784065, 11, 4294967295, 3973864275, 3807500416, 4250210527, 2574459872, + 4204427246, 4147436852, 4107457607, 492731306, 0, 5000000000, 2, + 114874874287862142611987993123510075508771911258426227833671003077145258343, + 393929557214950628594927618114583692357137906305090830797669005998617600384, 395922162860, 5, 0, + 20404, 1249162948, 1, 0, 2, + 125779258924131542480721522720109210443702842389018987587215991066991021394, + 225863151450815553452772695094409094599588516858139676519731662749636483791, + 959945650625756799153921, 10, 4294967295, 3974471292, 2829127590, 3310416113, 1471721077, + 1101513826, 2274888561, 3955176172, 2681760271, 0, 5000000000, 2, + 114878989438708035649463287378668925945138995798106680098984250831699362984, + 6610013631305867305554750415891955569924115380052453005657086944620951196, 51396910764, 5, 0, + 24030, 1254284507, 1, 0, 2, + 129313006973936301923626228815109614563867325200125764634043860157378525221, + 367958000446433881285985009474376434896989791873772705518493534876903333090, + 47804508271859369304312312833, 12, 4294967295, 3978335623, 1447667297, 2667507052, 3262336512, + 2158811891, 245469375, 2112620324, 3250389662, 0, 5000000000, 2, + 114877099115595181755661870419657091604379583284824240133849437482595130327, + 333942196018966108435211807632309787506345166686789346634571754710016009607, 1034879755436, 5, + 0, 12924, 1241198671, 1, 0, 2, + 127546132949210852996033922160312911579940066394088340291727934883496586772, + 171963927524902112390153493602313019613819536373828375399348849729861975855, + 230971397001180414265400577, 11, 4294967295, 3992659872, 1194656054, 673693217, 4222990240, + 2583275381, 3094272605, 1070106200, 1026898322, 0, 5000000000, 2, + 114875088485029828347683203659287290881239942229981193372381982075629112987, + 404361891243093874525510817824570341777809702653532003996465626127562460902, 257568960172, 5, 0, + 22765, 1252801750, 1, 0, 2, + 127546132949210687220981636703894216135797811841931025204123294623896313625, + 273927135208267212954762160955968714325377079559890787795951924707250449433, + 218491542875236017623951873, 11, 4294967295, 3998731859, 4043286198, 4208479546, 2403871378, + 3053837306, 2118891634, 3745325418, 2470140480, 0, 5000000000, 2, + 114875536226751901093567157123271777391948399996878266739063404799154732280, + 394971384919685570999139322099609414994543885785650733524444884021632972635, 794297905836, 5, 0, + 14487, 1242349827, 1, 0, 2, + 125779258924166857561439945199570008365885267081593450162739936571242046907, + 220073566861712133960197083604027460691823036348035140349335619961333545244, + 756646674192643137719553, 10, 4294967295, 4021651208, 3378080022, 3522425745, 2642148240, + 250835090, 4282803135, 1623486973, 999280544, 0, 5000000000, 2, + 114872916281573205550645774906297986490064779267208476268255590767402409465, + 139072895349834619837201254100000472786419074796770293261122469090920863784, 237910186412, 5, 0, + 20320, 1248810982, 1, 0, 2, + 125779258924263816278378799175601958222799395831008404193984446951443243285, + 371196577568002847846481318635980030447969474194284999583062768703240600262, + 861479306201157234881793, 10, 4294967295, 4025664656, 831873192, 1153139006, 3616440841, + 1162295604, 1943900571, 1015986848, 1350775677, 0, 5000000000, 2, + 114876758990780500963283167167170106200739567073548201753808805098278945016, + 385944834289767402576289186367372616608222623799837784289687408569174648064, 560101657260, 5, 0, + 23153, 1253274805, 1, 0, 2, + 127546132949210630669319519012228923821117571626923249985650442801784453579, + 70640724967297241653102800520420707768316227136299165383882289647109458452, + 67473703742979735789329921, 11, 4294967295, 4068605529, 3575385036, 1253747803, 429933555, + 1265773429, 3615906255, 3211986064, 138271185, 0, 5000000000, 2, + 114876364022537154373069974878108464466971387894983604198073840196294233494, + 444084194053917034045859318804387880746693374054182956012541173274472284553, 882122879404, 5, 0, + 12849, 1241144117, 1, 0, 2, + 129313006973936171407196736659929147545723713847542248157762636442491808039, + 343202200895161357136081415334029288793897055344349104273147281027914975726, + 12578235917712068312398629633, 12, 4294967295, 4073106870, 340896156, 1316143461, 2473494308, + 3218342900, 4105322756, 2182062549, 3886578502, 0, 5000000000, 2, + 114873667405738691678282429204478150974035891050640660172975776615550921140, + 119232135180964459524924960294569631117828855509974715535683752264125002629, 80126902444, 5, 0, + 12921, 1241197285, 1, 0, 2, + 127546132949211054070864665487538520370962974295922137118109533614912947049, + 239731178497567582976849315568385795419173196592561407884995990603762099512, + 238303205512338796941322753, 11, 4294967295, 4108355129, 218317032, 121469975, 1606557154, + 3329380356, 3255512289, 1157521160, 2092770886, 0, 5000000000, 2, + 114873029934328160759362696218780257072991019013555123822126579153152413778, + 227277800374394757169334110211816801413722341521355137758145380771447566889, 1004014079660, 5, + 0, 18259, 1246169521, 1, 0, 2, + 129313006973935982279918687125765129071068962797418165189723137323369349466, + 188922298267954052461472160201759864523894884604465783612961575247349950771, + 21955079431101000370364283393, 12, 4294967295, 4109010215, 3964082770, 626051513, 1309950422, + 2259240724, 561224740, 2561928000, 3328728202, 0, 5000000000, 2, + 114874329664893847443164877908199722250151185298574284738474651305335367639, + 331998567763813929143073154906999089179937685905216707504049772671238650104, 213811611564, 5, 0, + 23100, 1253218204, 1, 0, 2, + 127546132948954256005810719961433806740026322295451769613600753132186856514, + 338517756882041850738811306021669328639853650062572614270843666888589232346, + 19165361992016692517261569, 11, 4294967295, 4143187532, 1145671456, 1959365433, 2764268406, + 392726038, 2687653571, 2302893402, 3103918212, 0, 5000000000, 2, + 114874337808820536003567688421995849981029720171701368499334754126136190760, + 388747856899998638978054453536206432535592450565374749955376304779982346361, 510514658732, 5, 0, + 19982, 1248259830, 1, 0, 2, + 125779258924149184417628404091762041981712496771676647755918814245831025691, + 373949391657086665626682992587629715376848874964552397503114800801177852029, + 1168166689966378563392001, 10, 4294967295, 4145930139, 2187781431, 1947062094, 4110499881, + 1895058563, 3576510153, 2441553221, 262563307, 0, 5000000000, 2, + 114878195121439713416100606654474735582520486494762179249498773641713854489, + 332861753684673921747203733473557628071523632984114488560945664857624677952, 870467166892, 5, 0, + 20367, 1249016429, 1, 0, 2, + 129313006973936166554908793902805531669052935973924131711184523416720142108, + 451676690939552045649265298682990134034168964226003693098653329844864365942, + 46754668811829469525981094657, 12, 4294967295, 4151508553, 458985373, 3018304761, 2309897398, + 3355823585, 3904124854, 2768923775, 1085417934, 0, 5000000000, 2, + 114875109563161113979862431483752018136509732204540473460692652227683749143, + 273361376325829209672287922248866296778536674116980068486449144929820118194, 173967240876, 5, 0, + 22740, 1252774919, 1, 0, 2, + 129313006973936185152321167603220800889606182354564232530752578792444486067, + 195657025238949073776048359134386276948930531019545564716087625599424369514, + 77543871691735855993808275713, 12, 4294967295, 4157665170, 2407017573, 2431761652, 1954729114, + 937634068, 3519748438, 1190756409, 4222866936, 0, 5000000000, 2, + 114876469851800183380583788483894783423548507620596376639968462984265031031, + 319332189579569448445401247896373985627893647777359713713941548535535715562, 427886570924, 5, 0, + 14018, 1242028259, 1, 0, 2, + 127546132948814979629746118534108047311359146291021956032759614375556908341, + 452129665061127949973942742339323116381861463994353284069146038647752526408, + 75259292343496636398169345, 11, 4294967295, 4163157773, 1398026552, 1856945709, 1803042222, + 209266533, 1869998720, 1926779309, 3510680777, 0, 5000000000, 2, + 114873212260484926632371239586046616165566157305073829948983324707495063028, + 256126524428536344273751917885105131593952384935260567964233600843366583352, 364388829612, 5, 0, + 21419, 1250759900, 1, 0, 2, + 127546132948886852937080261412495839879955709498890123199959451924505308515, + 103507382496582541990090026633211716664063241962563568759005966911827214174, + 304405578002509555323096321, 11, 4294967295, 4167920177, 2994870181, 2935042246, 3115722754, + 2793834145, 1145081306, 1364478965, 575164758, 0, 5000000000, 2, + 114874445142591424864709973113182059370190087840864812537473298187590972856, + 347311509427246666770154596812476425007645880426343558541397850344151548355, 719301805228, 5, 0, + 10866, 1239672640, 1, 0, 2, + 125779258924221412035553386026880975980783057871159362222711136098823244540, + 154834694411473396413339347440149110431181395456146637066734089380809905926, + 973272871753229200432129, 10, 4294967295, 4171027992, 4062215138, 1696615731, 2501455514, + 2308996199, 1680142693, 2398979050, 3764737897, 0, 5000000000, 2, + 114873242131001615138757899670169729135158137017725617144150570568800266500, + 393962233456800445437717441301241672301777326651564853762295363009918123779, 191347241644, 5, 0, + 18963, 1246944832, 1, 0, 2, + 129313006973936261856395461142374186507023533980232783040925025531659068851, + 181404248015640244105650743079713703343589172434675916709270502352812394143, + 22340647950979246591848139521, 12, 4294967295, 4190740630, 2450674213, 3606383687, 4163295775, + 4064922216, 1858369899, 1329923824, 1379776988, 0, 5000000000, 2, + 114873150537490556144677792298069521981775443801768605817560131824490005436, + 259027728591647457410282459466277114626249684958008022760680130112292772802, 1032183670956, 5, + 0, 21660, 1251480272, 1, 0, 2, + 127546132949211219015096943792300200295590801803417288617295915904273655091, + 66617447132675860734098934189214278126785700699570853298418545438448354091, + 79445411893758300727332609, 11, 4294967295, 4191729516, 1984146328, 208053576, 348043341, + 924795833, 1271361372, 3540177534, 108138583, 0, 5000000000, 2, + 114873409537396625423902593461864876798466543597988534518208612280228424567, + 217862648350795684738536754280451424370808524957281533864125084596012330812, 984347056556, 5, 0, + 20721, 1249624975, 1, 0, 2, + 127546132948899921822699895751843704741503674170063019798539344783878532040, + 137466818946053130831479018432955982892818016352120765560335225454335324085, + 92411296187920468126560001, 11, 4294967295, 4196942095, 3177053463, 1907517214, 1676782805, + 342651427, 488873075, 2001273119, 2829715180, 0, 5000000000, 2, + 114872687365659435996603665545513854416904857977398447733604127196781688888, + 327301624295232417619509301960566233036681886710820922792713541070343094879, 63969505964, 5, 0, + 15905, 1243551518, 1, 0, 2, + 125779258924209677792478547651546722044830675084394049948959004323768458404, + 73582193540728694448759861411196597881986993597891912225076448922905697917, + 32716208995637214289409, 10, 4294967295, 4219377420, 353322366, 2198110377, 3973872978, + 2985418889, 2169362931, 3884375451, 1669680306, 0, 5000000000, 2, + 114875833814807137389144153460089854320863014447283391713384637072068391906, + 431944875588951312674687766947069754466451403663980719243109124754280475401, 117774393772, 5, 0, + 22919, 1252979295, 1, 0, 2, + 127546132949210701111175476447390170998501910897260892700268354975055114540, + 240363559318082652254855213176557526498768478287335213888402913052435734767, + 206777441925143619166534657, 11, 4294967295, 4224030424, 1498080928, 131967623, 4010652152, + 537357250, 1933743182, 769181321, 188296467, 0, 5000000000, 2, + 114876364913148185456597751973732942939713005599123552323002574009204709813, + 379348783105284973579196965385556567880176969895411456556972637954999435057, 384463377836, 5, 0, + 20056, 1248361515, 1, 0, 2, + 127546132949211148370114042496689112573838394407143926518657632810499529119, + 185192925299241724313517993023356659907532896439917190651775323016850620542, + 70064311247618803584593665, 11, 4294967295, 4263418510, 455274728, 468587114, 2461666107, + 3836832787, 2073355948, 2206691144, 2215099939, 0, 5000000000, 2, + 114878252610235028415210729240415075124395216643055973352526533316215647107, + 329710033256988199812624697175717885947894361842436035915071807733363905513, 854257389996, 5, 0, + 24310, 1254608000, 1, 0, 2, + 129313006973935791203956990639843249754244065506945446710036802984543279393, + 69981692871322774240122557778198606501815043932204233757354027962795945466, + 46087870470629625654019581441, 12, 4294967295, 3541436494, 963489357, 4136248023, 1401846626, + 990142496, 701324666, 2508163566, 2678551324, 0, 5000000000, 2, + 114875118816571193791645793351029911008218698167205887987282045868873496986, + 47760343405471646990307032060453520198372062071170570972672009155969102570, 803551292588, 5, 0, + 24582, 1255026678, 1, 0, 2, + 127546132949210903081995593101789629272420202458778838850840032799420363846, + 392405424406392367967963836112049844329006483684551208470837106821825681964, + 88217120522183987530627073, 11, 4294967295, 3080371527, 4018734594, 2721983102, 3100715885, + 1149931179, 3641168549, 2330078352, 249750674, 0, 5000000000, 2, + 114878014160787234716890249794745682029923895127420888026617339535161911346, + 323309571976743950528594042911793383084291180343679935613715495014786305425, 10894133932, 5, 0, + 24699, 1255157373, 1, 0, 1, 505000000000, 0, + 744843834227042019020079654594919177678903855843411724306604, 25, 0, 0, 24835, 106671435440388, + 0, 3232537866, 376278238, 737445358, 3378631884, 822863371, 475528212, 2210279187, 0, 0, + 79226953588444722964369244160, 1254454028, 11, 1255309684, 1255310160, 1255311281, 1255314142, + 1255314878, 1255315309, 1255316033, 1255316675, 1255316753, 1255319802, 1255321278, 0, +]; diff --git a/profiling/src/lib.cairo b/profiling/src/lib.cairo new file mode 100644 index 00000000..affb5342 --- /dev/null +++ b/profiling/src/lib.cairo @@ -0,0 +1,2 @@ +mod test; +mod block_24834; diff --git a/profiling/src/test.cairo b/profiling/src/test.cairo new file mode 100644 index 00000000..9da7ad98 --- /dev/null +++ b/profiling/src/test.cairo @@ -0,0 +1,28 @@ +use core::serde::Serde; +use consensus::types::chain_state::BlockValidatorImpl; +use consensus::types::utxo_set::UtxoSet; +use client::test::Args; +use super::block_24834; + +fn verify(args: Span) { + + let mut args = args; + + let args: Args = Serde::deserialize(ref args).expect('failed to deserialize'); + + let mut utxo_set: UtxoSet = Default::default(); + + for block in args.blocks { + args + .chain_state + .validate_and_apply(block, ref utxo_set, args.execute_script) + .expect('Failed to apply block'); + }; +} + +#[test] +fn test_24839_full() { + verify(block_24834::full.span()); +} + +