# W%w      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv None"#%27>HMSVX_W5hevm{This is an easy way to force full evaluation of a value inside of the IO monad, being essentially just the composition of evaluate and force.None"#%27>HMSVX_W?43210/.-,+*)('&%$#"!  56789:;<=>??43210/.-,+*)('&%$#"!  56789:;<=>?None"#%27>HMSVX_mDAhevmA renders a w as a multi-line xA complete with addressing, hex digits, and ASCII representation. Sample output .Length: 100 (0x64) bytes 0000: 4b c1 ad 8a 5b 47 d7 57 48 64 e7 cc 5e b5 2f 6e K...[G.WHd..^./n 0010: c5 b3 a4 73 44 3b 97 53 99 2d 54 e7 1b 2f 91 12 ...sD;.S.-T../.. 0020: c8 1a ff c4 3b 2b 72 ea 97 e2 9f e2 93 ad 23 79 ....;+r.......#y 0030: e8 0f 08 54 02 14 fa 09 f0 2d 34 c9 08 6b e1 64 ...T.....-4..k.d 0040: d1 c5 98 7e d6 a1 98 e2 97 da 46 68 4e 60 11 15 ...~......FhN`.. 0050: d8 32 c6 0b 70 f5 2e 76 7f 8d f2 3b ed de 90 c6 .2..p..v...;.... 0060: 93 12 9c e1 ....yhevmya displays a number in hexidecimal and pads the number with 0 so that it has a minimum length of w.BhevmB converts a w to a x- showing the octets grouped in 32-bit words. Sample output 4b c1 ad 8a 5b 47 d7 57zhevmz returns {f for non-control ascii characters. These characters will all fit in a single character when rendered.|hevm|( breaks up a list into sublists of size n&. The last group may be smaller than n elements. When n8 less not positive the list is returned as one sublist.ABABNone"#%27>HMSVX_r}hevm8Opaque representation of the C library's context struct.Chevm5Run a given precompiled contract using the C library.Chevm&The number of the precompiled contracthevmThe input bufferhevmThe desired output sizehevmHopefully, the output bufferCCNone"#%27>HMSVX_vDDhevmFTurn a list state value into a widget given an item drawing function.Dhevm1Rendering function, True for the selected elementhevmWhether the list has focushevmThe List to be renderedhevmrendered widgetDEDENone"#%.278=>?HMSVX_ Hhevm7Conversion from a fixed-sized BV to a sized bit-vector.IhevmGConvert a fixed-sized bit-vector to the corresponding sized bit-vector,Jhevm'convert between (WordN 256) and Word256Khevm7Conversion from a sized BV to a fixed-sized bit-vector.LhevmdConvert a sized bit-vector to the corresponding fixed-sized bit-vector, for instance 'SWord 16' to ~ . See also .Mhevm\Capture the correspondence between sized and fixed-sized BVs (This is blatant copypasta of ; from sbv, which just happens to be defined up to 64 bits)ThevmThis type can give insight into the provenance of a term which is useful, both for the aesthetic purpose of printing terms in a richer way, but also do optimizations on the AST instead of letting the SMT solver do all the heavy lifting.nhevmZSymbolic words of 256 bits, possibly annotated with additional "insightful" informationhevm`Instead of supporting a Mergeable instance directly, we use one which carries the Whiff around:hevmRight padding / truncatinghevm.Operations over buffers (concrete or symbolic)DA buffer is a list of bytes. For concrete execution, this is simply wG. In symbolic settings, it is a list of symbolic bitvectors of size 8.hevmlCustom instances for SymWord, many of which have direct analogues for concrete words defined in Concrete.hs_FGHIJKLMNOPQRSTkjia^]\[cd`_hUbWVgXfeZYmlnopqrstuvxwyz{|}~_{|yzvxwturs}pqno~Tkjia^]\[cd`_hUbWVgXfeZYmlQRSNOPMKLJHIFGNone"#%27>HMSVX_ !"#$%& !"#$%&None"#%247=>?HMSVX_;hevmThe  function for our desired monadhevmThe  function for the same monadhevmThe puts and gets to execute&)*+,./-0123456789:;<=>?@ABCDEFGHIJKLMN&678459:;3012,./-<=>+?@ABCDEFGHIJ*K)LMN None"#%27>HMSVX_OXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~OXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None"#%27=>?HMSVX_m None"#$%.27>HMSVX_khevmWNote: the (force*) functions are crude and in general, the continuation passing style  forceConcrete[ alternatives should be prefered for better error handling when used during EVM executionhevmSigned less thanhevmSigned greater thanhevm6Read 32 bytes from index from a bounded list of bytes.hevmXAlthough we'd like to define this directly as an uninterpreted function, we cannot because [a] is not a symbolic type. We must convert the list into a suitable symbolic type first. The only important property of this conversion is that it is injective. We embedd the bytestring as a pair of symbolic integers, this is a fairly easy solution.hevmVReconstruct the smt/sbv value from a whiff Should satisfy (rawVal x .== whiffValue x)hevm1Special cases that have proven useful in practice** None"#%.27>HMSVX_m^hevmPretty-print some .7     7      None"#%.279>HMSVX_mhevmWhen doing CREATE and passing constructor arguments, Solidity loads the argument data via the creation bytecode, since there is no "calldata" for CREATE.This interferes with our ability to look up the current contract by codehash, so we must somehow strip away this extra suffix. Luckily we can detect the end of the actual bytecode by looking for the "metadata hash". (Not 100% correct, but works in practice.)Actually, we strip away the entire BZZR suffix too, because as long as the codehash matches otherwise, we don't care if there is some difference there.hevmEvery node in the AST has an ID, and other nodes reference those IDs. This function recurses through the tree looking for objects with the "id" key and makes a big map from ID to value.U6789:=;<>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcU@ABCOPQRSTUVWXYZ[_`abcDEFGH9:=;<>?678IJKLMN\]^None"#%&',.127=>?HMSUVX_m/hevmData about the blockhevmVarious environmental datahevmWhen doing symbolic execution, we have three different ways to model the storage of contracts. This determines not only the initial contract storage model but also how RPC or state fetched contracts will be modeled.hevmUses o Storage. Reading / Writing from abstract locations causes a runtime failure. Can be nicely combined with RPC.hevmUses i Storage. Reading / Writing never reaches RPC, but always done using an SMT array with no default value.hevmUses o Storage. Reading / Writing never reaches RPC, but always done using an SMT array with 0 as the default value.hevmThe state of a contracthevmiA contract can either have concrete or symbolic storage depending on what type of execution we are doinghevmA contract is either in creation (running its "constructor") or post-creation, and code in these two modes is treated differently by instructions like  EXTCODEHASH*, so we distinguish these two code types.hevm Constructor code, during contract creationhevmInstance code, after contract creationhevm+The "accrued substate" across a transactionhevm(The state that spans a whole transactionhevm:The "registers" of the VM along with memory and data stackhevmCall/create infohevm(An entry in the VM's "call/create stack"hevm A log entryhevm$A way to specify an initial VM statehevmvThe cache is data that can be persisted for efficiency: any expensive query that is constant at least within a block.hevm5The possible return values of a `is unique` SMT query$hevm)The possible return values of a SMT query)hevmAlias for the type of e.g. exec1.,hevmFQueries halt execution until resolved through RPC calls or SMT queries=hevm%The state of a stepwise EVM executionKhevm"The possible result states of a VMLhevmAn operation failedMhevm$Reached STOP, RETURN, or end-of-codeNhevmEVM failure modeshevm*A stack frame can be popped in three ways.hevmSTOP, RETURN, or no more codehevmREVERThevmAny other errorhevmCAn "external" view of a contract's bytecode, appropriate for e.g.  EXTCODEHASH.hevm)Initialize empty contract with given codehevmUpdate program counterhevmExecutes the EVM one stephevmHChecks a *CALL for failure; OOG, too many callframes, memory access etc.hevmPAsk the SMT solver to provide a concrete model for val iff a unique model existshevm5Construct SMT Query and halt execution until resolvedhevm5Construct RPC Query and halt execution until resolvedhevm>Loads the selected contract as the current contract to executehevm?Burn gas, failing if insufficient gas is available We use the e type to avoid overflows in intermediate calculations and throw if the value won't fit into a uint64hevmreturns a wrapped boolean- if true, this address has been touched before in the txn (warm gas cost as in EIP 2929) otherwise coldhevmreturns a wrapped boolean- if true, this slot has been touched before in the txn (warm gas cost as in EIP 2929) otherwise coldhevm/Hack deterministic signing, totally insecure...hevmOReplace a contract's code, like when CREATE returns from the constructor code.hevm]This function defines how to pop the current stack frame in either of the ways specified by .gIt also handles the case when the current stack frame is the only one; in this case, we set the final ? of the VM execution.hevmContract addresshevmStorage slot keyhevm Continuationd     #"! $'%&()*+,0/.-176543289<;:=>JIHGFEDCBA@?KMLNdcba`_^]\YXWVUTSRQPO[Ze      !"#$%&'dNdcba`_^]\YXWVUTSRQPO[ZKML=>JIHGFEDCBA@?89<;:1765432,0/.-*+)($'%&#"!      e      !"#$%&'None"#%27>HMSVX_Hhevm,Increments origin nonce and pays gas depositIhevmGiven a valid tx loaded into the vm state, subtract gas payment from the origin, increment the nonce and pay receiving address+,76543210/.-8:9;<>=?@ABCDEFGHI;<>=8:9+,76543210/.-?@ABCDEFGHINone"#%&'127>HMSVX_Vhevm/Abstract representation of an RPC fetch requestlhevmChecks which branches are satisfiable, checking the pathconditions for consistency if the third argument is true. When in debug mode, we do not want to be able to navigate to dead paths, but for normal execution paths with inconsistent pathconditions will be pruned anyway.PQRSTUV\[ZYXW]^_`abcdefghijklV\[ZYXWSTU]QR^_`abcdefghijPklNone "#%27=>?HMSVX_ghrstuvwxyz{|}~rstu{|}~vwxyzNone"#%27>HMSVX_ None"#%27>HMSVX_ None"#%&'.27>HMSVX_ hevm'Type alias for an operational monad of Actionhevm-The instruction type of the operational monadhevm6Keep executing until an intermediate result is reachedhevm5Keep executing until an intermediate state is reachedhevmWait for a query to be resolvedhevmMultiple things can happenhevmEmbed a VM state transformationhevm4Run the VM until final result, resolving all querieshevm Run the VM until its final stateNone"#%.27>HMSVX_k$i hevm@Convenience functions for generating large symbolic byte stringshevm@Convenience functions for generating large symbolic byte stringshevm@Convenience functions for generating large symbolic byte stringshevm@Convenience functions for generating large symbolic byte stringshevm@Convenience functions for generating large symbolic byte stringshevm%Abstract calldata argument generationhevm{Generates calldata matching given type signature, optionally specialized with concrete arguments. Any argument given as " symbolic8" or omitted at the tail of the list are kept symbolic.hevmkInterpreter which explores all paths at | branching points. | returns a list of possible final evm stateshevmSymbolically execute the VM and check all endstates against the postcondition, if available. Returns `Right (Tree BranchInfo)` if the postcondition can be violated, or or `Left (Tree BranchInfo)`, if the postcondition holds for all endstates.hevmeCompares two contract runtimes for trace equivalence by running two VMs and comparing the end states.None"#%27>HMSVX_&  None"#%27>HMSVX_'%) ) None"#%27>HMSVX_)#        None"#%.27>HMSVX_*=hevm isLastChildhevm isTreeHead1 !"#$%&'()*+,-./0123456789;<=>?@ABCDE1 !"#$%&'()*+,-./0123456789<;=>?@ABCDENone"#%27>HMSVX_2hevmGet field either inside  attributes, object (combined-json format) or directly.hevmmConstruct a new Solidity version pragma for the highest mentioned version given a list of source file ASTs.hevm6Removes all lines containing "SPDX-License-Identifier"hevmj(bytes, offset) where offset is added or incremeneted as text is inserted or removed from the source fileFFNone"#%.27>HMSVX_=Hhevm*This is like an unresolved source mapping.qhevmAssuming a constructor is loaded, this stepper will run the constructor to create the test contract, give it an initial balance, and run `setUp()'.rhevmAssuming a test contract is loaded and initialized, this stepper will run the specified test method and return whether it succeeded.uhevm;Randomly generates the calldata arguments and runs the testhevm/Define the thread spawner for normal test caseshevm2Define the thread spawner for property based testshevmIDefine the thread spawner for symbolic tests TODO: return a list of VM'shevm2takes a concrete VM and makes all storage symbolicKGHIKJLMN]\[ZYXWVUTSRQPO^_kigcjdb`ehaflmnopqrstuvwxyz{|}~K^_kigcjdb`ehafMN]\[ZYXWVUTSRQPOlmnopLqrstuvHIKJwGxyz{|}~None"#%27>HMSVX_AHIIH None"#%27>HMSVX_BNone"#%.27>HMSVX_HhevmXEach step command in the terminal should finish immediately with one of these outcomes.hevmProgram finishedhevmTook one step; more steps to gohevmRun a specific number of stepshevm Finish when a VM predicate holdshevm This turns a StepperB into a state action usable from within the TTY loop, yielding a  StepOutcome depending on the StepMode.ccNone"#%.27=>?HMSVX_S hevmAllow blocking and returninghevmForbid blocking and returninghevmProgram finishedhevmTook one step; more steps to go hevmCame across blocking request"hevmFinish after one opcode step#hevmRun a specific number of steps$hevmFinish before the next opcode%hevm Finish when a VM predicate holdsAhevmSpecifies whether to do I/O blocking or VM halting while stepping. When we step backwards, we don't want to allow those things.@      !$#"%&'()*+,-./0123456789:;<=>?@ABCDEF@     /.-,+*)('&!$#"% 0123456789:;<=>?@ABCDEFNone"#%279>HMSVX_Vi\]_^`aegbdfchijklmnopqrhijklmn`aegbdfc\]_^opqr!"##$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeffghijklmmnoopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn o p q r s t u v w x y z { | } ~                                                                                                                                                                           ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S S T U V W W X Y Z [ \ \ ] ^ _ ` a b c d e f g h i j k k l m n o p q r s t u v w x y z { | } ~                                                            !"#$%&'()*+,-./01234567889:;<<=>?@ABCDEFGHIJKLMNOPQRSTUVW,*XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&''()*+,-./01234566789:;<=>?@ABCDEFGHIJKLMLNOPQRSTUVWXYZ[\]^_`abcdefghijjklmmnKKopqrstuvwxyz{|}~      !"#$%&'()*+,-./011234556789:;<=>?@ABCDEEbFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz&{|}~u      !"#$%&'()*+,-.. /00123456789:;<=>?@ABCDEFGHIJKLMNOPQRPSTPSUVWXVWYZ[\]^_` a b c d e f g hihevm-0.46.0-inplace EVM.DemandEVM.FeeSchedule EVM.HexdumpEVM.PrecompiledEVM.TTYCenteredList EVM.TypesEVM.RLP EVM.PatriciaEVM.Op EVM.Concrete EVM.SymbolicEVM.ABI EVM.SolidityEVMEVM.Transaction EVM.Fetch EVM.Facts EVM.Facts.GitEVM.Exec EVM.Stepper EVM.SymExec EVM.DebugEVM.DappEVM.StorageLayout EVM.Format EVM.Flatten EVM.UnitTest EVM.VMTestEVM.TTY EVM.EmacsEVM.Dev Paths_hevmdemandEIP FeeScheduleg_zerog_base g_verylowg_lowg_midg_high g_extcode g_balanceg_sload g_jumpdestg_ssetg_sresetr_sclearg_selfdestructg_selfdestruct_newaccountr_selfdestructg_create g_codedepositg_call g_callvalue g_callstipend g_newaccountg_exp g_expbyteg_memory g_txcreate g_txdatazerog_txdatanonzero g_transactiong_log g_logdata g_logtopicg_sha3 g_sha3wordg_copy g_blockhash g_extcodehash g_quaddivisorg_ecaddg_ecmulg_pairing_pointg_pairing_baseg_froundr_block g_cold_sloadg_cold_account_accessg_warm_storage_readg_access_list_addressg_access_list_storage_keyeip150eip160 homestead metropoliseip1108eip1884eip2028eip2200istanbuleip2929berlin$fShowFeeSchedule prettyHex simpleHexexecute renderListdrawListElementsNibble ToSizzleBVtoSizzleToSizzle FromSizzleBV fromSizzle FromSizzleSAddrsaddressWord160AddraddressWord160WhiffTodoAndOrEqLTGTSLTSGTIsZeroITESHLSHRSARAddSubMulDivModExpNeg FromKeccak FromBytes FromStorageLiteralVarSymWordS ByteStringSWordCW256BufferConcreteBufferSymbolicBufferInt512Word512w256variteWhiff maybeLitWordw256litlitBytestoChecksumAddressstrip0x hexByteStringhexTextreadNreadNull wordField addrFieldaddrFieldMaybe dataField toWord512 fromWord512numpadLeftpadRighttruncpadpadLeft'word256wordbyteAtfromBEasBE word256Bytes word160ByteshilotoByte unpackNibbles packNibbles keccakBytesword32keccak abiKeccak concatMapM$fFiniteBitsWord512 $fBitsWord512 $fIxWord512$fHashableWord512 $fReadWord512 $fShowWord512$fIntegralWord512 $fRealWord512 $fNumWord512 $fEnumWord512$fBoundedWord512 $fOrdWord512 $fEqWord512$fDoubleWordWord512$fBinaryWordInt512$fFiniteBitsInt512 $fBitsInt512 $fIxInt512$fHashableInt512 $fReadInt512 $fShowInt512$fIntegralInt512 $fRealInt512 $fNumInt512 $fEnumInt512$fBoundedInt512 $fOrdInt512 $fEqInt512$fDoubleWordInt512$fBinaryWordWord512$fEqSymbolicBuffer$fMonoidBuffer$fSemigroupBuffer$fParseRecordW256$fParseFieldsW256$fParseFieldW256$fFromJSONKeyW256$fFromJSONW256 $fToJSONW256 $fShowW256 $fReadW256 $fShowBuffer$fToJSONByteStringS$fReadByteStringS$fShowByteStringS $fShowWhiff $fEnumSymWord $fEqSymWord$fBoundedSymWord$fSDivisibleSymWord $fBitsSymWord $fNumSymWord$fEqSymbolicSymWord $fShowSymWord $fToJSONWord $fOrdWord $fRealWord $fNumWord$fIntegralWord $fEnumWord$fEqWord $fBoundedWord$fFiniteBitsWord $fBitsWord $fReadWord $fShowWord$fParseRecordAddr$fParseFieldsAddr$fParseFieldAddr$fFromJSONKeyAddr$fFromJSONAddr $fShowAddr $fReadAddr $fShowSAddr$fFromSizzleBVWordN$fFromSizzleBVWordN0$fToSizzleBVAddr$fToSizzleBVW256 $fShowNibble $fDataWord512$fGenericWord512 $fDataInt512$fGenericInt512 $fNumW256$fIntegralW256 $fRealW256 $fOrdW256 $fEnumW256$fEqW256 $fBitsW256$fFiniteBitsW256 $fBoundedW256 $fGenericW256$fEqByteStringS $fNumAddr$fIntegralAddr $fRealAddr $fOrdAddr $fEnumAddr$fEqAddr $fBitsAddr $fGenericAddr $fNumSAddr $fNumNibble$fIntegralNibble $fRealNibble $fOrdNibble $fEnumNibble $fEqNibble $fBitsNibble$fFiniteBitsNibble$fBoundedNibble$fGenericNibbleRLPBSListsliceitemInfo rlpdecode rlplengths rlpencode encodeLenrlpListoctets octetsFull octets160 rlpWord256 rlpWordFull rlpAddrFull rlpWord160 $fShowRLP$fEqRLPMapDBTrieNodeDBNodeEmptyShortcutFullRefHashPathDBKVPutGetinsertDBlookupDBrunDB encodePathrlpRefrlpNodeputNodegetNode lookupPathgetValemptyRef emptyRefs addPrefix insertRefupdatedeleteinsertlookupInrunTrierunMapDB insertValuescalcRoot $fShowRef$fShowDB $fFunctorKV $fFunctorDB$fApplicativeDB $fMonadDB $fShowNode$fEqNode$fEqRefOpOpStopOpAddOpMulOpSubOpDivOpSdivOpModOpSmodOpAddmodOpMulmodOpExp OpSignextendOpLtOpGtOpSltOpSgtOpEqOpIszeroOpAndOpOrOpXorOpNotOpByteOpShlOpShrOpSarOpSha3 OpAddress OpBalanceOpOriginOpCaller OpCallvalueOpCalldataloadOpCalldatasizeOpCalldatacopy OpCodesize OpCodecopy OpGasprice OpExtcodesize OpExtcodecopyOpReturndatasizeOpReturndatacopy OpExtcodehash OpBlockhash OpCoinbase OpTimestampOpNumber OpDifficulty OpGaslimit OpChainid OpSelfbalanceOpPopOpMloadOpMstore OpMstore8OpSloadOpSstoreOpJumpOpJumpiOpPcOpMsizeOpGas OpJumpdestOpCreateOpCall OpStaticcall OpCallcodeOpReturnOpDelegatecall OpCreate2OpRevertOpSelfdestructOpDupOpSwapOpLogOpPush OpUnknownopString$fShowOp$fEqOpwordAtreadByteOrZero byteStringSliceWithDefaultZeroes wordValue sliceMemory writeMemoryreadMemoryWordreadMemoryWord32 setMemoryWord setMemoryByte keccakBlob^ createAddresscreate2AddresslitWordlitAddr maybeLitAddr maybeLitBytesforceLit forceLitBytes forceBuffersdivsmodaddmodmulmodsltsgtswordAtreadByteOrZero'sliceWithZero' writeMemory'readMemoryWord'readMemoryWord32'setMemoryWord'setMemoryByte' readSWord'select'readSWordWithBoundlen sliceWithZero readSWordindex symSHA256N symkeccakNtoSInt symkeccak' symSHA256rawVal whiffValuesimplifyConditionAbiValsNoValsCAbiSAbiEventIndexed NotIndexed Anonymity Anonymous NotAnonymousAbiKindDynamicStaticAbiType AbiUIntType AbiIntTypeAbiAddressType AbiBoolType AbiBytesTypeAbiBytesDynamicType AbiStringTypeAbiArrayDynamicType AbiArrayType AbiTupleTypeAbiValueAbiUIntAbiInt AbiAddressAbiBoolAbiBytesAbiBytesDynamic AbiStringAbiArrayDynamicAbiArrayAbiTuple formatStringabiKind abiValueTypeabiTypeSoliditygetAbiputAbi getAbiSeqencodeAbiValuedecodeAbiValueselector abiMethod parseTypeNameemptyAbi genAbiValue makeAbiValue parseAbiValue decodeBufferdecodeStaticArgs$fArbitraryAbiType $fShowAbiType$fArbitraryAbiValue$fShowAbiValue $fReadBoolz $fReadAbiType $fEqAbiType $fOrdAbiType$fGenericAbiType$fReadAbiValue $fEqAbiValue $fOrdAbiValue$fGenericAbiValue $fShowAbiKind $fReadAbiKind $fEqAbiKind $fOrdAbiKind$fGenericAbiKind$fShowAnonymity$fOrdAnonymity $fEqAnonymity$fGenericAnonymity $fShowIndexed $fOrdIndexed $fEqIndexed$fGenericIndexed $fShowEvent $fOrdEvent $fEqEvent$fGenericEventCodeTypeCreationRuntimeSrcMapSM srcMapOffset srcMapLength srcMapFile srcMapJumpsrcMapModifierDepthJumpTypeJumpIntoJumpFrom JumpRegular SourceCache _sourceFiles _sourceLines _sourceAstsMethod _methodOutput _methodInputs _methodName_methodSignature SolcContract_runtimeCodehash_creationCodehash _runtimeCode _creationCode _contractName_constructorInputs_abiMap _eventMap_storageLayout_runtimeSrcmap_creationSrcmapSlotTypeStorageMapping StorageValue StorageItem_type_offset_slot$fReadSlotType$fShowSlotType$fMonoidSourceCache$fSemigroupSourceCache $fEqSlotType$fShowStorageItem$fEqStorageItem $fShowMethod $fEqMethod $fOrdMethod$fGenericMethod$fShowSourceCache$fEqSourceCache$fGenericSourceCache$fShowJumpType $fEqJumpType $fOrdJumpType$fGenericJumpType $fShowSrcMap $fEqSrcMap $fOrdSrcMap$fGenericSrcMap$fShowSolcContract$fEqSolcContract$fGenericSolcContract$fShowSrcMapParseState$fShowCodeType $fEqCodeType $fOrdCodeTypeabiMapconstructorInputs contractName creationCodecreationCodehashcreationSrcmapeventMap runtimeCoderuntimeCodehash runtimeSrcmap storageLayout sourceAsts sourceFiles sourceLinesLanguageSolidityYul methodInputs methodName methodOutputmethodSignature makeSrcMaps lineSubrangereadSolcsolidity solcRuntime functionAbireadJSONreadCombinedJSON readStdJSON signatureparseMethodInput solidity'solcstdjsonstripBytecodeMetadatastripBytecodeMetadataSymastIdMap astSrcMap$fToJSONStandardJSON$fShowLanguageBlock _coinbase _timestamp_number _difficulty _gaslimit _maxCodeSize _scheduleEnv _contracts_chainId _storageModel _sha3Crack _keccakUsed StorageModel ConcreteS SymbolicSInitialSContract _contractcode_storage_balance_nonce _codehash_opIxMap_codeOps _external _origStorageStorageConcreteSymbolic ContractCodeInitCode RuntimeCodeSubState_selfdestructs_touchedAccounts_accessedAddresses_accessedStorageKeys_refundsTxState _gasprice _txgaslimit_origin_toAddr_value _substate _isCreate _txReversion FrameState _contract _codeContract_code_pc_stack_memory _memorySize _calldata _callvalue_caller_gas _returndata_static FrameContextCreationContext CallContextcreationContextAddresscreationContextCodehashcreationContextReversioncreationContextSubstatecallContextTargetcallContextContextcallContextOffsetcallContextSizecallContextCodehashcallContextAbicallContextDatacallContextReversioncallContextSubStateFrame _frameContext _frameStateLogVMOpts vmoptContract vmoptCalldata vmoptValue vmoptAddress vmoptCaller vmoptOriginvmoptGas vmoptGaslimit vmoptNumbervmoptTimestamp vmoptCoinbasevmoptDifficultyvmoptMaxCodeSizevmoptBlockGaslimit vmoptGasprice vmoptSchedule vmoptChainId vmoptCreatevmoptStorageModelvmoptTxAccessListCache_fetched_pathIsUniqueUniqueMultiple InconsistentUTimeoutUBranchConditionCaseUnknown Inconsistent CodeLocationChoosePleaseChoosePathQueryPleaseFetchContractPleaseMakeUniquePleaseFetchSlot PleaseAskSMT TraceData EventTrace FrameTrace QueryTrace ErrorTrace EntryTrace ReturnTraceTrace_traceCodehash _traceOpIx _traceDataVM_result_state_frames_env_block_tx_logs_traces_cache_burned _constraints _iterationsVMResult VMFailure VMSuccessError BalanceTooLowUnrecognizedOpcodeSelfDestruction StackUnderrunBadJumpDestinationRevertNoSuchContractOutOfGas BadCheatCodeStackLimitExceededIllegalOverflowStateChangeWhileStaticInvalidMemoryAccessCallDepthLimitReachedMaxCodeSizeExceededPrecompileFailureUnexpectedSymbolicArgDeadPath NotUnique SMTTimeout blankState $fEqStorage$fParseFieldStorageModel $fShowChoose $fShowQuery$fShowBranchCondition$fShowIsUnique $fShowLog$fShowFrameState$fShowSubState$fShowContractCode $fShowStorage $fShowTxState$fShowFrameContext $fShowFrame $fShowCache$fReadStorageModel$fShowStorageModel $fShowVMOpts $fShowEnv $fShowBlock$fShowVM $fShowTrace$fShowTraceData$fShowContract$fShowVMResult $fShowErrorcalldatacaller callvaluecode codeContractcontractgasmemory memorySizepc returndatastackstatic frameContext frameStatecoinbase difficultygaslimit maxCodeSizenumberschedule timestampgaspriceisCreateoriginsubstatetoAddr txReversion txgaslimitvalueaccessedAddressesaccessedStorageKeysrefunds selfdestructstouchedAccountsbalancecodeOpscodehash contractcodeexternalnonceopIxMap origStoragestoragechainId contracts keccakUsed sha3Crack storageModelfetchedpath traceCodehash traceData traceOpIx FrameResult FrameReturned FrameReverted FrameErrored CheatActionblockburnedcache constraintsenvframes iterationslogsresultstatetracestxbytecodeunifyCachedContractcurrentContractmakeVminitialContractcontractWithStorenextexec1transfer callChecksprecompiledContractexecutePrecompile truncpadlit lazySliceparseModexpLengthisZero asIntegernooppushTopushToSequencegetCodeLocation makeUniqueaskSMT fetchAccount readStorage writeStorage accessStorage accountExists accountEmptyfinalize loadContract limitStack notStaticburnforceConcreteAddr forceConcreteforceConcrete2forceConcrete3forceConcrete4forceConcrete5forceConcrete6forceConcreteBufferrefundunRefund touchAccount selfdestruct accessAndBurnaccessAccountForGasaccessStorageForGas cheatCodecheat cheatActionsethsign delegateCall collisioncreate replaceCodereplaceCodeOfSelf resetStatevmErrorunderrun finishFrameaccessUnboundedMemoryRangeaccessMemoryRangeaccessMemoryWordcopyBytesToMemorycopyCallBytesToMemory readMemory word256AtwithTraceLocation pushTrace insertTracepopTracezipperRootForest traceForesttraceLogpushpushSymstackOp1stackOp2stackOp3 checkJumpopSize mkOpIxMapvmOpvmOpIxopParamsreadOp mkCodeOps costOfCall costOfCreateconcreteModexpGasFeecostOfPrecompile memoryCostceilDiv allButOne64thlog2 $fMonoidCache$fSemigroupCache$fShowFrameResult TransactiontxData txGasLimit txGasPricetxNoncetxRtxStxToAddrtxVtxValuetxType txAccessListTxTypeLegacyTransactionAccessListTransactionAccessListEntry accessAddressaccessStorageKeys txAccessMapecrecsender signingDataaccessListPrice txGasCost accountAt newAccountsetupTxinitTx$fFromJSONAccessListEntry$fFromJSONTransaction$fShowAccessListEntry $fShowTxType $fEqTxType$fShowTransactionFetcherToRPCtoRPC BlockNumberLatestRpcQuery QueryCode QueryBlock QueryBalance QueryNonce QuerySlot QueryChainIdrpcreadText fetchQuery parseBlockfetchWithSessionfetchContractWithSessionfetchSlotWithSessionfetchBlockWithSessionfetchBlockFromfetchContractFrom fetchSlotFromhttpzerooraclechecksat checkBranch$fToRPCBlockNumber $fToRPCBool $fToRPCW256 $fToRPCAddr$fShowRpcQueryFilefilePathfileDataData dataASCIIFact BalanceFact NonceFact StorageFactCodeFactaddrwhatwhichblob contractFacts cacheFactsvmFactsapply applyCache factToFile fileToFact $fOrdFact$fAsASCIIByteString $fAsASCIIWord $fAsASCIIAddr$fEqFact $fShowFact$fEqPath $fOrdPath $fShowPath$fEqData $fOrdData $fShowData$fEqFile $fOrdFile $fShowFileRepoAt saveFacts loadFacts $fEqRepoAt $fOrdRepoAt $fShowRepoAt ethrunAddressvmForEthrunCreationexecrun execWhileStepperActionExecRunWaitAskwaitaskevm execFullyrunFullyenteringenter interpret Postcondition Precondition BranchInfo_vm_branchConditionsbytes32 sbytes128 sbytes256 sbytes512 sbytes1024mkByte symAbiArg symCalldata abstractVM loadSymVM doInterpret interpret'maxIterationsReached checkAssertcheckAssertionsverifyContractpruneDeadPathsconsistentPathconsistentTreeleavesverifyequivalenceCheckboth'showCounterexampleModeDebug JsonTraceobjectprettyContractprettyContracts srcMapCodePos srcMapCode$fEqMode $fShowModeTest ConcreteTest SymbolicTest DappContext _contextInfo _contextEnvDappInfo _dappRoot_dappSolcByName_dappSolcByHash _dappSources_dappUnitTests _dappAbiMap _dappEventMap _dappAstIdMap_dappAstSrcMap dappAbiMap dappAstIdMap dappAstSrcMap dappEventMapdappRootdappSolcByHashdappSolcByName dappSources dappUnitTests contextEnv contextInfodappInfo emptyDappunitTestMarkerAbifindAllUnitTestsmkTest regexMatches findUnitTestsunitTestMethodsFilteredunitTestMethods extractSig traceSrcMapshowTraceLocation $fShowTestfindContractDefinitionstorageVariablesForContractnodeIsisStorageVariableDeclarationslotTypeForDeclarationgrokDeclarationTypegrokMappingType grokValueTypeTreeLine_indent_content SignednessSignedUnsignedshowDec showWordExactshowWordExplanationhumanizeInteger showAbiValue showAbiValues textAbiValues textValues parenthesise showValues showValueshowCall showError isPrintable formatBytes formatSBytes formatBString formatSString formatBinary formatSBinary showTraceTree unindexed showTrace getAbiTypesmaybeContractNamemaybeContractName' maybeAbiNamecontractNamePartcontractPathPartprettyvmresult currentSolc$fShowSignednesscontentindentshowTreeIndentSymbol flattenTree flattenForestleftpad showTree' showStorage showLeafInfoshowBranchInfoWithAbi renderTreeflatten CoverageState OpLocation srcCodehashsrcOpIx ABIMethod TestVMParams testAddress testCaller testOrigin testGasCreate testGasCalltestBalanceCreatetestBalanceCall testCoinbase testNumber testTimestamp testGaslimit testGaspricetestMaxCodeSizetestDifficulty testChainIdUnitTestOptionsverbosemaxIter smtTimeoutsmtStatesolvermatchfuzzRunsreplay vmModifierdapp testParamsdefaultGasForCreatingdefaultGasForInvokingdefaultBalanceForCreatordefaultBalanceForCreateddefaultMaxCodeSizeinitializeUnitTest runUnitTestexecTest checkFailuresfuzzTestticksrcMapForOpLocationcurrentOpLocationexecWithCoveragerunWithCoverageinterpretWithCoveragecoverageReportcoverageForUnitTestContractrunUnitTestContractrunTestrunOnefuzzRunsymRun symFailureprettyCalldata execSymTestcheckSymFailures indentLines passOutput failOutputformatTestLogs formatTestLog word32BytesabiCall makeTxCallinitialUnitTestVm symbolify%getParametersFromEnvironmentVariables$fEqOpLocation$fOrdOpLocation$fShowOpLocationBlockchainCasecheckExpectation parseBCSuite vmForCase$fFromJSONContract$fFromJSONBlock$fFromJSONBlockchainCase $fShowCase$fShowBlockchainCase$fShowBlockchainErrorUiStateViewVm ViewContracts ViewPickerViewHelpUiBrowserState_browserContractList _browserVmUiTestPickerState_testPickerList_testPickerDapp _testOpts UiVmState_uiVm_uiStep _uiSnapshots _uiStepper _uiShowMemory _uiTestOptsUiWidgetNameAbiPane StackPane BytecodePane TracePane SolidityPaneTestPickerPane BrowserPanePager$fEqName $fShowName $fOrdName uiShowMemory uiSnapshotsuiStep uiStepper uiTestOptsuiVmtestOptstestPickerDapptestPickerListbrowserContractList browserVm ContinuationStoppedContinueStepModeStep StepUntilPred_ViewVm_ViewContracts _ViewPicker _ViewHelpsnapshotInterval keepExecutingisUnitTestContractmkVty runFromVM initUiVmStatedebuggableTests isFuzzTestmaintakeStep backstepUntilbackstepappEventappinitialUiVmStateForTestmyThemedrawUi drawHelpViewdrawTestPicker drawVmBrowserdrawVm drawHelpBar stepOneOpcodeisNewTraceAddedisNextSourcePosition#isNextSourcePositionWithoutEnteringisExecutionHalted currentSrcMap drawStackPanemessagedrawBytecodePanedim withHighlightprettyIfConcrete drawTracePane solidityListdrawSolidityPane ifTallEnoughopWidget selectedAttrdimAttrwordAttrboldAttr activeAttr _uiVmNextStep _uiVmSolc _uiVmDapp_uiVmStepCount_uiVmFirstState _uiVmFetcher _uiVmMessage_uiVmSentHashes StepPolicy StepNormally StepTimidlyConsole UiStarted UiDappLoadedUiVmSDisplaysexpSexp StepOutcomeReturnedSteppedBlockedStepOneStepManyStepNoneuiVmDapp uiVmFetcheruiVmFirstState uiVmMessage uiVmNextStepuiVmSentHashesuiVmSolc uiVmStepCountupdateUiVmStateupdateSentHashespromptdisplaytxtoutputloophandle handleCmd atFileLine codeByHash allHashesoutputVm parseStepModequoted sexpMemorydefaultUnitTestOptionsinitialStateForTest$fSDisplayByteString$fSDisplayWord $fSDisplay[] $fSDisplay[]0$fSDisplayFrameState$fSDisplayFrameContext$fSDisplayFrame$fSDisplayVMResult$fSDisplayMaybe $fSDisplayMap$fSDisplayBuffer $fSDisplaySBV$fSDisplaySymWord$fSDisplaySBV0$fSDisplayW256$fSDisplayContract$fSDisplayAddr $fSDisplayVM$fSDisplayStorage$fSDisplaySExpr$fSDisplayDappInfo VMTraceResultgasUsedVMTraceopmemSizedepth loadDappInfoghciTest runBCTest ghciBCTestghciTty ghciEmacsfoogetOpvmtracevmresinterpretWithTrace$fGenericVMTrace$fToJSONVMTrace$fGenericVMTraceResult$fToJSONVMTraceResultbytestring-0.10.10.1Data.ByteString.Internal ByteStringbaseGHC.BaseString paddedShowHexisWorthPrintingghc-prim GHC.TypesTruegroup EthjetContextsbv-8.9-51Ted8At7jfDMVjRBEBe2BData.SBV.Core.DataSWord16Data.SBV.Client.BaseIOtoSized FromSized mtl-2.2.2Control.Monad.State.Classputgetinteger-wired-inGHC.Integer.TypeInteger getAttribute maximalPragma stripLicensestripImportsAndPragmasversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName