diff --git a/foundry.toml b/foundry.toml index 2aa470ac92..3607597ec4 100644 --- a/foundry.toml +++ b/foundry.toml @@ -84,6 +84,18 @@ remappings = [ # `etchZoltuFactory`/`deployZoltu`, which are unchanged in 0.1.7. Test-only: # nothing under `src/` reaches rain-deploy, so no contract bytecode moves. "rain-deploy-0.1.2/=dependencies/rain-deploy-0.1.7/", + # Same, for `rain-solmem`. This repo is on 0.1.26, while `rainlang` 0.1.5, + # `rain-interpreter-interface` 0.1.0, `rain-intorastring` 0.1.0 and + # `rain-lib-memkv` 0.1.0 still import solmem under the + # `rain-solmem-0.1.3/` prefix. Unlike the aliases above this one is NOT + # bytecode-neutral: solmem internals changed between 0.1.3 and 0.1.26, so + # the rolling `src/generated/candidate/` snapshot moves with it (the + # rolling-candidate model's job; regenerated in the same change as this + # alias). 0.1.26 deleted `LibStackPointer.sol`, but the only files under + # the old prefix that import it are two `rainlang` concrete test files + # (`LibOpBlockNumber.t.sol`, `LibOpBlockTimestamp.t.sol`) that nothing in + # this repo's compilation reaches. + "rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.26/", ] [dependencies] @@ -99,7 +111,7 @@ raindex-interface = "0.1.3" rain-metadata = "0.1.0" rain-intorastring = "0.1.0" rain-sol-codegen = "0.1.36" -rain-solmem = "0.1.3" +rain-solmem = "0.1.26" rain-math-float = "0.1.1" rain-tofu-erc20-decimals = "0.1.1" rain-deploy = "0.1.7" diff --git a/remappings.txt b/remappings.txt index 5690f52f8e..b648610dcc 100644 --- a/remappings.txt +++ b/remappings.txt @@ -10,7 +10,7 @@ rain-math-binary-0.1.1/=dependencies/rain-math-binary-0.1.1/ rain-math-float-0.1.1/=dependencies/rain-math-float-0.1.1/ rain-metadata-0.1.0/=dependencies/rain-metadata-0.1.0/ rain-sol-codegen-0.1.36/=dependencies/rain-sol-codegen-0.1.36/ -rain-solmem-0.1.3/=dependencies/rain-solmem-0.1.3/ +rain-solmem-0.1.26/=dependencies/rain-solmem-0.1.26/ rain-string-0.2.0/=dependencies/rain-string-0.2.0/ rain-tofu-erc20-decimals-0.1.1/=dependencies/rain-tofu-erc20-decimals-0.1.1/ raindex-interface-0.1.3/=dependencies/raindex-interface-0.1.3/ diff --git a/soldeer.lock b/soldeer.lock index 32190c95b0..3b248041f5 100644 --- a/soldeer.lock +++ b/soldeer.lock @@ -84,10 +84,10 @@ integrity = "164e2655ac8b66bcf52c799421706d3dfaab987addaaeadd74574e70fd2eb6ed" [[dependencies]] name = "rain-solmem" -version = "0.1.3" -url = "https://soldeer-revisions.s3.amazonaws.com/rain-solmem/0_1_3_09-05-2026_19:49:33_rain.zip" -checksum = "1d405bb81f7c9e56d1717de0d60da918d2fc2fa4db083efd2abe9906378d019f" -integrity = "e879d2743f9d884f647b9dd489889a83f2cea5f76eb69409a113e1baa69d3643" +version = "0.1.26" +url = "https://soldeer-revisions.s3.amazonaws.com/rain-solmem/0_1_26_18-08-2026_16:20:17_rain.zip" +checksum = "291a0acf805b8acd65dfb9e848e6670bde158120bb5b0bcdeeaf17c4084a134c" +integrity = "54e56c1b10d05df72c1c3dcc8df92b99b9f01cd946363158b077c779ce4d20fa" [[dependencies]] name = "rain-string" diff --git a/src/concrete/parser/RaindexV6SubParser.sol b/src/concrete/parser/RaindexV6SubParser.sol index 4ade37f44c..97d44aad99 100644 --- a/src/concrete/parser/RaindexV6SubParser.sol +++ b/src/concrete/parser/RaindexV6SubParser.sol @@ -9,7 +9,7 @@ import { IParserToolingV1 } from "rainlang-0.1.5/src/abstract/BaseRainlangSubParser.sol"; import {LibConvert} from "rain-lib-typecast-0.1.0/src/LibConvert.sol"; -import {LibUint256Matrix} from "rain-solmem-0.1.3/src/lib/LibUint256Matrix.sol"; +import {LibUint256Matrix} from "rain-solmem-0.1.26/src/lib/LibUint256Matrix.sol"; import { LibRaindexSubParser, diff --git a/src/concrete/raindex/RaindexV6.sol b/src/concrete/raindex/RaindexV6.sol index 4bc93e2225..08d859b8a3 100644 --- a/src/concrete/raindex/RaindexV6.sol +++ b/src/concrete/raindex/RaindexV6.sol @@ -19,8 +19,8 @@ import { StackItem, EvalV4 } from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterV4.sol"; -import {LibUint256Array} from "rain-solmem-0.1.3/src/lib/LibUint256Array.sol"; -import {LibUint256Matrix} from "rain-solmem-0.1.3/src/lib/LibUint256Matrix.sol"; +import {LibUint256Array} from "rain-solmem-0.1.26/src/lib/LibUint256Array.sol"; +import {LibUint256Matrix} from "rain-solmem-0.1.26/src/lib/LibUint256Matrix.sol"; import {IInterpreterStoreV3} from "rain-interpreter-interface-0.1.0/src/interface/IInterpreterStoreV3.sol"; import {LibNamespace} from "rain-interpreter-interface-0.1.0/src/lib/ns/LibNamespace.sol"; import {LibMeta} from "rain-metadata-0.1.0/src/lib/LibMeta.sol"; @@ -61,8 +61,8 @@ import { CONTEXT_VAULT_IO_VAULT_ID } from "../../lib/LibRaindex.sol"; import {RaindexV6FlashLender} from "../../abstract/RaindexV6FlashLender.sol"; -import {LibBytes32Array} from "rain-solmem-0.1.3/src/lib/LibBytes32Array.sol"; -import {LibBytes32Matrix} from "rain-solmem-0.1.3/src/lib/LibBytes32Matrix.sol"; +import {LibBytes32Array} from "rain-solmem-0.1.26/src/lib/LibBytes32Array.sol"; +import {LibBytes32Matrix} from "rain-solmem-0.1.26/src/lib/LibBytes32Matrix.sol"; import {LibFormatDecimalFloat} from "rain-math-float-0.1.1/src/lib/format/LibFormatDecimalFloat.sol"; diff --git a/src/generated/RaindexV6SubParserPointers.sol b/src/generated/RaindexV6SubParserPointers.sol index e643fa1d97..5cfe333287 100644 --- a/src/generated/RaindexV6SubParserPointers.sol +++ b/src/generated/RaindexV6SubParserPointers.sol @@ -5,7 +5,7 @@ pragma solidity ^0.8.25; // THIS FILE IS AUTOGENERATED BY THE BUILD SCRIPT. DO NOT EDIT BY HAND. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x704aadc1ed56f63ff918ab219e6681a5d2851d774e2ee136bbe7904ea3b2fdcd); +bytes32 constant BYTECODE_HASH = bytes32(0x774bae1bbf3a2c98469fc7efceabf4520231b823c053b7992758866033a854e8); /// @dev The hash of the meta that describes the contract. bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xf2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b); @@ -45,7 +45,7 @@ bytes constant SUB_PARSER_WORD_PARSERS = /// These positional indexes all map to the same indexes looked up in the parse /// meta. bytes constant OPERAND_HANDLER_FUNCTION_POINTERS = - hex"1c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c621cfe1c391c391c391c391c391c391c391c391c391c391c391c391c39"; + hex"1bec1bec1bec1bec1bec1bec1bec1bec1bec1bec1bec1bec1bec1bec1bec1bec1bec1c151cb11bec1bec1bec1bec1bec1bec1bec1bec1bec1bec1bec1bec1bec"; /// @dev Every two bytes is a function pointer for a literal parser. /// Literal dispatches are determined by the first byte(s) of the literal diff --git a/src/generated/candidate/RaindexV6SubParser.sol b/src/generated/candidate/RaindexV6SubParser.sol index e22e959b01..0c9c583d85 100644 --- a/src/generated/candidate/RaindexV6SubParser.sol +++ b/src/generated/candidate/RaindexV6SubParser.sol @@ -5,19 +5,19 @@ pragma solidity ^0.8.25; // THIS FILE IS AUTOGENERATED BY THE BUILD SCRIPT. DO NOT EDIT BY HAND. /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x704aadc1ed56f63ff918ab219e6681a5d2851d774e2ee136bbe7904ea3b2fdcd); +bytes32 constant BYTECODE_HASH = bytes32(0x774bae1bbf3a2c98469fc7efceabf4520231b823c053b7992758866033a854e8); /// @dev The deterministic deploy address of the contract when deployed via /// the Zoltu factory. -address constant DEPLOYED_ADDRESS = address(0x09Bc7AF266012F44fb41D8Bd682da931666605e1); +address constant DEPLOYED_ADDRESS = address(0x3c76EC10347D86DB2fDF79a8b52f5FB923E27C30); /// @dev The creation bytecode of the contract. bytes constant CREATION_CODE = - hex"6080604052348015600e575f80fd5b506125d38061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046122ad565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d9190612309565b6100ce6100c936600461232f565b610bc5565b60405161009d939291906123d9565b6040517ff2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b815260200161009d565b61011e61011936600461232f565b610d09565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610d41565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e660046001612436565b6101f1906002612436565b6101fc906001612436565b610207906001612436565b6001600160401b0381111561021e5761021e61231b565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6122a381526020019060019003908161026d5790505090506116cc815f8151811061029a5761029a612455565b60200260200101906001600160401b031690816001600160401b0316815250506116e9816001815181106102d0576102d0612455565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122a38152602001906001900390816103005790505090506116f8815f8151811061032d5761032d612455565b60200260200101906001600160401b031690816001600160401b0316815250506117078160018151811061036357610363612455565b60200260200101906001600160401b031690816001600160401b0316815250506117168160028151811061039957610399612455565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122a38152602001906001900390816103c9579050509050611726815f815181106103f6576103f6612455565b60200260200101906001600160401b031690816001600160401b0316815250506117358160018151811061042c5761042c612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a381526020019060019003908161045c579050509050611745815f8151811061048957610489612455565b60200260200101906001600160401b031690816001600160401b031681525050611754816001815181106104bf576104bf612455565b60200260200101906001600160401b031690816001600160401b031681525050611764816002815181106104f5576104f5612455565b60200260200101906001600160401b031690816001600160401b0316815250506117748160038151811061052b5761052b612455565b60200260200101906001600160401b031690816001600160401b0316815250506117838160048151811061056157610561612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a3815260200190600190039081610591579050509050611793815f815181106105be576105be612455565b60200260200101906001600160401b031690816001600160401b0316815250506117a2816001815181106105f4576105f4612455565b60200260200101906001600160401b031690816001600160401b0316815250506117b28160028151811061062a5761062a612455565b60200260200101906001600160401b031690816001600160401b0316815250506117c28160038151811061066057610660612455565b60200260200101906001600160401b031690816001600160401b0316815250506117d28160048151811061069657610696612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a38152602001906001900390816106c55790505090506117e1815f815181106106f2576106f2612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a38152602001906001900390816107215790505090506117f0815f8151811061074e5761074e612455565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612455565b602002602001018190525085886001815181106107a0576107a0612455565b602002602001018190525084886002815181106107bf576107bf612455565b602002602001018190525083886003815181106107de576107de612455565b602002602001018190525082886004815181106107fd576107fd612455565b6020026020010181905250818860058151811061081c5761081c612455565b6020026020010181905250808860068151811061083b5761083b612455565b602090810291909101015260408051600680825260e082019092525f91816020015b6122a381526020019060019003908161085d5790505090506116cc815f8151811061088a5761088a612455565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816001815181106108c0576108c0612455565b60200260200101906001600160401b031690816001600160401b031681525050611707816002815181106108f6576108f6612455565b60200260200101906001600160401b031690816001600160401b0316815250506117168160038151811061092c5761092c612455565b60200260200101906001600160401b031690816001600160401b0316815250506118258160048151811061096257610962612455565b60200260200101906001600160401b031690816001600160401b0316815250506118358160058151811061099857610998612455565b6001600160401b039092166020928302919091019091015280896109be60066001612436565b815181106109ce576109ce612455565b602090810291909101015260408051600780825261010082019092525f91816020015b6122a38152602001906001900390816109f15790505090506116cc815f81518110610a1e57610a1e612455565b60200260200101906001600160401b031690816001600160401b0316815250506116f881600181518110610a5457610a54612455565b60200260200101906001600160401b031690816001600160401b03168152505061170781600281518110610a8a57610a8a612455565b60200260200101906001600160401b031690816001600160401b03168152505061171681600381518110610ac057610ac0612455565b60200260200101906001600160401b031690816001600160401b03168152505061182581600481518110610af657610af6612455565b60200260200101906001600160401b031690816001600160401b03168152505061183581600581518110610b2c57610b2c612455565b60200260200101906001600160401b031690816001600160401b03168152505061184581600681518110610b6257610b62612455565b6001600160401b0390921660209283029190910190910152808a610b8860066002612436565b81518110610b9857610b98612455565b602090810291909101015289610bb5610bb082611855565b6118b7565b9b50505050505050505050505090565b5f6060805f805f610be587610bd8611946565b610be0611966565b611986565b9250925092505f610bfb82610220015160200190565b90505f8261022001515182610c109190612436565b90505f610c2e83836f07fffffe0000000003ff200000000000611a77565b80925081945050505f80610c4786610240015184611b13565b915091508115610cdc575f610c5c8783611bea565b90506122a35f610c6a611c19565b90505f60028251610c7b919061247d565b9050808510610cac576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610cc58c8c8686565b9e509e509e50505050505050505050505050610d02565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610d31866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610d5060046001612436565b610d5b906002612436565b610d66906001612436565b610d71906001612436565b6001600160401b03811115610d8857610d8861231b565b604051908082528060200260200182016040528015610dbb57816020015b6060815260200190600190039081610da65790505b50604080516002808252606082019092529192505f9190816020015b6122a3815260200190600190039081610dd7579050509050611c39815f81518110610e0457610e04612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610e3a57610e3a612455565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122a3815260200190600190039081610e6a579050509050611c39815f81518110610e9757610e97612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610ecd57610ecd612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600281518110610f0357610f03612455565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122a3815260200190600190039081610f33579050509050611c39815f81518110610f6057610f60612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610f9657610f96612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a3815260200190600190039081610fc6579050509050611c39815f81518110610ff357610ff3612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061102957611029612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061105f5761105f612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061109557611095612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816004815181106110cb576110cb612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a38152602001906001900390816110fb579050509050611c39815f8151811061112857611128612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061115e5761115e612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061119457611194612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816003815181106111ca576111ca612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160048151811061120057611200612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a381526020019060019003908161122f579050509050611c62815f8151811061125c5761125c612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a381526020019060019003908161128b579050509050611cfe815f815181106112b8576112b8612455565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106112eb576112eb612455565b6020026020010181905250858860018151811061130a5761130a612455565b6020026020010181905250848860028151811061132957611329612455565b6020026020010181905250838860038151811061134857611348612455565b6020026020010181905250828860048151811061136757611367612455565b6020026020010181905250818860058151811061138657611386612455565b602002602001018190525080886006815181106113a5576113a5612455565b602090810291909101015260408051600680825260e082019092525f91816020015b6122a38152602001906001900390816113c7579050509050611c39815f815181106113f4576113f4612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061142a5761142a612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061146057611460612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061149657611496612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816004815181106114cc576114cc612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160058151811061150257611502612455565b6001600160401b0390921660209283029190910190910152808961152860066001612436565b8151811061153857611538612455565b602090810291909101015260408051600780825261010082019092525f91816020015b6122a381526020019060019003908161155b579050509050611c39815f8151811061158857611588612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816001815181106115be576115be612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816002815181106115f4576115f4612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061162a5761162a612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160048151811061166057611660612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160058151811061169657611696612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600681518110610b6257610b62612455565b5f6060806116da5f80611db6565b92509250925093509350939050565b5f6060806116da5f6001611db6565b5f6060806116da60015f611db6565b5f6060806116da600180611db6565b5f6060806116da60016002611db6565b5f6060806116da60025f611db6565b5f6060806116da60026001611db6565b5f6060806116da60035f611db6565b5f6060806116da60036001611db6565b5f6060806116da60036002611db6565b5f6060806116da600380611db6565b5f6060806116da60036004611db6565b5f6060806116da60045f611db6565b5f6060806116da60046001611db6565b5f6060806116da60046002611db6565b5f6060806116da60046003611db6565b5f6060806116da600480611db6565b5f6060806116da600585611db6565b5f60608060ff80851690600886901c1661181461180e836006612436565b82611db6565b945094509450505093509350939050565b5f6060806116da60016003611db6565b5f6060806116da60016004611db6565b5f6060806116da60016005611db6565b60605f61186183611e38565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156118ac57602083515102806020855101835e6020939093019201611889565b509195945050505050565b60605f82516002026001600160401b038111156118d6576118d661231b565b6040519080825280601f01601f191660200182016040528015611900576020820181803683370190505b50905061ffff80196020850160208651028101600285015b8183101561193a57805183518616908516178152602090920191600201611918565b50939695505050505050565b60606040518060e0016040528060a281526020016124f160a29139905090565b606060405180606001604052806040815260200161259360409139905090565b5f80611a156040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff600588015116600588019750808852602081018801915050611a6187878760405180602001604052805f815250611e66565b915080826101e001819052505093509350939050565b5f808060018187870360208111611a8e5780611a91565b60205b915050875192505b8519600184841a1b16158183101615611ab757600182019150611a99565b9681019660208290036008810293841c90931b92611b025760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610ca391600401612309565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611bd85760018301516021909301805190935f90819060ff168180611b5d838e612017565b915091508186165f03611b7f575f809b509b5050505050505050505050611be3565b5f87611b8f600185038916612042565b016004028b015195505062ffffff9081169350841683039150611bc39050575060019750601c1a9550611be3945050505050565b611bcc83612042565b84019350505050611b34565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611c109083565b95945050505050565b60606040518060600160405280604081526020016124b160409139905090565b5f81515f14611c5b576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611cbf575060208101516001600160e01b038116601b0b60e082901d5f611c908383836120fb565b905061ffff811115611cb557604051631e4e01d760e21b815260040160405180910390fd5b9250611cf9915050565b81515f03611ce057604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611d9357602082015160408301516001600160e01b038216601b0b60e083901d5f611d308383836120fb565b6001600160e01b038516601b0b935060e085901d925090505f611d548484836120fb565b905060ff821180611d65575060ff81115b15611d8357604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611cf99350505050565b600282511015611ce057604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611dc9575060ff84115b15611df157604051639b0f326160e01b81526004810186905260248101859052604401610ca3565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611e5f5781515183019250602082019150611e45565b5050919050565b611ef36040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611f7857611f7861231b565b604051908082528060200260200182016040528015611fa1578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611c10565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611be3575060019250929050565b5f5f1982036120545750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61210986868661213d565b91509150806121345760405162bc8ecf60e31b81526004810187905260248101869052604401610ca3565b50949350505050565b5f805f85121561216a57604051634a7d166b60e01b81526004810186905260248101859052604401610ca3565b845f0361217c57505f90506001611b0b565b8460ff84168501858112156121ae5760405163d556b11160e01b81526004810188905260248101879052604401610ca3565b5f805f8312156121fa57604c198312156121d1575f809550955050505050611b0b565b825f03600a0a91508184816121e8576121e8612469565b0495505084029091149150611b0b9050565b5f83131561229357604d8313156122375760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b82600a0a9150815f198161224d5761224d612469565b048411156122815760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b5091909102925060019150611b0b9050565b8360019550955050505050611b0b565b6122ab61249c565b565b5f602082840312156122bd575f80fd5b81356001600160e01b0319811681146122d4575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6122d460208301846122db565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561233f575f80fd5b81356001600160401b0380821115612355575f80fd5b818401915084601f830112612368575f80fd5b81358181111561237a5761237a61231b565b604051601f8201601f19908116603f011681019083821181831017156123a2576123a261231b565b816040528281528760208487010111156123ba575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f6020606060208401526123f560608401866122db565b8381036040850152845180825260208087019201905f5b818110156124285783518352928401929184019160010161240c565b509098975050505050505050565b808201808211156101d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261249757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfe16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e117f016cc16f8170717161825183516cc16f8170717161825183518450101180010800082000100010480300038412a001810000010020004200004002038038ff54900cc66c61ff3dcab0616592209895f0b16fec9301b02e0920c5bfe561d21609201e959460b1974270f844db208bcd3bf1e989376111049db13b934301a0ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6119d260cc107b9bfc0eec7ade15cba2891c6b14a512792bdb02e0f147185655891c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c621cfe1c391c391c391c391c391c391c391c391c391c391c391c391c39"; + hex"6080604052348015600e575f80fd5b5061262e8061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046122e9565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d9190612345565b6100ce6100c936600461236b565b610bc5565b60405161009d93929190612415565b6040517ff2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b815260200161009d565b61011e61011936600461236b565b610d09565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610d41565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e660046001612486565b6101f1906002612486565b6101fc906001612486565b610207906001612486565b6001600160401b0381111561021e5761021e612357565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6122df81526020019060019003908161026d5790505090506116cc815f8151811061029a5761029a612499565b60200260200101906001600160401b031690816001600160401b0316815250506116e9816001815181106102d0576102d0612499565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122df8152602001906001900390816103005790505090506116f8815f8151811061032d5761032d612499565b60200260200101906001600160401b031690816001600160401b0316815250506117078160018151811061036357610363612499565b60200260200101906001600160401b031690816001600160401b0316815250506117168160028151811061039957610399612499565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122df8152602001906001900390816103c9579050509050611726815f815181106103f6576103f6612499565b60200260200101906001600160401b031690816001600160401b0316815250506117358160018151811061042c5761042c612499565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122df81526020019060019003908161045c579050509050611745815f8151811061048957610489612499565b60200260200101906001600160401b031690816001600160401b031681525050611754816001815181106104bf576104bf612499565b60200260200101906001600160401b031690816001600160401b031681525050611764816002815181106104f5576104f5612499565b60200260200101906001600160401b031690816001600160401b0316815250506117748160038151811061052b5761052b612499565b60200260200101906001600160401b031690816001600160401b0316815250506117838160048151811061056157610561612499565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122df815260200190600190039081610591579050509050611793815f815181106105be576105be612499565b60200260200101906001600160401b031690816001600160401b0316815250506117a2816001815181106105f4576105f4612499565b60200260200101906001600160401b031690816001600160401b0316815250506117b28160028151811061062a5761062a612499565b60200260200101906001600160401b031690816001600160401b0316815250506117c28160038151811061066057610660612499565b60200260200101906001600160401b031690816001600160401b0316815250506117d28160048151811061069657610696612499565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122df8152602001906001900390816106c55790505090506117e1815f815181106106f2576106f2612499565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122df8152602001906001900390816107215790505090506117f0815f8151811061074e5761074e612499565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612499565b602002602001018190525085886001815181106107a0576107a0612499565b602002602001018190525084886002815181106107bf576107bf612499565b602002602001018190525083886003815181106107de576107de612499565b602002602001018190525082886004815181106107fd576107fd612499565b6020026020010181905250818860058151811061081c5761081c612499565b6020026020010181905250808860068151811061083b5761083b612499565b602090810291909101015260408051600680825260e082019092525f91816020015b6122df81526020019060019003908161085d5790505090506116cc815f8151811061088a5761088a612499565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816001815181106108c0576108c0612499565b60200260200101906001600160401b031690816001600160401b031681525050611707816002815181106108f6576108f6612499565b60200260200101906001600160401b031690816001600160401b0316815250506117168160038151811061092c5761092c612499565b60200260200101906001600160401b031690816001600160401b0316815250506118258160048151811061096257610962612499565b60200260200101906001600160401b031690816001600160401b0316815250506118358160058151811061099857610998612499565b6001600160401b039092166020928302919091019091015280896109be60066001612486565b815181106109ce576109ce612499565b602090810291909101015260408051600780825261010082019092525f91816020015b6122df8152602001906001900390816109f15790505090506116cc815f81518110610a1e57610a1e612499565b60200260200101906001600160401b031690816001600160401b0316815250506116f881600181518110610a5457610a54612499565b60200260200101906001600160401b031690816001600160401b03168152505061170781600281518110610a8a57610a8a612499565b60200260200101906001600160401b031690816001600160401b03168152505061171681600381518110610ac057610ac0612499565b60200260200101906001600160401b031690816001600160401b03168152505061182581600481518110610af657610af6612499565b60200260200101906001600160401b031690816001600160401b03168152505061183581600581518110610b2c57610b2c612499565b60200260200101906001600160401b031690816001600160401b03168152505061184581600681518110610b6257610b62612499565b6001600160401b0390921660209283029190910190910152808a610b8860066002612486565b81518110610b9857610b98612499565b602090810291909101015289610bb5610bb082611855565b61186a565b9b50505050505050505050505090565b5f6060805f805f610be587610bd86118f9565b610be0611919565b611939565b9250925092505f610bfb82610220015160200190565b90505f8261022001515182610c109190612486565b90505f610c2e83836f07fffffe0000000003ff200000000000611a2a565b80925081945050505f80610c4786610240015184611ac6565b915091508115610cdc575f610c5c8783611b9d565b90506122df5f610c6a611bcc565b90505f60028251610c7b91906124c1565b9050808510610cac576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610cc58c8c8686565b9e509e509e50505050505050505050505050610d02565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610d31866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610d5060046001612486565b610d5b906002612486565b610d66906001612486565b610d71906001612486565b6001600160401b03811115610d8857610d88612357565b604051908082528060200260200182016040528015610dbb57816020015b6060815260200190600190039081610da65790505b50604080516002808252606082019092529192505f9190816020015b6122df815260200190600190039081610dd7579050509050611bec815f81518110610e0457610e04612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec81600181518110610e3a57610e3a612499565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122df815260200190600190039081610e6a579050509050611bec815f81518110610e9757610e97612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec81600181518110610ecd57610ecd612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec81600281518110610f0357610f03612499565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122df815260200190600190039081610f33579050509050611bec815f81518110610f6057610f60612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec81600181518110610f9657610f96612499565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122df815260200190600190039081610fc6579050509050611bec815f81518110610ff357610ff3612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160018151811061102957611029612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160028151811061105f5761105f612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160038151811061109557611095612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec816004815181106110cb576110cb612499565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122df8152602001906001900390816110fb579050509050611bec815f8151811061112857611128612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160018151811061115e5761115e612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160028151811061119457611194612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec816003815181106111ca576111ca612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160048151811061120057611200612499565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122df81526020019060019003908161122f579050509050611c15815f8151811061125c5761125c612499565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122df81526020019060019003908161128b579050509050611cb1815f815181106112b8576112b8612499565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106112eb576112eb612499565b6020026020010181905250858860018151811061130a5761130a612499565b6020026020010181905250848860028151811061132957611329612499565b6020026020010181905250838860038151811061134857611348612499565b6020026020010181905250828860048151811061136757611367612499565b6020026020010181905250818860058151811061138657611386612499565b602002602001018190525080886006815181106113a5576113a5612499565b602090810291909101015260408051600680825260e082019092525f91816020015b6122df8152602001906001900390816113c7579050509050611bec815f815181106113f4576113f4612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160018151811061142a5761142a612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160028151811061146057611460612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160038151811061149657611496612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec816004815181106114cc576114cc612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160058151811061150257611502612499565b6001600160401b0390921660209283029190910190910152808961152860066001612486565b8151811061153857611538612499565b602090810291909101015260408051600780825261010082019092525f91816020015b6122df81526020019060019003908161155b579050509050611bec815f8151811061158857611588612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec816001815181106115be576115be612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec816002815181106115f4576115f4612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160038151811061162a5761162a612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160048151811061166057611660612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160058151811061169657611696612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec81600681518110610b6257610b62612499565b5f6060806116da5f80611d69565b92509250925093509350939050565b5f6060806116da5f6001611d69565b5f6060806116da60015f611d69565b5f6060806116da600180611d69565b5f6060806116da60016002611d69565b5f6060806116da60025f611d69565b5f6060806116da60026001611d69565b5f6060806116da60035f611d69565b5f6060806116da60036001611d69565b5f6060806116da60036002611d69565b5f6060806116da600380611d69565b5f6060806116da60036004611d69565b5f6060806116da60045f611d69565b5f6060806116da60046001611d69565b5f6060806116da60046002611d69565b5f6060806116da60046003611d69565b5f6060806116da600480611d69565b5f6060806116da600585611d69565b5f60608060ff80851690600886901c1661181461180e836006612486565b82611d69565b945094509450505093509350939050565b5f6060806116da60016003611d69565b5f6060806116da60016004611d69565b5f6060806116da60016005611d69565b6060815f61186282611deb565b949350505050565b60605f82516002026001600160401b0381111561188957611889612357565b6040519080825280601f01601f1916602001820160405280156118b3576020820181803683370190505b50905061ffff80196020850160208651028101600285015b818310156118ed578051835186169085161781526020909201916002016118cb565b50939695505050505050565b60606040518060e0016040528060a2815260200161254c60a29139905090565b60606040518060600160405280604081526020016125ee60409139905090565b5f806119c86040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff600588015116600588019750808852602081018801915050611a1487878760405180602001604052805f815250611e59565b915080826101e001819052505093509350939050565b5f808060018187870360208111611a415780611a44565b60205b915050875192505b8519600184841a1b16158183101615611a6a57600182019150611a4c565b9681019660208290036008810293841c90931b92611ab55760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610ca391600401612345565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611b8b5760018301516021909301805190935f90819060ff168180611b10838e61200a565b915091508186165f03611b32575f809b509b5050505050505050505050611b96565b5f87611b42600185038916612035565b016004028b015195505062ffffff9081169350841683039150611b769050575060019750601c1a9550611b96945050505050565b611b7f83612035565b84019350505050611ae7565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611bc39083565b95945050505050565b606060405180606001604052806040815260200161250c60409139905090565b5f81515f14611c0e576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611c72575060208101516001600160e01b038116601b0b60e082901d5f611c438383836120ee565b905061ffff811115611c6857604051631e4e01d760e21b815260040160405180910390fd5b9250611cac915050565b81515f03611c9357604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611d4657602082015160408301516001600160e01b038216601b0b60e083901d5f611ce38383836120ee565b6001600160e01b038516601b0b935060e085901d925090505f611d078484836120ee565b905060ff821180611d18575060ff81115b15611d3657604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611cac9350505050565b600282511015611c9357604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611d7c575060ff84115b15611da457604051639b0f326160e01b81526004810186905260248101859052604401610ca3565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b60605f611df783612130565b90505f611e058260206124e0565b9050606060405190508160200181016040528281526020850160208651028101602083015b81831015611e4d57602083515102806020855101835e6020939093019201611e2a565b50919695505050505050565b611ee66040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611f6b57611f6b612357565b604051908082528060200260200182016040528015611f94578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611bc3565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611b96575060019250929050565b5f5f1982036120475750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f6120fc868686612179565b91509150806121275760405162bc8ecf60e31b81526004810187905260248101869052604401610ca3565b50949350505050565b5f60208201602083510281015b8082101561217257815151928301928084101561216657634e487b715f5260116020526024601cfd5b5060208201915061213d565b5050919050565b5f805f8512156121a657604051634a7d166b60e01b81526004810186905260248101859052604401610ca3565b845f036121b857505f90506001611abe565b8460ff84168501858112156121ea5760405163d556b11160e01b81526004810188905260248101879052604401610ca3565b5f805f83121561223657604c1983121561220d575f809550955050505050611abe565b825f03600a0a9150818481612224576122246124ad565b0495505084029091149150611abe9050565b5f8313156122cf57604d8313156122735760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b82600a0a9150815f1981612289576122896124ad565b048411156122bd5760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b5091909102925060019150611abe9050565b8360019550955050505050611abe565b6122e76124f7565b565b5f602082840312156122f9575f80fd5b81356001600160e01b031981168114612310575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6123106020830184612317565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561237b575f80fd5b81356001600160401b0380821115612391575f80fd5b818401915084601f8301126123a4575f80fd5b8135818111156123b6576123b6612357565b604051601f8201601f19908116603f011681019083821181831017156123de576123de612357565b816040528281528760208487010111156123f6575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f6020606060208401526124316060840186612317565b8381036040850152845180825260208087019201905f5b8181101561246457835183529284019291840191600101612448565b509098975050505050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156101d1576101d1612472565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826124db57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176101d1576101d1612472565b634e487b7160e01b5f52605160045260245ffdfe16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e117f016cc16f8170717161825183516cc16f8170717161825183518450101180010800082000100010480300038412a001810000010020004200004002038038ff54900cc66c61ff3dcab0616592209895f0b16fec9301b02e0920c5bfe561d21609201e959460b1974270f844db208bcd3bf1e989376111049db13b934301a0ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6119d260cc107b9bfc0eec7ade15cba2891c6b14a512792bdb02e0f147185655891c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c621cfe1c391c391c391c391c391c391c391c391c391c391c391c391c39"; /// @dev The runtime bytecode of the contract. bytes constant RUNTIME_CODE = - hex"608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046122ad565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d9190612309565b6100ce6100c936600461232f565b610bc5565b60405161009d939291906123d9565b6040517ff2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b815260200161009d565b61011e61011936600461232f565b610d09565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610d41565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e660046001612436565b6101f1906002612436565b6101fc906001612436565b610207906001612436565b6001600160401b0381111561021e5761021e61231b565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6122a381526020019060019003908161026d5790505090506116cc815f8151811061029a5761029a612455565b60200260200101906001600160401b031690816001600160401b0316815250506116e9816001815181106102d0576102d0612455565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122a38152602001906001900390816103005790505090506116f8815f8151811061032d5761032d612455565b60200260200101906001600160401b031690816001600160401b0316815250506117078160018151811061036357610363612455565b60200260200101906001600160401b031690816001600160401b0316815250506117168160028151811061039957610399612455565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122a38152602001906001900390816103c9579050509050611726815f815181106103f6576103f6612455565b60200260200101906001600160401b031690816001600160401b0316815250506117358160018151811061042c5761042c612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a381526020019060019003908161045c579050509050611745815f8151811061048957610489612455565b60200260200101906001600160401b031690816001600160401b031681525050611754816001815181106104bf576104bf612455565b60200260200101906001600160401b031690816001600160401b031681525050611764816002815181106104f5576104f5612455565b60200260200101906001600160401b031690816001600160401b0316815250506117748160038151811061052b5761052b612455565b60200260200101906001600160401b031690816001600160401b0316815250506117838160048151811061056157610561612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a3815260200190600190039081610591579050509050611793815f815181106105be576105be612455565b60200260200101906001600160401b031690816001600160401b0316815250506117a2816001815181106105f4576105f4612455565b60200260200101906001600160401b031690816001600160401b0316815250506117b28160028151811061062a5761062a612455565b60200260200101906001600160401b031690816001600160401b0316815250506117c28160038151811061066057610660612455565b60200260200101906001600160401b031690816001600160401b0316815250506117d28160048151811061069657610696612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a38152602001906001900390816106c55790505090506117e1815f815181106106f2576106f2612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a38152602001906001900390816107215790505090506117f0815f8151811061074e5761074e612455565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612455565b602002602001018190525085886001815181106107a0576107a0612455565b602002602001018190525084886002815181106107bf576107bf612455565b602002602001018190525083886003815181106107de576107de612455565b602002602001018190525082886004815181106107fd576107fd612455565b6020026020010181905250818860058151811061081c5761081c612455565b6020026020010181905250808860068151811061083b5761083b612455565b602090810291909101015260408051600680825260e082019092525f91816020015b6122a381526020019060019003908161085d5790505090506116cc815f8151811061088a5761088a612455565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816001815181106108c0576108c0612455565b60200260200101906001600160401b031690816001600160401b031681525050611707816002815181106108f6576108f6612455565b60200260200101906001600160401b031690816001600160401b0316815250506117168160038151811061092c5761092c612455565b60200260200101906001600160401b031690816001600160401b0316815250506118258160048151811061096257610962612455565b60200260200101906001600160401b031690816001600160401b0316815250506118358160058151811061099857610998612455565b6001600160401b039092166020928302919091019091015280896109be60066001612436565b815181106109ce576109ce612455565b602090810291909101015260408051600780825261010082019092525f91816020015b6122a38152602001906001900390816109f15790505090506116cc815f81518110610a1e57610a1e612455565b60200260200101906001600160401b031690816001600160401b0316815250506116f881600181518110610a5457610a54612455565b60200260200101906001600160401b031690816001600160401b03168152505061170781600281518110610a8a57610a8a612455565b60200260200101906001600160401b031690816001600160401b03168152505061171681600381518110610ac057610ac0612455565b60200260200101906001600160401b031690816001600160401b03168152505061182581600481518110610af657610af6612455565b60200260200101906001600160401b031690816001600160401b03168152505061183581600581518110610b2c57610b2c612455565b60200260200101906001600160401b031690816001600160401b03168152505061184581600681518110610b6257610b62612455565b6001600160401b0390921660209283029190910190910152808a610b8860066002612436565b81518110610b9857610b98612455565b602090810291909101015289610bb5610bb082611855565b6118b7565b9b50505050505050505050505090565b5f6060805f805f610be587610bd8611946565b610be0611966565b611986565b9250925092505f610bfb82610220015160200190565b90505f8261022001515182610c109190612436565b90505f610c2e83836f07fffffe0000000003ff200000000000611a77565b80925081945050505f80610c4786610240015184611b13565b915091508115610cdc575f610c5c8783611bea565b90506122a35f610c6a611c19565b90505f60028251610c7b919061247d565b9050808510610cac576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610cc58c8c8686565b9e509e509e50505050505050505050505050610d02565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610d31866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610d5060046001612436565b610d5b906002612436565b610d66906001612436565b610d71906001612436565b6001600160401b03811115610d8857610d8861231b565b604051908082528060200260200182016040528015610dbb57816020015b6060815260200190600190039081610da65790505b50604080516002808252606082019092529192505f9190816020015b6122a3815260200190600190039081610dd7579050509050611c39815f81518110610e0457610e04612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610e3a57610e3a612455565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122a3815260200190600190039081610e6a579050509050611c39815f81518110610e9757610e97612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610ecd57610ecd612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600281518110610f0357610f03612455565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122a3815260200190600190039081610f33579050509050611c39815f81518110610f6057610f60612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600181518110610f9657610f96612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a3815260200190600190039081610fc6579050509050611c39815f81518110610ff357610ff3612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061102957611029612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061105f5761105f612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061109557611095612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816004815181106110cb576110cb612455565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122a38152602001906001900390816110fb579050509050611c39815f8151811061112857611128612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061115e5761115e612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061119457611194612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816003815181106111ca576111ca612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160048151811061120057611200612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a381526020019060019003908161122f579050509050611c62815f8151811061125c5761125c612455565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122a381526020019060019003908161128b579050509050611cfe815f815181106112b8576112b8612455565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106112eb576112eb612455565b6020026020010181905250858860018151811061130a5761130a612455565b6020026020010181905250848860028151811061132957611329612455565b6020026020010181905250838860038151811061134857611348612455565b6020026020010181905250828860048151811061136757611367612455565b6020026020010181905250818860058151811061138657611386612455565b602002602001018190525080886006815181106113a5576113a5612455565b602090810291909101015260408051600680825260e082019092525f91816020015b6122a38152602001906001900390816113c7579050509050611c39815f815181106113f4576113f4612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160018151811061142a5761142a612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160028151811061146057611460612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061149657611496612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816004815181106114cc576114cc612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160058151811061150257611502612455565b6001600160401b0390921660209283029190910190910152808961152860066001612436565b8151811061153857611538612455565b602090810291909101015260408051600780825261010082019092525f91816020015b6122a381526020019060019003908161155b579050509050611c39815f8151811061158857611588612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816001815181106115be576115be612455565b60200260200101906001600160401b031690816001600160401b031681525050611c39816002815181106115f4576115f4612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160038151811061162a5761162a612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160048151811061166057611660612455565b60200260200101906001600160401b031690816001600160401b031681525050611c398160058151811061169657611696612455565b60200260200101906001600160401b031690816001600160401b031681525050611c3981600681518110610b6257610b62612455565b5f6060806116da5f80611db6565b92509250925093509350939050565b5f6060806116da5f6001611db6565b5f6060806116da60015f611db6565b5f6060806116da600180611db6565b5f6060806116da60016002611db6565b5f6060806116da60025f611db6565b5f6060806116da60026001611db6565b5f6060806116da60035f611db6565b5f6060806116da60036001611db6565b5f6060806116da60036002611db6565b5f6060806116da600380611db6565b5f6060806116da60036004611db6565b5f6060806116da60045f611db6565b5f6060806116da60046001611db6565b5f6060806116da60046002611db6565b5f6060806116da60046003611db6565b5f6060806116da600480611db6565b5f6060806116da600585611db6565b5f60608060ff80851690600886901c1661181461180e836006612436565b82611db6565b945094509450505093509350939050565b5f6060806116da60016003611db6565b5f6060806116da60016004611db6565b5f6060806116da60016005611db6565b60605f61186183611e38565b9050606060405190506020820260200181016040528181526020840160208551028101602083015b818310156118ac57602083515102806020855101835e6020939093019201611889565b509195945050505050565b60605f82516002026001600160401b038111156118d6576118d661231b565b6040519080825280601f01601f191660200182016040528015611900576020820181803683370190505b50905061ffff80196020850160208651028101600285015b8183101561193a57805183518616908516178152602090920191600201611918565b50939695505050505050565b60606040518060e0016040528060a281526020016124f160a29139905090565b606060405180606001604052806040815260200161259360409139905090565b5f80611a156040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff600588015116600588019750808852602081018801915050611a6187878760405180602001604052805f815250611e66565b915080826101e001819052505093509350939050565b5f808060018187870360208111611a8e5780611a91565b60205b915050875192505b8519600184841a1b16158183101615611ab757600182019150611a99565b9681019660208290036008810293841c90931b92611b025760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610ca391600401612309565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611bd85760018301516021909301805190935f90819060ff168180611b5d838e612017565b915091508186165f03611b7f575f809b509b5050505050505050505050611be3565b5f87611b8f600185038916612042565b016004028b015195505062ffffff9081169350841683039150611bc39050575060019750601c1a9550611be3945050505050565b611bcc83612042565b84019350505050611b34565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611c109083565b95945050505050565b60606040518060600160405280604081526020016124b160409139905090565b5f81515f14611c5b576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611cbf575060208101516001600160e01b038116601b0b60e082901d5f611c908383836120fb565b905061ffff811115611cb557604051631e4e01d760e21b815260040160405180910390fd5b9250611cf9915050565b81515f03611ce057604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611d9357602082015160408301516001600160e01b038216601b0b60e083901d5f611d308383836120fb565b6001600160e01b038516601b0b935060e085901d925090505f611d548484836120fb565b905060ff821180611d65575060ff81115b15611d8357604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611cf99350505050565b600282511015611ce057604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611dc9575060ff84115b15611df157604051639b0f326160e01b81526004810186905260248101859052604401610ca3565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b5f60208201602083510281015b80821015611e5f5781515183019250602082019150611e45565b5050919050565b611ef36040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611f7857611f7861231b565b604051908082528060200260200182016040528015611fa1578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611c10565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611be3575060019250929050565b5f5f1982036120545750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f61210986868661213d565b91509150806121345760405162bc8ecf60e31b81526004810187905260248101869052604401610ca3565b50949350505050565b5f805f85121561216a57604051634a7d166b60e01b81526004810186905260248101859052604401610ca3565b845f0361217c57505f90506001611b0b565b8460ff84168501858112156121ae5760405163d556b11160e01b81526004810188905260248101879052604401610ca3565b5f805f8312156121fa57604c198312156121d1575f809550955050505050611b0b565b825f03600a0a91508184816121e8576121e8612469565b0495505084029091149150611b0b9050565b5f83131561229357604d8313156122375760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b82600a0a9150815f198161224d5761224d612469565b048411156122815760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b5091909102925060019150611b0b9050565b8360019550955050505050611b0b565b6122ab61249c565b565b5f602082840312156122bd575f80fd5b81356001600160e01b0319811681146122d4575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6122d460208301846122db565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561233f575f80fd5b81356001600160401b0380821115612355575f80fd5b818401915084601f830112612368575f80fd5b81358181111561237a5761237a61231b565b604051601f8201601f19908116603f011681019083821181831017156123a2576123a261231b565b816040528281528760208487010111156123ba575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f6020606060208401526123f560608401866122db565b8381036040850152845180825260208087019201905f5b818110156124285783518352928401929184019160010161240c565b509098975050505050505050565b808201808211156101d157634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8261249757634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52605160045260245ffdfe16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e117f016cc16f8170717161825183516cc16f8170717161825183518450101180010800082000100010480300038412a001810000010020004200004002038038ff54900cc66c61ff3dcab0616592209895f0b16fec9301b02e0920c5bfe561d21609201e959460b1974270f844db208bcd3bf1e989376111049db13b934301a0ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6119d260cc107b9bfc0eec7ade15cba2891c6b14a512792bdb02e0f147185655891c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c621cfe1c391c391c391c391c391c391c391c391c391c391c391c391c39"; + hex"608060405234801561000f575f80fd5b506004361061007a575f3560e01c80636f5aa28d116100585780636f5aa28d146100dd578063c6c0cbb61461010b578063ccf4477514610135578063d6d8c9a814610148575f80fd5b806301ffc9a71461007e578063336284d4146100a6578063570c7a63146100bb575b5f80fd5b61009161008c3660046122e9565b610150565b60405190151581526020015b60405180910390f35b6100ae6101d7565b60405161009d9190612345565b6100ce6100c936600461236b565b610bc5565b60405161009d93929190612415565b6040517ff2d0eca454c544ab10f9991c019349475a416e38494f112a50807174c3000d0b815260200161009d565b61011e61011936600461236b565b610d09565b60408051921515835260208301919091520161009d565b60408051602081019091525f81526100ae565b6100ae610d41565b5f6001600160e01b031982166391ccb1d560e01b148061018057506001600160e01b03198216636f5aa28d60e01b145b8061019b57506001600160e01b03198216631a2c8edd60e01b145b806101b657506001600160e01b03198216630cd8a13560e21b145b806101d157506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f6101e660046001612486565b6101f1906002612486565b6101fc906001612486565b610207906001612486565b6001600160401b0381111561021e5761021e612357565b60405190808252806020026020018201604052801561025157816020015b606081526020019060019003908161023c5790505b50604080516002808252606082019092529192505f9190816020015b6122df81526020019060019003908161026d5790505090506116cc815f8151811061029a5761029a612499565b60200260200101906001600160401b031690816001600160401b0316815250506116e9816001815181106102d0576102d0612499565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122df8152602001906001900390816103005790505090506116f8815f8151811061032d5761032d612499565b60200260200101906001600160401b031690816001600160401b0316815250506117078160018151811061036357610363612499565b60200260200101906001600160401b031690816001600160401b0316815250506117168160028151811061039957610399612499565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122df8152602001906001900390816103c9579050509050611726815f815181106103f6576103f6612499565b60200260200101906001600160401b031690816001600160401b0316815250506117358160018151811061042c5761042c612499565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122df81526020019060019003908161045c579050509050611745815f8151811061048957610489612499565b60200260200101906001600160401b031690816001600160401b031681525050611754816001815181106104bf576104bf612499565b60200260200101906001600160401b031690816001600160401b031681525050611764816002815181106104f5576104f5612499565b60200260200101906001600160401b031690816001600160401b0316815250506117748160038151811061052b5761052b612499565b60200260200101906001600160401b031690816001600160401b0316815250506117838160048151811061056157610561612499565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122df815260200190600190039081610591579050509050611793815f815181106105be576105be612499565b60200260200101906001600160401b031690816001600160401b0316815250506117a2816001815181106105f4576105f4612499565b60200260200101906001600160401b031690816001600160401b0316815250506117b28160028151811061062a5761062a612499565b60200260200101906001600160401b031690816001600160401b0316815250506117c28160038151811061066057610660612499565b60200260200101906001600160401b031690816001600160401b0316815250506117d28160048151811061069657610696612499565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122df8152602001906001900390816106c55790505090506117e1815f815181106106f2576106f2612499565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122df8152602001906001900390816107215790505090506117f0815f8151811061074e5761074e612499565b60200260200101906001600160401b031690816001600160401b03168152505086885f8151811061078157610781612499565b602002602001018190525085886001815181106107a0576107a0612499565b602002602001018190525084886002815181106107bf576107bf612499565b602002602001018190525083886003815181106107de576107de612499565b602002602001018190525082886004815181106107fd576107fd612499565b6020026020010181905250818860058151811061081c5761081c612499565b6020026020010181905250808860068151811061083b5761083b612499565b602090810291909101015260408051600680825260e082019092525f91816020015b6122df81526020019060019003908161085d5790505090506116cc815f8151811061088a5761088a612499565b60200260200101906001600160401b031690816001600160401b0316815250506116f8816001815181106108c0576108c0612499565b60200260200101906001600160401b031690816001600160401b031681525050611707816002815181106108f6576108f6612499565b60200260200101906001600160401b031690816001600160401b0316815250506117168160038151811061092c5761092c612499565b60200260200101906001600160401b031690816001600160401b0316815250506118258160048151811061096257610962612499565b60200260200101906001600160401b031690816001600160401b0316815250506118358160058151811061099857610998612499565b6001600160401b039092166020928302919091019091015280896109be60066001612486565b815181106109ce576109ce612499565b602090810291909101015260408051600780825261010082019092525f91816020015b6122df8152602001906001900390816109f15790505090506116cc815f81518110610a1e57610a1e612499565b60200260200101906001600160401b031690816001600160401b0316815250506116f881600181518110610a5457610a54612499565b60200260200101906001600160401b031690816001600160401b03168152505061170781600281518110610a8a57610a8a612499565b60200260200101906001600160401b031690816001600160401b03168152505061171681600381518110610ac057610ac0612499565b60200260200101906001600160401b031690816001600160401b03168152505061182581600481518110610af657610af6612499565b60200260200101906001600160401b031690816001600160401b03168152505061183581600581518110610b2c57610b2c612499565b60200260200101906001600160401b031690816001600160401b03168152505061184581600681518110610b6257610b62612499565b6001600160401b0390921660209283029190910190910152808a610b8860066002612486565b81518110610b9857610b98612499565b602090810291909101015289610bb5610bb082611855565b61186a565b9b50505050505050505050505090565b5f6060805f805f610be587610bd86118f9565b610be0611919565b611939565b9250925092505f610bfb82610220015160200190565b90505f8261022001515182610c109190612486565b90505f610c2e83836f07fffffe0000000003ff200000000000611a2a565b80925081945050505f80610c4786610240015184611ac6565b915091508115610cdc575f610c5c8783611b9d565b90506122df5f610c6a611bcc565b90505f60028251610c7b91906124c1565b9050808510610cac576040516303bdd1b160e51b815260048101869052602481018290526044015b60405180910390fd5b6001850160020282015161ffff169250610cc58c8c8686565b9e509e509e50505050505050505050505050610d02565b5050604080515f80825281830190925260208101828152919a5090985096505050505050505b9193909250565b5f805f805f610d31866002810151815160228084019461ffff93909316840101920160200190565b505f988998509650505050505050565b60605f610d5060046001612486565b610d5b906002612486565b610d66906001612486565b610d71906001612486565b6001600160401b03811115610d8857610d88612357565b604051908082528060200260200182016040528015610dbb57816020015b6060815260200190600190039081610da65790505b50604080516002808252606082019092529192505f9190816020015b6122df815260200190600190039081610dd7579050509050611bec815f81518110610e0457610e04612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec81600181518110610e3a57610e3a612499565b6001600160401b039290921660209283029190910190910152604080516003808252608082019092525f91816020015b6122df815260200190600190039081610e6a579050509050611bec815f81518110610e9757610e97612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec81600181518110610ecd57610ecd612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec81600281518110610f0357610f03612499565b6001600160401b039290921660209283029190910190910152604080516002808252606082019092525f91816020015b6122df815260200190600190039081610f33579050509050611bec815f81518110610f6057610f60612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec81600181518110610f9657610f96612499565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122df815260200190600190039081610fc6579050509050611bec815f81518110610ff357610ff3612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160018151811061102957611029612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160028151811061105f5761105f612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160038151811061109557611095612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec816004815181106110cb576110cb612499565b6001600160401b03929092166020928302919091019091015260408051600580825260c082019092525f91816020015b6122df8152602001906001900390816110fb579050509050611bec815f8151811061112857611128612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160018151811061115e5761115e612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160028151811061119457611194612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec816003815181106111ca576111ca612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160048151811061120057611200612499565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122df81526020019060019003908161122f579050509050611c15815f8151811061125c5761125c612499565b6001600160401b0392909216602092830291909101909101526040805160018082528183019092525f91816020015b6122df81526020019060019003908161128b579050509050611cb1815f815181106112b8576112b8612499565b60200260200101906001600160401b031690816001600160401b03168152505086885f815181106112eb576112eb612499565b6020026020010181905250858860018151811061130a5761130a612499565b6020026020010181905250848860028151811061132957611329612499565b6020026020010181905250838860038151811061134857611348612499565b6020026020010181905250828860048151811061136757611367612499565b6020026020010181905250818860058151811061138657611386612499565b602002602001018190525080886006815181106113a5576113a5612499565b602090810291909101015260408051600680825260e082019092525f91816020015b6122df8152602001906001900390816113c7579050509050611bec815f815181106113f4576113f4612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160018151811061142a5761142a612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160028151811061146057611460612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160038151811061149657611496612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec816004815181106114cc576114cc612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160058151811061150257611502612499565b6001600160401b0390921660209283029190910190910152808961152860066001612486565b8151811061153857611538612499565b602090810291909101015260408051600780825261010082019092525f91816020015b6122df81526020019060019003908161155b579050509050611bec815f8151811061158857611588612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec816001815181106115be576115be612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec816002815181106115f4576115f4612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160038151811061162a5761162a612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160048151811061166057611660612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec8160058151811061169657611696612499565b60200260200101906001600160401b031690816001600160401b031681525050611bec81600681518110610b6257610b62612499565b5f6060806116da5f80611d69565b92509250925093509350939050565b5f6060806116da5f6001611d69565b5f6060806116da60015f611d69565b5f6060806116da600180611d69565b5f6060806116da60016002611d69565b5f6060806116da60025f611d69565b5f6060806116da60026001611d69565b5f6060806116da60035f611d69565b5f6060806116da60036001611d69565b5f6060806116da60036002611d69565b5f6060806116da600380611d69565b5f6060806116da60036004611d69565b5f6060806116da60045f611d69565b5f6060806116da60046001611d69565b5f6060806116da60046002611d69565b5f6060806116da60046003611d69565b5f6060806116da600480611d69565b5f6060806116da600585611d69565b5f60608060ff80851690600886901c1661181461180e836006612486565b82611d69565b945094509450505093509350939050565b5f6060806116da60016003611d69565b5f6060806116da60016004611d69565b5f6060806116da60016005611d69565b6060815f61186282611deb565b949350505050565b60605f82516002026001600160401b0381111561188957611889612357565b6040519080825280601f01601f1916602001820160405280156118b3576020820181803683370190505b50905061ffff80196020850160208651028101600285015b818310156118ed578051835186169085161781526020909201916002016118cb565b50939695505050505050565b60606040518060e0016040528060a2815260200161254c60a29139905090565b60606040518060600160405280604081526020016125ee60409139905090565b5f806119c86040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b606061ffff600288015116935060ff600388015116925061ffff600588015116600588019750808852602081018801915050611a1487878760405180602001604052805f815250611e59565b915080826101e001819052505093509350939050565b5f808060018187870360208111611a415780611a44565b60205b915050875192505b8519600184841a1b16158183101615611a6a57600182019150611a4c565b9681019660208290036008810293841c90931b92611ab55760408051602081018590520160408051601f198184030181529082905263e47fe8b760e01b8252610ca391600401612345565b50869350909150505b935093915050565b600182810180515f928392600560ff93909316602102870192830192909101835b81831015611b8b5760018301516021909301805190935f90819060ff168180611b10838e61200a565b915091508186165f03611b32575f809b509b5050505050505050505050611b96565b5f87611b42600185038916612035565b016004028b015195505062ffffff9081169350841683039150611b769050575060019750601c1a9550611b96945050505050565b611b7f83612035565b84019350505050611ae7565b5f8095509550505050505b9250929050565b6101c08201516002828102820101516101e08401515f9261ffff9092169190611bc39083565b95945050505050565b606060405180606001604052806040815260200161250c60409139905090565b5f81515f14611c0e576040516304f8b58160e51b815260040160405180910390fd5b505f919050565b5f8151600103611c72575060208101516001600160e01b038116601b0b60e082901d5f611c438383836120ee565b905061ffff811115611c6857604051631e4e01d760e21b815260040160405180910390fd5b9250611cac915050565b81515f03611c9357604051630f16066b60e41b815260040160405180910390fd5b604051630358cd2160e31b815260040160405180910390fd5b919050565b5f8151600203611d4657602082015160408301516001600160e01b038216601b0b60e083901d5f611ce38383836120ee565b6001600160e01b038516601b0b935060e085901d925090505f611d078484836120ee565b905060ff821180611d18575060ff81115b15611d3657604051631e4e01d760e21b815260040160405180910390fd5b60081b179450611cac9350505050565b600282511015611c9357604051630f16066b60e41b815260040160405180910390fd5b5f60608060ff851180611d7c575060ff84115b15611da457604051639b0f326160e01b81526004810186905260248101859052604401610ca3565b6040805160248101909152600386602383015385602283015360106021830153806020830153506004815260408051602081019091525f8152600197919650945092505050565b60605f611df783612130565b90505f611e058260206124e0565b9050606060405190508160200181016040528281526020850160208651028101602083015b81831015611e4d57602083515102806020855101835e6020939093019201611e2a565b50919695505050505050565b611ee66040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020015f81526020015f81526020015f81526020015f81526020015f81526020015f80191681526020016060815260200160608152602001606081526020015f815260200160608152602001606081525090565b5f6040518061026001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f801b81526020015f8152602001600481526020015f81526020015f81526020015f81526020015f801b815260200184815260200185815260200160046001600160401b03811115611f6b57611f6b612357565b604051908082528060200260200182016040528015611f94578160200160208202803683370190505b5081525f602080830182905260408084018b905260609384018a90528051601f01601f19168281528083018252835161ffff191681178452855290840182905283018190529082018190526080820181905260a08201819052610120820181905261014082018190526102008201529050611bc3565b5f80825f528360205360215f2090506001815f1a1b915062ffffff8116611b96575060019250929050565b5f5f1982036120475750610100919050565b507f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f7f5555555555555555555555555555555555555555555555555555555555555555600183901c16909103600281901c7f3333333333333333333333333333333333333333333333333333333333333333908116911601600481901c01167f01010101010101010101010101010101010101010101010101010101010101010260f81c90565b5f805f6120fc868686612179565b91509150806121275760405162bc8ecf60e31b81526004810187905260248101869052604401610ca3565b50949350505050565b5f60208201602083510281015b8082101561217257815151928301928084101561216657634e487b715f5260116020526024601cfd5b5060208201915061213d565b5050919050565b5f805f8512156121a657604051634a7d166b60e01b81526004810186905260248101859052604401610ca3565b845f036121b857505f90506001611abe565b8460ff84168501858112156121ea5760405163d556b11160e01b81526004810188905260248101879052604401610ca3565b5f805f83121561223657604c1983121561220d575f809550955050505050611abe565b825f03600a0a9150818481612224576122246124ad565b0495505084029091149150611abe9050565b5f8313156122cf57604d8313156122735760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b82600a0a9150815f1981612289576122896124ad565b048411156122bd5760405163c849483b60e01b8152600481018a90526024810189905260ff88166044820152606401610ca3565b5091909102925060019150611abe9050565b8360019550955050505050611abe565b6122e76124f7565b565b5f602082840312156122f9575f80fd5b81356001600160e01b031981168114612310575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6123106020830184612317565b634e487b7160e01b5f52604160045260245ffd5b5f6020828403121561237b575f80fd5b81356001600160401b0380821115612391575f80fd5b818401915084601f8301126123a4575f80fd5b8135818111156123b6576123b6612357565b604051601f8201601f19908116603f011681019083821181831017156123de576123de612357565b816040528281528760208487010111156123f6575f80fd5b826020860160208301375f928101602001929092525095945050505050565b83151581525f6020606060208401526124316060840186612317565b8381036040850152845180825260208087019201905f5b8181101561246457835183529284019291840191600101612448565b509098975050505050505050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156101d1576101d1612472565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f826124db57634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176101d1576101d1612472565b634e487b7160e01b5f52605160045260245ffdfe16cc16e916f8170717161726173517451754176417741783179317a217b217c217d217e117f016cc16f8170717161825183516cc16f8170717161825183518450101180010800082000100010480300038412a001810000010020004200004002038038ff54900cc66c61ff3dcab0616592209895f0b16fec9301b02e0920c5bfe561d21609201e959460b1974270f844db208bcd3bf1e989376111049db13b934301a0ae9a00af82a7805c138f40d28083f0742ef2104d561fd1415a13317716a6119d260cc107b9bfc0eec7ade15cba2891c6b14a512792bdb02e0f147185655891c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c391c621cfe1c391c391c391c391c391c391c391c391c391c391c391c391c39"; /// @dev The addresses that MUST already have code on a network before /// this release can be broadcast there, `abi.encode`d as an `address[]` diff --git a/src/lib/LibRaindexSubParser.sol b/src/lib/LibRaindexSubParser.sol index 9aa1a0f9b8..818591ef37 100644 --- a/src/lib/LibRaindexSubParser.sol +++ b/src/lib/LibRaindexSubParser.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.19; import {AuthoringMetaV2, OperandV2} from "rain-interpreter-interface-0.1.0/src/interface/ISubParserV4.sol"; -import {LibUint256Matrix} from "rain-solmem-0.1.3/src/lib/LibUint256Matrix.sol"; +import {LibUint256Matrix} from "rain-solmem-0.1.26/src/lib/LibUint256Matrix.sol"; import {LibSubParse} from "rainlang-0.1.5/src/lib/parse/LibSubParse.sol"; import { CONTEXT_BASE_COLUMN,