ETH Price: $2,452.26 (+2.14%)

Transaction Decoder

Block:
16525861 at Jan-31-2023 09:18:23 AM +UTC
Transaction Fee:
0.008286416339994369 ETH $20.32
Gas Used:
504,579 Gas / 16.422436011 Gwei

Emitted Events:

168 MemoryPageFactRegistry.LogMemoryPageFactContinuous( factHash=E802B39A71975D255CED9D5A1A785D0B463333C3839167B48F564A54DF57E1CC, memoryHash=27581677632547362456920096834755587882906677197448392589145018166508892074737, prod=383608669892343447092948446076001399766915870491317641222003456162060717614 )

Account State Difference:

  Address   Before After State Difference Code
0x28067505...8E73edECD
(dYdX: Memory Page Fact Registry 2)
(builder0x69)
2.037505899338660341 Eth2.038010478338660341 Eth0.000504579
0x99Ade43B...98e211FDA
31.786301400148808758 Eth
Nonce: 58562
31.778014983808814389 Eth
Nonce: 58563
0.008286416339994369

Execution Trace

MemoryPageFactRegistry.registerContinuousMemoryPage( startAddr=9745394, values=[44, 23125462475282473980559945517400127256969422179691084073621328142154674305, 1197688380607468871897869919086589596356584692236434976201447345363845726652, 1216800759551122518639118348313000672472921493104332937784440065543270627630, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 857766162406238402498486222510712491824290151227037915988447569516369987312, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 1643044538416831336805731550125999607561649089569649800214554780734543460702, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 2110425613853109136953436074214075272318470693468036565974191514380556635738, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 1318950541297128036249433546618488442043642772376000956116930246386986344607, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 2089613358736899809153349049283195088649438873256312981125293147771385732758, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 2441117934070949807186783439240429336268517744884381738391667237535080215515, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 1524478242427008200748592480598145956003038284229700908455130693400705642206, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 2878435116967834067365805790644526068003243900731139327943873366918959017745, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 510003231421972714531433162658424907879904994483989783770656426933281279413, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 3489836861015303437385304706827114019623513891444147448744177792231576622345, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 2109715831209177762422441163013768936204394474206380239288630340317890001031, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 1802918773971371203626193485760561847487106370792469614809727344015572466842, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 515354146499147755763798093297487201556144075022934112821785742039256966479, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 561430066594160178866078824294148943729747541621694126436131693964132118110, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 270859102096580520832316766248151551422721718767706417277702402012215451589, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 3599998649937945263939274969360004284137333670140433026374226926680596317732, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 2799155144880474796675947472522615584896574783950936274718428834061398580149, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 2071150626917996272516703229907762252522532826781142604335417921768477640475, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 2616454226923145033976683938942996987720304849660200028032783781972782019578, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 1596681816236139869272128612171021861874909679749495076214196699751527040320, 1072035497076846607322037267784110659410341675694031857644447227002241788184, 155, 246930652783857782251838442103670756662366630621379341567502181154550565, 12, 69036229591699849960932814930274583219423937176044869651883289380133062597, 79680786004530545736316642022392, 217220084042943934043295412551804878100253593337652225984163585784397531836, 8714215905786836602060827891492, 482148859801725464274198147480840119334382080162606228723774290742111978842, 2461447413460507, 731009553143347574080655238666149040102619103132239422267183761870156583437, 66769579157747560231872424235519211066, 731009553143347574080655238666149040102619103132239422267183761870156583438, 134066455473, 838344631581707069391014439689326622354705903772311779124175544517472023657, 105492834631, 860370950108688216340004790080337058268427944294306403669698046952904826247, 74869662172790148285, 1259361077121816271859247023653075722604821884772582172093947487598560022434, 21122492504, 1446821757104641781948757487033289620065803269090287896475220893178955257282, 1675135295, 1674354004849578474235843626904129035243166212275069178680248604364187730817, 116392231286, 2318736887331368761321803003856896048755498951048464294335952677135793010967, 55170200227544, 2402804927516903185152065874377900162750844523137253147412998178616891738554, 1118708876598, 23125462475282473980559945517400127256969422179691084073621328142154674305, 1, 916907772491729262376534102982219947830828984996257231353398618781993312401, 75, 24391695916363570802778859391610406859919209672208580040096615945972882790, 110680464442257309696, 84021291731845367250742295308628564338210276114808793405616966050755327929, 2, 482148859801725464274198147480840119334382080162606228723774290742111978842, 24527475407583432, 1458360317307722892324075707981695377849324581231948656656623188373599000464, 21225590791433, 90982222754420393101457733515821090429007516768861552708046236284775127359, 793209995169510719488, 141392808002772931930513687105041230291747098868355623029280582262120432143, 258254417031933722624, 170160712824051560760496057035940321777374778229706006189616126330797945444, 166020696663385964544, 174608607378908559471839566455028456233263522897939457495898831555414118420, 73786976294838206464, 227965691144383215446115319916867876134742581103417687767344647857788048011, 55340232221128654848, 240250536337452802595734621890794434117497092373831547162473539980348954935, 5183535084712384004096, 249231843285756007832908645261483075186247489309466791364461349280741976535, 36893488147419103232, 262615903447501861874134906113587448469162479421071421265225113058913060573, 73786976294838206464, 270859102096580520832316766248151551422721718767706417277702402012215451589, 36893488147419103234, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 574097294508761389712162477682068328548875428600987009751453697114716335453, 272180916404821177071003680957518188825135336814632409293446294583888270705, 166020696663385964544, 274259239850091474298878947738862269520845120412091756799326830162183298086, 147573952589676412928, 284013696087942660868657672854787338025284788133890737121601258046411063196, 92233720368547758080, 352496410092761631778044121109552028422556875202231503922852429976149529915, 313594649253062377472, 367197906183797993130452795711865096328910691665422431405262502990466134059, 4, 155082539558689579094930820457537605560250202889383976768599028600060638458, 5315733485132119146, 860370950108688216340004790080337058268427944294306403669698046952904826247, 7869454812751211852024, 1450773348621475531073306325960351147940191236122574546481360435247650274113, 1675135295, 1674354004849578474235843626904129035243166212275069178680248604364187730817, 7892890824, 385291772725090318157700937045086145273563247402457518748197066808155336371, 25, 44670764737342879362527744257787475831718460745105060867833898335396359102, 15525578279666280487, 98825239756614816983270276180368744138846281776833942936961586311426048972, 26518712702584112870786, 128513747348928107990927411614315435409311517136217840583116860020503172623, 669140472207982022635, 188685702719084425654795082057384653172417462883416662223563961616524329451, 12730332162930967292, 322378694056469262787962375915802154288362318910838030073967203361949672796, 340282366920938463463374607431768211455, 322378694056469262787962375915802154288362318910838030073967203361949672797, 340282366920938463463374607431768211455, 654570951647347405568317023887877977006047437173852252854263379553900581537, 15341632656332699261163, 709620195672798994488192891031188876123316151359008376712308791747770572546, 13605679466740008233, 924665553889345492659904525803548632305761566170580252562534513089008649392, 258, 1042280755620351737991850369962942430569924562996800785771461414332061963968, 2000000000000000000, 1138102585933080762687588574951940568393916737061955149298889590431930889549, 21266197177927308017564, 1226514379144694428916823945959893670885491391814157861672316418891173123783, 20456782216971068131, 1486803289745406872299736415593804570524255626766019192109364336433288343728, 2632874355654490253, 1707362110760771455375208489833592659972170660843842775739402517146077881965, 100000000000000728, 2029520772430531854993200277623681745377498941268089321789251628069346925149, 20189567693554425690, 2139247304309154715304786756391647131323693156746264972512697429556089532225, 258, 2291940596220812394745661087214368959735050453324684670696701244470505663275, 1246, 2539339170078656994706152857141330115780951627679531711584706874191417092498, 2503243050755137, 2648796611528092585272358007006908862394578076262083907064865876780025659808, 1246, 2650525587979760243536244492935258079594240371076596729522476320712808148636, 7869454812751211852024, 2683134902077483730700759385168179189787062243985354483639989154326993653249, 0, 3279837328869100369088951877952590244868351857647496911543264332281845336090, 333, 3303402187510901726610433126137154899735971041064286535680778088789824216776, 15087236280431361293989, 3549283585432744966226837532966797821666410147541946963389560104637648752386, 8662596497000003733697, 3578910170090134592544635979095330916423627324018919221900956885926392571409, 0, 425739074383085492127328880899319773787379853350844296058234092961993238375, 4, 155082539558689579094930820457537605560250202889383976768599028600060638458, 5345700033974637885, 860370950108688216340004790080337058268427944294306403669698046952904826247, 669140472207982022635, 1450773348621475531073306325960351147940191236122574546481360435247650274113, 1675135295, 1674354004849578474235843626904129035243166212275069178680248604364187730817, 660958125, 459939969429541188566061157386129000095701857128323436094614897489479517925, 664082786653543858176, 467359278613506166151492726487752216059557962335532790304583050955123345960, 6, 321751264442790402984935101055086840420519863546320125522244203922488951779, 21266197177927308017564, 321751264442790402984935101055086840420519863546320125522244203922488951782, 13666430829479717027, 1032717993920308306191823419406815870858725944687744986845677154805147281824, 85722072433560088491, 1032717993920308306191823419406815870858725944687744986845677154805147281827, 133507936295, 2115492923921523814468632200599040563669287468411561214414663525667701459652, 10715385953254775195, 2115492923921523814468632200599040563669287468411561214414663525667701459655, 16718601664, 489285075171756040092107406754084132925903942597278316408418369394773555113, 55340232221128654848, 510003231421972714531433162658424907879904994483989783770656426933281279413, 36893488147419103234, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 885059457455599190145178768375571250433431102868152226530887655783550171877, 515354146499147755763798093297487201556144075022934112821785742039256966479, 36893488147419103234, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 970077114017429835076314311239097448604995094025127245311960168615386506280, 561430066594160178866078824294148943729747541621694126436131693964132118110, 36893488147419103234, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 3257392077412098193474053241473063596043549849448425715464695211029735616247, 629022540449895932875209305125873575022763997067196085216880599628073777137, 166020696663385964544, 676028716993851673397918835131328481427799807821756534219643869301313604743, 12, 69036229591699849960932814930274583219423937176044869651883289380133062597, 39030995253466087428096854782671184717, 217220084042943934043295412551804878100253593337652225984163585784397531836, 319718656194146212044402086143415028838, 217220084042943934043295412551804878100253593337652225984163585784397531837, 1324, 482148859801725464274198147480840119334382080162606228723774290742111978842, 639326873992832651901, 731009553143347574080655238666149040102619103132239422267183761870156583437, 150719575864320691729881556458191851248, 731009553143347574080655238666149040102619103132239422267183761870156583438, 198648, 805994341226541554265899298276362056713672765046421987754456350341045577928, 66971009055288208, 860370950108688216340004790080337058268427944294306403669698046952904826247, 26518712702584112870786, 1446821757104641781948757487033289620065803269090287896475220893178955257282, 1675135295, 1674354004849578474235843626904129035243166212275069178680248604364187730817, 17001337037584908787, 2046493246628212896969038919290594351832633981151425804162003234918512534350, 0, 2318736887331368761321803003856896048755498951048464294335952677135793010967, 4892113227794088674, 798049920534299157617208456359091240224265942526684643796541644698976158409, 147573952589676412928, 835859446422886298983009101778201633586300224233456944035663015328999179212, 295147905179352825856, 857766162406238402498486222510712491824290151227037915988447569516369987312, 36893488147419103234, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 1841093553015661438321753081911185190080689010932147319345966879171690750693, 885853775839743694122479846367656156751750849598825819625276918830029438773, 55340232221128654848, 973709167808379480307833853980503439452379780262075515019283483680261659816, 73786976294838206464, 980641348758169158361564622616439166824113829417782360965256920656439161142, 3, 482148859801725464274198147480840119334382080162606228723774290742111978842, 2812934263581065, 1259361077121816271859247023653075722604821884772582172093947487598560022434, 21062631743, 3226119828346057359593535472789676923544712072807875585017151292496252017565, 547556633054, 1017056022675666131366081570039879366208069217045296264935924225482764591491, 516508834063867445248, 1018130352904090501452535071707495437771302407676771931993575172857579067584, 387381625547900583936, 1137437646608204114424208027667267735774924616108598086493238633524247999777, 110680464442257309696, 1189782730929243772550638278980638691834481872924675658056914294037055635774, 387381625547900583936, 1203547651708349271448768365881041305352887755542740175005943917204658012493, 3, 2061805328252236960963729158851325803313078809600179016270162045716286102986, 1, 3232270466601742502033456903359758369509250455480316581879543568331417193135, 1, 3382044249325163918884378876658689149905352965007316972183432123401273432321, 1, 1216800759551122518639118348313000672472921493104332937784440065543270627630, 55340232221128654850, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 650605030194850782843348057079340924296479655032719770305248532441613575481, 1226077004656869656079320998614023076288579933572984198341914826155517550380, 55340232221128654848, 1255162970980845898131959325573746053982070770564477259168320505752319041613, 461168601842738790400, 1262179332161508125220609522185144488231554520633423689212264986619275401059, 166020696663385964544, 1267617444890850753181491558048238200878893702528050981701925543105685678644, 73786976294838206464, 1268607095122010553255674128049923104148594263332238056716441031865519924030, 73786976294838206464, 1299970406934531065747197579545231330462203252759146323788095606120638708030, 92233720368547758080, 1313483252473652617370481401696736945256311754574056154835834081336890201317, 6, 69036229591699849960932814930274583219423937176044869651883289380133062597, 50126233273505573210201050176, 731009553143347574080655238666149040102619103132239422267183761870156583437, 274764962460036424282526756424101008594, 731009553143347574080655238666149040102619103132239422267183761870156583438, 144325293857453, 860370950108688216340004790080337058268427944294306403669698046952904826247, 15087236280431361293989, 1446821757104641781948757487033289620065803269090287896475220893178955257282, 1675135295, 1674354004849578474235843626904129035243166212275069178680248604364187730817, 14908695129, 1318950541297128036249433546618488442043642772376000956116930246386986344607, 36893488147419103234, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 1802484062268827213339256775270693717229013035124306386566894544666987408243, 1319010268733061677309337177533173471683440269245519787610874482612161022832, 166020696663385964544, 1330111929147599136811888749934979500616398351233576617925707364459371291822, 258254417031933722624, 1332854324035908080705568698155739169772163338613373820242999737457333178663, 73786976294838206464, 1372882548073012799515697292915208968741728807374701434035020081703254271884, 37, 114684522822749325770135661270900809221014529227497040442817026007142217468, 51371, 147995611255773588279950026594685360246368973665518859648658370804744505732, 51371, 302463122059428056402351581105510407814898399531499086206302656183660870567, 2441117934070949807186783439240429336268517744884381738391667237535080215515, 332001411529527545025016221823687074082485916303646212469607358223870831648, 1, 562369834344184733616503041513739447713434854751676193349085754332312568700, 3, 577830856435688843471622589811951634552868311864936471459623330322165070346, 1, 1008471558168477399856181257483247697283529153522782219615752837578988570551, 2, 1008471558168477399856181257483247697283529153522782219615752837578988570552, 186294699441980128189381488426234942374531673514398281515198837876549645639, 1008471558168477399856181257483247697283529153522782219615752837578988570553, 18824588291786950122207703084607656125944799975598190, 1049870233231661853550339057621509215211580965610983142671853187997606223520, 1332854324035908080705568698155739169772163338613373820242999737457333178663, 1062299877610369049584804851026154758193947607240691597324353483615404777698, 1, 1200238314433594877002290290812835140566591033167385566052467508956879610592, 3489836861015303437385304706827114019623513891444147448744177792231576622345, 1293454791141145402579530836458177951690650992748851881289680356925680318356, 1, 1549768378641609405600403721974538387654585982018800739503899976289638173567, 0, 1591355398477923019632827029827542599923614974319186709247681544019004550898, 70, 1670289913289290090000444312150120617371324576135666609400095897400857203795, 0, 1704942082283480639831557951645043252739665978067802372127060291784787728258, 2, 1747296637005293494785090130886364587964062305831457477188554609379005803386, 1, 1944314921152819527453536135604238645153805639332308060038126525444304369414, 3268393797694830563265131788163365494370425713742504962563122924266061365826, 2096772186619517627019216670034837319234633298177105176697125145289892589760, 1, 2141210521790091904101878412394528253480272190666695420774855906251503352463, 2441117934070949807186783439240429336268517744884381738391667237535080215515, 2216907798114684277540294271964063594069785682781597408824799145091737211026, 2, 2321480191116391875325650954384492559494968428128592389177199459962504173193, 2, 2321480191116391875325650954384492559494968428128592389177199459962504173194, 186294699441980128189386318471820247287614056050068836912663616367174238535, 2321480191116391875325650954384492559494968428128592389177199459962504173195, 38335590216677822791042034239935756696576828250551413, 2452143060774813925503128988542557558856897012064062336073055657759234954945, 2878435116967834067365805790644526068003243900731139327943873366918959017745, 2488150889301801101008124657396365271816841911901027032758385768229383381755, 1, 2653732393646318778298462613023992499691741546095441045762427307654994613002, 2, 2653732393646318778298462613023992499691741546095441045762427307654994613003, 186294699441980128189380301327480234226750351800828364106370366209792890984, 2653732393646318778298462613023992499691741546095441045762427307654994613004, 38306553125879576913600695815831467244962540631836018, 2660752345956567748061961508804993182527864437461300540577082337281051858723, 1700560731371607983271935260925328790353578494395011475737659942492693247684, 2809169916186581898110852265917628558658868510023068099412920561216580237912, 2, 2809169916186581898110852265917628558658868510023068099412920561216580237913, 186294699441980128189380725437078851496069795573877820202139529934876730965, 2809169916186581898110852265917628558658868510023068099412920561216580237914, 37582819866797490881356750318410363030018474569322801, 2826831615054314673862145124507573470834578945457229950494485003819794227219, 1, 3123196086959239385753964916987641518818042672203453091977612018956694489242, 1, 3129440395135294811462924893049208686960988708868568111073860292718650410647, 3268393797694830563265131788163365494370425713742504962563122924266061365826, 1394462396497507939213058169850489081852414192308163244943033258855118193383, 55340232221128654848, 1449657535693528718460977470132242370001717911167115051136097361641401076138, 129127208515966861312, 1468944871838341661630713380265204589380872449982536845067099173520517083154, 110680464442257309696, 1478026850042277379114963086546268169563341437741914609330885434707408017503, 2, 2739252139740829785222535396211029038453312880143018886942128263179946443733, 459939969429541188566061157386129000095701857128323436094614897489479517925, 3349282636211596592320702765947738134670145142702904359907779280387367759699, 1, 1481980909207477987471021395307550929742770229443075282896111652230323233476, 15, 294580558309796238077853817015321069338363274298816300761089550547238760367, 3777628733772675470826508162661, 1195251400652151190085814703104052752432993841119366014885360398719695213595, 3777326502317771813532831618664, 1360166102994301741242586908772306297541603778658526090050728664306749758371, 86173743579405285859524609675138661, 1437664311600518933648989607756790072888430269307855847616108400360155106728, 3740492043751388580866002818664, 1664772817032978669288968389624982613916547460935065698682629903786504576759, 3777893186295716170958475138664, 2138281233876316965393901449521465900743949125267692232053653659294998832247, 86164884419883422405103715979138664, 2308415812348558971615063098928011758329580420869061607356021408784579812435, 5923698737142041067035597345429096, 2322347035689040617843868126596562983813429617125779326166175134665665762784, 3777855407363853213796765570662, 2370701311682459354389995670901941055128496451404586149985723493809470353760, 3777572065374881035083943810664, 2416398194948356652452759541484009944586636292919908395240175123542135303840, 86804273952198040888457299595138664, 2951151250570115487575607720634151593850652904483735225295888456098944971758, 3783182236756530173597814658664, 3016116695992780747803189565485375821803653333147252921429639753904317044117, 5943192666021105894340691595138664, 3134869505771111361250330924768041581815502559644398602887689121977109973273, 3749898997785264914131685250661, 3347768566853934174371986561032260491507693457219247608390916089551034446905, 5922225358837164669591881355138663, 3355907602259494737193326526805341643955107965839735571892486096809028932858, 3786960129942825889768771458664, 1501138340009750189890877086195795563192448537060688130607751461721557763024, 55340232221128654848, 1524478242427008200748592480598145956003038284229700908455130693400705642206, 36893488147419103234, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 1175158483460891832181905015060770553737379328142216147752590066559685202637, 1596681816236139869272128612171021861874909679749495076214196699751527040320, 18446744073709551618, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 1092648799325559864885463553905030783525893377432753270897201895779467723236, 1643044538416831336805731550125999607561649089569649800214554780734543460702, 36893488147419103234, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 1020494581860203948917757042779473780226576800885178768219577567137401824256, 1666504196120627268396364177464160576840259810397094269300019870992348207557, 36893488147419103232, 1678542957528052638633939769832715461986990549366175562137294448957495213946, 2, 482148859801725464274198147480840119334382080162606228723774290742111978842, 764480345, 839644019474752947990288455750629022716268474098174357453177484270147032426, 4266472, 1700560731371607983271935260925328790353578494395011475737659942492693247684, 166020696663385964544, 1728761689820165142283334482446646319057395710973610628077150316918259359884, 129127208515966861312, 1730843735206909102151873616508572655403586088642065623634736218019865421970, 15, 155287036224941278673048898811903080106685732735976657883045403235053576225, 1000466978779582576, 298707737549342507468066135892265963902412222001621443357180871239112352955, 1000592078936219034, 478217588719351585532131761884497367599703888725000385043014931335113807055, 1000409728438752630, 1094906459605511127112200796103943118161950465204901808037642876103649268229, 2052815984896202, 1763603708570698910479046801200388578450984335682243813399773298586756550812, 1675135295, 1865260297076691547314904828635635891752551249106930403121690209571541790037, 3391442879196869, 2326476526984260570169547590292060114253751675474384139234587888878343918723, 10068447193274794, 2558666525990586205664073414813657982378883608041270823950710827282323687914, 1675135295, 2837040637276246836107232546805717255008163281491037294475752242096020524077, 14300994271165048, 2968419558496500917523855132943449701082567859018094568151423360962418967759, 1001257516431755591, 3046938222487210962189442966359332769660906378197594896672337114967812042437, 4141498352163884, 3268028989496974463627327285711031699887982537994488184279095569037270916360, 1001928437388340378, 3292783328031196147794727491483987945757150386459531706639568971280315082443, 241539580859958, 3444816870159987401615204428567044020345275165014558405127302605825395968781, 1002245306687741919, 3465842138406766403062861468367822117619854602934209537065245218940640093876, 1675135295, 1789441546923715967828187492691751307601354208181667696026125674174642977050, 110680464442257309696, 1802918773971371203626193485760561847487106370792469614809727344015572466842, 36893488147419103234, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 185649782057499569580286571938774398348462896983233412452465597733540302986, 1826229226427436667737158666125185869230544715877472451668377408707447317837, 36893488147419103232, 1828749601189731848502784414445244079044081397364027295494129199244422079973, 2, 482148859801725464274198147480840119334382080162606228723774290742111978842, 612894521673437626, 2683371759385160193113320486462222345762988550374785480657847388788255314142, 998744062929748, 1855966213384827733333454489642968182168710763334196511870839563344445384880, 10, 69036229591699849960932814930274583219423937176044869651883289380133062597, 291559242712507997466150036205813903606, 217220084042943934043295412551804878100253593337652225984163585784397531836, 1034919286844818273830, 482148859801725464274198147480840119334382080162606228723774290742111978842, 30914733386, 731009553143347574080655238666149040102619103132239422267183761870156583437, 35085637364168521927112976810426127074, 731009553143347574080655238666149040102619103132239422267183761870156583438, 144, 839644019474752947990288455750629022716268474098174357453177484270147032426, 0, 860370950108688216340004790080337058268427944294306403669698046952904826247, 32308997165, 1446821757104641781948757487033289620065803269090287896475220893178955257282, 1675135295, 1674354004849578474235843626904129035243166212275069178680248604364187730817, 32031922302, 2318736887331368761321803003856896048755498951048464294335952677135793010967, 66736355, 1902702272434356176466092190903730707937273308906051828801598663251231306044, 1291272085159668613120, 1909791176206535873134562938521486150083372703881344711394713954004480409152, 55340232221128654848, 1944566983419877613429682445772352016191015689378400805984569188703236760286, 166020696663385964544, 1976116259487849312492355695320380942153209908997880779234707344294669942230, 4, 155082539558689579094930820457537605560250202889383976768599028600060638458, 4034151758041812, 860370950108688216340004790080337058268427944294306403669698046952904826247, 2620427745033575579, 1450773348621475531073306325960351147940191236122574546481360435247650274113, 1675135295, 1674354004849578474235843626904129035243166212275069178680248604364187730817, 4052445833, 2004501811751370347717554541142847437344309232513199603432116583841749651103, 55340232221128654848, 2023004096725207138621228149771708327697564133947905867351884745900970405767, 2, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 1563672576422918850564506150092036819309968525068313502302455251173901598124, 3, 2035667047866699196661947584612496474703373655968658687291295683808470806984, 1, 1368013104347499632087487018799173908456575191123111712176913075222512579618, 1, 2057073214889863363777487433456553699651303049993705537333707275782065861943, 166020696663385964544, 2071150626917996272516703229907762252522532826781142604335417921768477640475, 36893488147419103234, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 3488266005132073495512448370882784252631695503878287808171796944525090085737, 2087021424722619777119509474943472645767659996348769578120564519014510906823, 169, 20527485994998481825315931930673309100204327371728447667473292907924912833, 102575496126010397, 83215430144734353010095605222602171620613817716832768320638168185561304714, 3765886015861278, 95091748135778287415092573640325580026507527624035735091369639319209645853, 41608489729955582, 111585174037950572296274019774807127016536525272068684358715307165187606053, 11241309848580589, 116586868613082239461416929065540291577142617953200454186307171117238542683, 1894161609902556, 117206225916489489542462336236555769130467389386692633894387104355855545187, 92594220814968602, 202203955841975646987907273559377371226010461404614827717133706273925486065, 11452588180909011, 240681039112004880152296166367849408306877298070207790453079763728062705882, 355213244866491, 254049929352480513432139839093779914688270567265616877154326431871468825900, 19870517728288433, 341323429175634778201578567069948477997512991481510774309087626299842682687, 9298784797560969, 375343322848923922750489191773623630471234266505436415560883242915863179591, 551971917018205, 402203818018003161230395989487321866767371283189591635162574585819009405729, 88354685966543925908, 438836933922802073568450887336317078118375155176177415102691443513792938719, 40543034421790544, 482148859801725464274198147480840119334382080162606228723774290742111978842, 3035942860846066146374, 498376797932280627060681236687010789895287158877723079076778303408234325704, 1950202645800971, 505255763503750398660442812434228789216700679383365681459742526907419054197, 1106079219717874084, 522700484882935955960429445779836898799730163513125259189199836757362623181, 4901222181855245, 563661269071668530077849303126964776256607411866667013094823811909575786953, 765927987952455, 572255958978212136617472676360077808086587166423179989874487044904201184965, 16018877153, 592310430789162568187167676251085938223408698538216170267900227764372051550, 1418202004694540, 594268847481483571799933668405156250537234835763124834719785371705065149336, 282457187742349, 615312687926690651354800169557893472769580262248963854026613039833139483962, 340282366920938463463374307431868211455, 615312687926690651354800169557893472769580262248963854026613039833139483963, 340282366920938463463374607431768211455, 629975375253163419978544727792709293231814710611735898556296801232668293350, 699670401057021, 634567808328548191163335821397342811736346697779633451025679071466303071978, 9340655494821883, 665927370970143308412815399481141783679671644777725913584220029099622160653, 18329565298656493, 687394142292878179295789019698948265626397450131913140501907328584769697162, 340282366920938463463374607431768211455, 687394142292878179295789019698948265626397450131913140501907328584769697163, 340282366920938463463374607431768211455, 703043690881428653392490870022855068026677259303320057011318361795336484333, 518689339696864, 744140336472832833558845351659300933734309338487242991799925817109512728935, 71517324414736123, 756882510187293771442192579161244088889985821824232524415913179137398639797, 18216948302911753, 769440702542559774847071240116933810068686993199849381334986534239699951171, 90497505100432348, 792985955619778553349299217630311706976597674370358120354024088100275525617, 61663248736486095935, 805994341226541554265899298276362056713672765046421987754456350341045577928, 9283074643338706, 838344631581707069391014439689326622354705903772311779124175544517472023657, 16027963604654063, 839644019474752947990288455750629022716268474098174357453177484270147032426, 2630345984407520, 844815367873081170119795239947305234052698138210659812621144301898748854548, 70133965635636041, 858950810700170454727169588665995438850817753084800912286716879112149357010, 730809994181981, 873989730059252117895014950291175233257351582774453352630938036849172483783, 29421177047416136, 898486893266419073562902239505676668221146246932724362538531597331446748369, 6788180272423929, 921554531578100516798003264848437329943318129458928794451820220225802746579, 100000000000000000, 938896896011866530825457681547235903385722474561828025919025020475832738458, 740329270748103, 970762783562956427761663596993836166234174532885857602207080972527477469869, 94397505100432348, 999978375784550883232112291330793855006350387807326481206486855421526737110, 8420936216618428, 1011040165992272045398273371648645071031962355120471193044549808358111272242, 32045028835030835, 1012017223219996376615012428410508071438405993273489989354880695838363398488, 107356101891501814, 1049634285668297043026626411036372595591598031514631127083900876973224495857, 97233834958471348, 1089888654589098163640538832784380862053019864475877303201735803590195020735, 444204860659223, 1135582211956912076477978528468550364307307544258172608377315653067875163739, 99397505100432348, 1140026259436812476849205929658484897463415849968827178062772671943253996102, 9039666285060595, 1158506263198025579947292573417913327397976955016325730985579388643976390986, 482169071348928, 1159851786387384975698748855247167392062054978657053920695080265923342106578, 210985077068874, 1216870908333219866436330141390514259229384846117916197021220072648215289983, 1139567123284434987, 1228605723133264712627968688078490973494439041643150425842619474558036735871, 14000000000000000, 1259361077121816271859247023653075722604821884772582172093947487598560022434, 9643221008390368, 1262142544072403169004616650956660202752446487376241797481739831321205773691, 6008041972268491, 1271879468959372533107343419586230286208558490848309175391745658932506903758, 7688900989, 1289305421365178318375640465329942512989856254914447914545377247665545425385, 157765027863191044, 1292960740803179642455445211664953166538765846522192584185284048139446628977, 104567301179448008, 1297009568309657716507005332419586754085562729264730251308798713180571545372, 654790182835039, 1297800433727403036832250193958201505576136382242388485201190188528376877880, 19692250189839466, 1318066511086060165471782989311926031349917195954432778174819073553408468332, 206214408541280, 1328458103202756486685969798549837309785141042339637400964023978465116177572, 774131420352524, 1346885775570936540373739219455654934847127683917832376212755216270183979591, 8109048048918029, 1383558234063281367354372624132041445377818797307039949509624937003092758550, 340282366920938463463374052431768211455, 1383558234063281367354372624132041445377818797307039949509624937003092758551, 340282366920938463463374607431768211455, 1390007688346656580269316539639480397671348660659152121103121485233549961901, 231816578446918, 1420826719203708106564951466722319412400643987412157884327466085361033382809, 99097505100432348, 1422495607494965152616518702125957240332026951902589593433080385526645742710, 81397505100432348, 1427789583940248137954440635220583242670485592020764591234814725534384206048, 197634409743563, 1447110725312725006945928033456799225550225394453300978975635707625706613751, 83789031459034324, 1454267477097735643702942080333789560398299687143335901421634000699921674754, 690061917018205, 1463061036862363309593635243042152848577788995399433484559282192396299409304, 1000179966803537136, 1464324040220974540041554204938794160595435560636770424971414250668540801974, 95911376280574070, 1473612029912202955580591412439177016004497070132534669904328599822676034927, 72497505100432348, 1486339783524864139556304938852631394809034431678619138319688698572941753715, 8448491069448431, 1490221367477955483461167655609691513482655110807178542980894387758548688436, 81097505100432348, 1518786662809535025666407252440251829065784222381277142484438569379362046850, 3153338857062507258, 1545301942381510391433543834966043669928879243574337238759627986756846292814, 35574737799319, 1551295464932725588329544881955942548326391922317197183991608023295022187629, 9833020661001491974, 1555334074829537087265841505081981429127688897983797843810863266149349559527, 1783174523759666, 1565556887894207813874022062334458218606139851861627453864456953377852380169, 18351906746877340, 1605727959280118000795412375380669230989554655590843032618805700450950667757, 72597505100432348, 1620447814869496820671159705905901368161484731778447029995413522282557914915, 592252699069799, 1652239641646305300575579602320743469502857623546232173982230148497915557877, 7471788252665604298, 1695543484041074927383271669306483408845832667367255403715829559245999896967, 285215077068874, 1707820387638256948741575843754697498861222584678859592834431105400173155114, 18860371215591307, 1725530186915088663298539871806879480763778619960336182290457869039175698385, 99297505100432348, 1732870997227425624061388892305353261829863436860145002433361380054922248958, 340282366920938463463374607431768211455, 1732870997227425624061388892305353261829863436860145002433361380054922248959, 340282366920938463463374607431768211455, 1755797680330906688115828218432377531804829176191099601919180376597575131672, 18432764883778904, 1759973139056459124851416142355108991588073879049133495576203034992725794887, 90097505100432348, 1800183722764181227502868106633694203144823718132108585348550631233277044789, 10403631450144831, 1852784987136536257233385719122720308155694904866451774707504036560287052022, 12172961061, 1864923657351619960499956310624718556114673260399109615051722543338051567175, 6079268725509098, 1871052275816569845269717093342224828970863799268234141653023465076814904556, 5786767847838103, 1883298827310844700953340686359971430518675780344837714281928953028585266198, 587684182557393, 1896728732175374219907647558566848626893334836778048575402594591509914337867, 340282366920938463463374607431768211455, 1896728732175374219907647558566848626893334836778048575402594591509914337868, 340282366920938463463374607431768211455, 1910690369707031992194278701368671497288246456132740361098929126657866457262, 12393350676010816, 1942267614771150831825221470396726148167708341393962344455852768081211936302, 18026552654926365, 1983943096737775125713381764418533635245368036214982165848404099613623347361, 2243370664, 1999458435590834784866209593259434416420408413325179105181875495773409890313, 593560182835039, 2005351425387180437257027806828088536078923449356279354220286578606870865377, 679153393252775, 2046493246628212896969038919290594351832633981151425804162003234918512534350, 11709327747520578, 2055541762176192753281069085859413858478238721862060851707067510672032587566, 11268046955407238, 2068531477574415711045586815537975881870912438584643746658418379723986546746, 3471216012790820, 2075888593549013519219770263069767667060633584437114998459002985611771316512, 17859855998075781, 2082332565896149669096986593843450666768575991251296089487018576539152871154, 110103889216294580713, 2104661023471301459916233744571877616571155721882724332310724019614343216270, 18354249859500559, 2109895075998154347912734724214053662672952430586634509994236792015799104546, 74869662172790148285, 2169219090179778175271091972576211360065430178478164354937236682271340265146, 41483794547525154, 2172706235455433255963000085588659762216634494149830261002092962621305760629, 14100428984468302, 2200496011207443660193365946786086645138483228240428318751220583077861360083, 72297505100432348, 2204332095310460727313699786650257922189070654247885897179930829920220516145, 99534048359075125, 2236956452854248432170588579634789715239213124748638400721762760088132220115, 111254986044610957, 2250799176794893603250952736975073936013942012822654260071062623963153975156, 2923533209830066, 2263973051557236974215185754508942504115262658305452173560128877459893785643, 340282366920938463463355507431768211455, 2289798733439004018889876733074958615681429702317086309105618856867885709368, 32848872426109853, 2319316401250607790083147985557327116237638355442508607204685690533302230253, 899328276178268, 2329150157093819515794001862576903513777303682312567184307967032873744784350, 307357187742349, 2361143806085476340278691659832619391022992620544253717264234978528174840268, 557293322833609952, 2365190573871897484065688503255048418364584547793549208821911413312693268694, 43702083161062579, 2402804927516903185152065874377900162750844523137253147412998178616891738554, 10677259549936560, 2428167367640860515886262480268919510473151682727434046875676700231085696410, 340282366920938463463353807431768211455, 2485727021581385827219866586563430985568348430033022264332225076951862501447, 671633361240803, 2548990733893683647729092059302937144040933722389728393563386601233604685211, 340282366920938463463374607431768211455, 2548990733893683647729092059302937144040933722389728393563386601233604685212, 340282366920938463463374607431768211455, 2556603058703478927801345072762006463996109149135606342459463770768855044205, 20572381393402479, 2565097697592094504723288057782158705681008038892482500908452915302851435044, 39990000000000065, 2582171159386751046008732422660432812647054363671900811764914648397805553808, 81497505100432348, 2640379873274419835174355410957061826935640282808673170542498782427023748051, 9426654901288370, 2641538092695336043044912180564747680256707773417155898198092872183868136701, 18260521147317977, 2681436494055932254338276771708071773528655340323516527829022174692611112220, 602514087617850, 2683371759385160193113320486462222345762988550374785480657847388788255314142, 86216012031726547, 2702379909715319635040646486027522623089903079619473179964491720386558404836, 81497505100432348, 2704762506411853702489773421749434322725408716085627136554974245720964452337, 2620427745033575579, 2815398717541691634583149973413455080555529973032457580388497305871485016659, 340282366920938463463374607431768211455, 2815398717541691634583149973413455080555529973032457580388497305871485016660, 340282366920938463463374607431768211455, 2820502469531042415037133473916691558874615080735510329531761784675892352872, 10333119865419803, 2856460753273697822462521804136684165219559403228641159098265901770569419437, 24098978168853531, 2863600889375983197652061222473432638304276235937455103390800264995694842203, 9084005668381258, 2901439286949457536207724674688706993652613453857155842203731396411261948541, 8700301848029339, 2910226367090293127867542534019592609737389495701391035491140450053391503534, 10184883903649803, 2914061488540152013390650691773308712325619029029835866734018700737655718194, 99197505100432348, 2935372585683074697552544410030432374563925489550061314061328841969524909783, 1098937701113829228, 2994750429346461186622607491701030386351838013846601830337280569388766852309, 17001337037584908787, 3028250121258252678464662732920060752354490041473372085811087731404272941237, 175143484836285, 3061135972490997925408180826648399505748758828648573503315596098970656529595, 340282366920938463463360507431768211455, 3073758703811986561199832841981929801658513479173619849133773450897059497629, 7141128237181271020, 3116915285914451831258627046821422789977887931947512439772928811655847033951, 26538514096844989, 3182374323295531432594335367298891754564210296964313288884582728751760261837, 489547426312523, 3208598958414865803243608710417976200281646881088950932771201170580629772549, 35913472847257667, 3223076623304179177322483283149094568936556902779870855890467634210346240378, 18315421018802753, 3226119828346057359593535472789676923544712072807875585017151292496252017565, 24010787859368282, 3226962576671663624760335828676511081285910036704553448281760982635247920226, 16343858727155567, 3235849680901171569690531712503405340941491228821309495108222223465442411312, 47350929004387477, 3240280448012719348074312557905435593227816451325664504423079874769921014737, 79578807017261520134, 3293689241287263262287657297296947581665511253628386168728012602509453399941, 18275819281950344, 3419720520490446838226008556840511469405490970935860148285935684991449801715, 16882473498274143, 3439949844214170284785106469733117258481193699427578647939898210861748163595, 1536681988447367, 3442673316313693424679508278851323125167963112467297178458381340078363166719, 11878373969934309, 3454941046901026184827561676578111784559237275840149365175377960117557664022, 21358564459519513, 3468255152800955443918002126896391100913456157866279506874670759864898128986, 72097505100432348, 3487545048517408485432067025823217570734082545643507762046879156283511711784, 340282366920938463463356608431768211455, 3509078836260409390733816800968464999859477169203990954831092564789285858586, 4700762106206935, 3524827330724260656834305052214859390375157983857964966326885400547199733184, 766010144349479, 3583342488699235288306360003314424207480920462375300674788359063194207874403, 12436158136229655, 3594911950075413202909411333768649599144857811523070664718087981477686939572, 1025060539540367, 2089613358736899809153349049283195088649438873256312981125293147771385732758, 36893488147419103234, 440168123437330633874675177419976431975019168943402176995739208264668116428, 1449178161945088530446351771646113898511736767359683664273252560520029776866, 814079005391940027390129862062157285361348684878695833898695909074510122245, 2759190262452030948152227390793752705845051087541728961583333916500390248240, 2095586897556008607217215919371076200833690407339730209881396645878550057530, 55340232221128654848, 2097924334809010151269254159849064348527709275410586009206231441117935140894, 57, 78279128303980439615236954706188766412201646084108115656339249199495499676, 25742, 151774566114132275667832966241362850934420610819445300571336848372055733243, 1, 156020519873392190062650493761117921307956517528989268644320246749917989141, 1, 179854490169760720288084213108180886445043182273615769273963699245359042871, 1, 222970791532821007640778808984434726114716961612888107013995691640917727337, 1, 262074682555485587549835993445961870568042614328911765107773541265324981089, 186294699441980128189385197750907974386824324115046498921384174082736994676, 262074682555485587549835993445961870568042614328911765107773541265324981090, 38293395023114124770569744539540892188168328384558133, 332001411529527545025016221823687074082485916303646212469607358223870831648, 1, 334476078769456723482386296815243635238136561215084265568152486625686292130, 835859446422886298983009101778201633586300224233456944035663015328999179212, 378843350773737237405979057107974503047910140705929613335712476268330693262, 1, 396147128653255984143191403913298960481086460293239609114044115494249799970, 3268393797694830563265131788163365494370425713742504962563122924266061365826, 456816706447682232242160676110760911738906844281251104042157212528609834051, 3268393797694830563265131788163365494370425713742504962563122924266061365826, 594160255084073301144825172327641646064249823537014546477941897636696743099, 25741, 721149950211369396504776337581145964824767937950423466687237793325704735396, 25740, 866475154396067576318051750528806269017337802803074476993297958933773236981, 1, 868990549137675919591457091069004175934202326960184345757831390748687085723, 1189782730929243772550638278980638691834481872924675658056914294037055635774, 998292118661977473705267530299976585478599829842112654250627653543301785766, 1, 1065838035856219044672384684026320416579984450803165304853316266121446590189, 25743, 1079213035913931897056332105495109524451856058442083615283114591834346453995, 25743, 1170443518724888812819257641867563915752002540775460375864586883109854044243, 25741, 1222248140582846860335869746914182048813826962420185989020815989029408998775, 2473560268622079871069975413601953819193003676720499643229659866471094746820, 1224676248649925431528976404754872336520502134440910772248444348409312495974, 0, 1340481378930641882065565413698715460562023689770323953136922820741316143251, 1, 1448906481370259437556917819628743146333968472452389552722645850072613393920, 2309177269405372521016373007196699654991947548013647147360288346467747533839, 1539073555314991416042870767640240219006001459832007883193122260600921422977, 186294699441980128189380333485470230889289279594181380979315956845936278084, 1539073555314991416042870767640240219006001459832007883193122260600921422978, 40931474003998991513517954359296974472397205788915287, 1642207716830042398217202050504545639252637363558175362273331110870431208759, 1, 1666563568843566935081764627977251426083466793900397785041657116492126074561, 25610, 1704942082283480639831557951645043252739665978067802372127060291784787728258, 2, 1837334120760242379947387161917209555633346975641161800996286580941191311524, 25742], z=1673050563476157841851208064462704164463550071951048203409288457740950829739, alpha=3467783222540117367118463014936358068947501393869755255382755440491991259260, prime=3618502788666131213697322783095070105623107215331596699973092056135872020481 ) => ( factHash=E802B39A71975D255CED9D5A1A785D0B463333C3839167B48F564A54DF57E1CC, memoryHash=27581677632547362456920096834755587882906677197448392589145018166508892074737, prod=383608669892343447092948446076001399766915870491317641222003456162060717614 )
{"FactRegistry.sol":{"content":"/*\n  Copyright 2019-2022 StarkWare Industries Ltd.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\").\n  You may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n  https://www.starkware.co/open-source-license/\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions\n  and limitations under the License.\n*/\n// SPDX-License-Identifier: Apache-2.0.\npragma solidity ^0.6.12;\n\nimport \"IQueryableFactRegistry.sol\";\n\ncontract FactRegistry is IQueryableFactRegistry {\n    // Mapping: fact hash -\u003e true.\n    mapping(bytes32 =\u003e bool) private verifiedFact;\n\n    // Indicates whether the Fact Registry has at least one fact registered.\n    bool anyFactRegistered = false;\n\n    /*\n      Checks if a fact has been verified.\n    */\n    function isValid(bytes32 fact) external view override returns (bool) {\n        return _factCheck(fact);\n    }\n\n    /*\n      This is an internal method to check if the fact is already registered.\n      In current implementation of FactRegistry it\u0027s identical to isValid().\n      But the check is against the local fact registry,\n      So for a derived referral fact registry, it\u0027s not the same.\n    */\n    function _factCheck(bytes32 fact) internal view returns (bool) {\n        return verifiedFact[fact];\n    }\n\n    function registerFact(bytes32 factHash) internal {\n        // This function stores the fact hash in the mapping.\n        verifiedFact[factHash] = true;\n\n        // Mark first time off.\n        if (!anyFactRegistered) {\n            anyFactRegistered = true;\n        }\n    }\n\n    /*\n      Indicates whether at least one fact was registered.\n    */\n    function hasRegisteredFact() external view override returns (bool) {\n        return anyFactRegistered;\n    }\n}\n"},"IFactRegistry.sol":{"content":"/*\n  Copyright 2019-2022 StarkWare Industries Ltd.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\").\n  You may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n  https://www.starkware.co/open-source-license/\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions\n  and limitations under the License.\n*/\n// SPDX-License-Identifier: Apache-2.0.\npragma solidity ^0.6.12;\n\n/*\n  The Fact Registry design pattern is a way to separate cryptographic verification from the\n  business logic of the contract flow.\n\n  A fact registry holds a hash table of verified \"facts\" which are represented by a hash of claims\n  that the registry hash check and found valid. This table may be queried by accessing the\n  isValid() function of the registry with a given hash.\n\n  In addition, each fact registry exposes a registry specific function for submitting new claims\n  together with their proofs. The information submitted varies from one registry to the other\n  depending of the type of fact requiring verification.\n\n  For further reading on the Fact Registry design pattern see this\n  `StarkWare blog post \u003chttps://medium.com/starkware/the-fact-registry-a64aafb598b6\u003e`_.\n*/\ninterface IFactRegistry {\n    /*\n      Returns true if the given fact was previously registered in the contract.\n    */\n    function isValid(bytes32 fact) external view returns (bool);\n}\n"},"IQueryableFactRegistry.sol":{"content":"/*\n  Copyright 2019-2022 StarkWare Industries Ltd.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\").\n  You may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n  https://www.starkware.co/open-source-license/\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions\n  and limitations under the License.\n*/\n// SPDX-License-Identifier: Apache-2.0.\npragma solidity ^0.6.12;\n\nimport \"IFactRegistry.sol\";\n\n/*\n  Extends the IFactRegistry interface with a query method that indicates\n  whether the fact registry has successfully registered any fact or is still empty of such facts.\n*/\ninterface IQueryableFactRegistry is IFactRegistry {\n    /*\n      Returns true if at least one fact has been registered.\n    */\n    function hasRegisteredFact() external view returns (bool);\n}\n"},"MemoryPageFactRegistry.sol":{"content":"/*\n  Copyright 2019-2022 StarkWare Industries Ltd.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\").\n  You may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n  https://www.starkware.co/open-source-license/\n\n  Unless required by applicable law or agreed to in writing,\n  software distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions\n  and limitations under the License.\n*/\n// SPDX-License-Identifier: Apache-2.0.\npragma solidity ^0.6.12;\n\nimport \"FactRegistry.sol\";\n\ncontract MemoryPageFactRegistryConstants {\n    // A page based on a list of pairs (address, value).\n    // In this case, memoryHash = hash(address, value, address, value, address, value, ...).\n    uint256 internal constant REGULAR_PAGE = 0;\n    // A page based on adjacent memory cells, starting from a given address.\n    // In this case, memoryHash = hash(value, value, value, ...).\n    uint256 internal constant CONTINUOUS_PAGE = 1;\n}\n\n/*\n  A fact registry for the claim:\n    I know n pairs (addr, value) for which the hash of the pairs is memoryHash, and the cumulative\n    product: \\prod_i( z - (addr_i + alpha * value_i) ) is prod.\n  The exact format of the hash depends on the type of the page\n  (see MemoryPageFactRegistryConstants).\n  The fact consists of (pageType, prime, n, z, alpha, prod, memoryHash, address).\n  Note that address is only available for CONTINUOUS_PAGE, and otherwise it is 0.\n*/\ncontract MemoryPageFactRegistry is FactRegistry, MemoryPageFactRegistryConstants {\n    event LogMemoryPageFactRegular(bytes32 factHash, uint256 memoryHash, uint256 prod);\n    event LogMemoryPageFactContinuous(bytes32 factHash, uint256 memoryHash, uint256 prod);\n\n    /*\n      Registers a fact based of the given memory (address, value) pairs (REGULAR_PAGE).\n    */\n    function registerRegularMemoryPage(\n        uint256[] calldata memoryPairs,\n        uint256 z,\n        uint256 alpha,\n        uint256 prime\n    )\n        external\n        returns (\n            bytes32 factHash,\n            uint256 memoryHash,\n            uint256 prod\n        )\n    {\n        require(memoryPairs.length \u003c 2**20, \"Too many memory values.\");\n        require(memoryPairs.length % 2 == 0, \"Size of memoryPairs must be even.\");\n        require(z \u003c prime, \"Invalid value of z.\");\n        require(alpha \u003c prime, \"Invalid value of alpha.\");\n        (factHash, memoryHash, prod) = computeFactHash(memoryPairs, z, alpha, prime);\n        emit LogMemoryPageFactRegular(factHash, memoryHash, prod);\n\n        registerFact(factHash);\n    }\n\n    function computeFactHash(\n        uint256[] memory memoryPairs,\n        uint256 z,\n        uint256 alpha,\n        uint256 prime\n    )\n        private\n        pure\n        returns (\n            bytes32 factHash,\n            uint256 memoryHash,\n            uint256 prod\n        )\n    {\n        uint256 memorySize = memoryPairs.length / 2; // NOLINT: divide-before-multiply.\n\n        prod = 1;\n\n        assembly {\n            let memoryPtr := add(memoryPairs, 0x20)\n\n            // Each value of memoryPairs is a pair: (address, value).\n            let lastPtr := add(memoryPtr, mul(memorySize, 0x40))\n            for {\n                let ptr := memoryPtr\n            } lt(ptr, lastPtr) {\n                ptr := add(ptr, 0x40)\n            } {\n                // Compute address + alpha * value.\n                let address_value_lin_comb := addmod(\n                    // address=\n                    mload(ptr),\n                    mulmod(\n                        // value=\n                        mload(add(ptr, 0x20)),\n                        alpha,\n                        prime\n                    ),\n                    prime\n                )\n                prod := mulmod(prod, add(z, sub(prime, address_value_lin_comb)), prime)\n            }\n\n            memoryHash := keccak256(\n                memoryPtr,\n                mul(\n                    // 0x20 * 2.\n                    0x40,\n                    memorySize\n                )\n            )\n        }\n\n        factHash = keccak256(\n            abi.encodePacked(\n                REGULAR_PAGE,\n                prime,\n                memorySize,\n                z,\n                alpha,\n                prod,\n                memoryHash,\n                uint256(0)\n            )\n        );\n    }\n\n    /*\n      Registers a fact based on the given values, assuming continuous addresses.\n      values should be [value at startAddr, value at (startAddr + 1), ...].\n    */\n    function registerContinuousMemoryPage(\n        // NOLINT: external-function.\n        uint256 startAddr,\n        uint256[] memory values,\n        uint256 z,\n        uint256 alpha,\n        uint256 prime\n    )\n        public\n        returns (\n            bytes32 factHash,\n            uint256 memoryHash,\n            uint256 prod\n        )\n    {\n        require(values.length \u003c 2**20, \"Too many memory values.\");\n        require(prime \u003c 2**254, \"prime is too big for the optimizations in this function.\");\n        require(z \u003c prime, \"Invalid value of z.\");\n        require(alpha \u003c prime, \"Invalid value of alpha.\");\n        require(startAddr \u003c 2**64 \u0026\u0026 startAddr \u003c prime, \"Invalid value of startAddr.\");\n\n        uint256 nValues = values.length;\n\n        assembly {\n            // Initialize prod to 1.\n            prod := 1\n            // Initialize valuesPtr to point to the first value in the array.\n            let valuesPtr := add(values, 0x20)\n\n            let minus_z := mod(sub(prime, z), prime)\n\n            // Start by processing full batches of 8 cells, addr represents the last address in each\n            // batch.\n            let addr := add(startAddr, 7)\n            let lastAddr := add(startAddr, nValues)\n            for {\n\n            } lt(addr, lastAddr) {\n                addr := add(addr, 8)\n            } {\n                // Compute the product of (lin_comb - z) instead of (z - lin_comb), since we\u0027re\n                // doing an even number of iterations, the result is the same.\n                prod := mulmod(\n                    prod,\n                    mulmod(\n                        add(add(sub(addr, 7), mulmod(mload(valuesPtr), alpha, prime)), minus_z),\n                        add(\n                            add(sub(addr, 6), mulmod(mload(add(valuesPtr, 0x20)), alpha, prime)),\n                            minus_z\n                        ),\n                        prime\n                    ),\n                    prime\n                )\n\n                prod := mulmod(\n                    prod,\n                    mulmod(\n                        add(\n                            add(sub(addr, 5), mulmod(mload(add(valuesPtr, 0x40)), alpha, prime)),\n                            minus_z\n                        ),\n                        add(\n                            add(sub(addr, 4), mulmod(mload(add(valuesPtr, 0x60)), alpha, prime)),\n                            minus_z\n                        ),\n                        prime\n                    ),\n                    prime\n                )\n\n                prod := mulmod(\n                    prod,\n                    mulmod(\n                        add(\n                            add(sub(addr, 3), mulmod(mload(add(valuesPtr, 0x80)), alpha, prime)),\n                            minus_z\n                        ),\n                        add(\n                            add(sub(addr, 2), mulmod(mload(add(valuesPtr, 0xa0)), alpha, prime)),\n                            minus_z\n                        ),\n                        prime\n                    ),\n                    prime\n                )\n\n                prod := mulmod(\n                    prod,\n                    mulmod(\n                        add(\n                            add(sub(addr, 1), mulmod(mload(add(valuesPtr, 0xc0)), alpha, prime)),\n                            minus_z\n                        ),\n                        add(add(addr, mulmod(mload(add(valuesPtr, 0xe0)), alpha, prime)), minus_z),\n                        prime\n                    ),\n                    prime\n                )\n\n                valuesPtr := add(valuesPtr, 0x100)\n            }\n\n            // Handle leftover.\n            // Translate addr to the beginning of the last incomplete batch.\n            addr := sub(addr, 7)\n            for {\n\n            } lt(addr, lastAddr) {\n                addr := add(addr, 1)\n            } {\n                let address_value_lin_comb := addmod(\n                    addr,\n                    mulmod(mload(valuesPtr), alpha, prime),\n                    prime\n                )\n                prod := mulmod(prod, add(z, sub(prime, address_value_lin_comb)), prime)\n                valuesPtr := add(valuesPtr, 0x20)\n            }\n\n            memoryHash := keccak256(add(values, 0x20), mul(0x20, nValues))\n        }\n\n        factHash = keccak256(\n            abi.encodePacked(CONTINUOUS_PAGE, prime, nValues, z, alpha, prod, memoryHash, startAddr)\n        );\n\n        emit LogMemoryPageFactContinuous(factHash, memoryHash, prod);\n\n        registerFact(factHash);\n    }\n}\n"}}