From b062b4d2643e70b35f66ca4c66044814ae931308 Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Thu, 15 May 2025 19:00:09 -0400 Subject: [PATCH 01/13] pre-commit --- .gitmodules | 3 + foundry.toml | 1 + remappings.txt | 7 +- script/deploy/Deploy-all.s.sol | 25 + script/deploy/tasks/task_template.json | 19 + .../uerc20-factory/UERC20FactoryDeployer.sol | 28 + .../uerc20-factory/UERC20MetadataDeployer.sol | 21 + .../UERC20SuperchainFactoryDeployer.sol | 28 + .../util-contracts/FeeCollectorDeployer.sol | 2 +- .../v2-core/UniswapV2FactoryDeployer.sol | 2 +- .../v4-periphery/StateViewDeployer.sol | 2 +- .../v4-periphery/V4QuoterDeployer.sol | 2 +- .../contracts/utils/Base64.sol | 64 +- .../contracts/utils/Panic.sol | 57 + .../contracts/utils/Strings.sol | 409 +++++- .../contracts/utils/math/Math.sol | 668 +++++++--- .../contracts/utils/math/SafeCast.sol | 1162 +++++++++++++++++ .../contracts/utils/math/SignedMath.sol | 35 +- .../interfaces/ITokenFactory.sol | 30 + .../interfaces/IUERC20Factory.sol | 37 + .../interfaces/IUERC20SuperchainFactory.sol | 42 + .../libraries/UERC20Metadata.sol | 44 + src/pkgs/uerc20-factory | 1 + 23 files changed, 2487 insertions(+), 202 deletions(-) create mode 100644 src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol create mode 100644 src/briefcase/deployers/uerc20-factory/UERC20MetadataDeployer.sol create mode 100644 src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol create mode 100644 src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Panic.sol create mode 100644 src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/SafeCast.sol create mode 100644 src/briefcase/protocols/uerc20-factory/interfaces/ITokenFactory.sol create mode 100644 src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol create mode 100644 src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol create mode 100644 src/briefcase/protocols/uerc20-factory/libraries/UERC20Metadata.sol create mode 160000 src/pkgs/uerc20-factory diff --git a/.gitmodules b/.gitmodules index 36cd8db5..fc5f35c1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -52,3 +52,6 @@ [submodule "lib/openzeppelin-contracts"] path = lib/openzeppelin-contracts url = https://github.com/Openzeppelin/openzeppelin-contracts +[submodule "src/pkgs/uerc20-factory"] + path = src/pkgs/uerc20-factory + url = git@github.com:Uniswap/uerc20-factory.git diff --git a/foundry.toml b/foundry.toml index 3388540e..02a68f40 100644 --- a/foundry.toml +++ b/foundry.toml @@ -36,6 +36,7 @@ additional_compiler_profiles = [ { name = "v3-periphery-default", optimizer_runs = 1000000, evm_version = "istanbul", via_ir = false }, { name = "permit2", optimizer_runs = 1000000, via_ir = true }, { name = "uniswapx", optimizer_runs = 1000000, via_ir = false }, + { name = "uerc20-factory", optimizer_runs = 50000000, via_ir = false } ] compilation_restrictions = [ diff --git a/remappings.txt b/remappings.txt index dc8c23a4..3b82c369 100644 --- a/remappings.txt +++ b/remappings.txt @@ -24,4 +24,9 @@ permit2=src/pkgs/permit2 @uniswap/lib=lib/solidity-lib @uniswap/v2-core=src/pkgs/v2-core @uniswap/v3-core=src/pkgs/v3-core -@uniswap/v4-core=src/pkgs/v4-core \ No newline at end of file +@uniswap/v4-core=src/pkgs/v4-core +src/pkgs/uerc20-factory/src:@openzeppelin=src/pkgs/uerc20-factory/lib/openzeppelin-contracts +src/pkgs/uerc20-factory/lib/optimism/packages/contracts-bedrock/lib/openzeppelin-contracts-v5:@openzeppelin/contracts/=src/pkgs/uerc20-factory/lib/optimism/packages/contracts-bedrock/lib/openzeppelin-contracts-v5/contracts/ +src/pkgs/uerc20-factory/lib/optimism/packages/contracts-bedrock/:@openzeppelin/contracts/=src/pkgs/uerc20-factory/lib/optimism/packages/contracts-bedrock/lib/openzeppelin-contracts/contracts/ +src/pkgs/uerc20-factory/src:@optimism=src/pkgs/uerc20-factory/lib/optimism/packages/contracts-bedrock +src/pkgs/uerc20-factory/src:@solady=src/pkgs/uerc20-factory/lib/solady \ No newline at end of file diff --git a/script/deploy/Deploy-all.s.sol b/script/deploy/Deploy-all.s.sol index fcb5277b..52f0b767 100644 --- a/script/deploy/Deploy-all.s.sol +++ b/script/deploy/Deploy-all.s.sol @@ -43,6 +43,10 @@ import {WstETHHookDeployer} from '../../src/briefcase/deployers/v4-periphery/Wst import {Script, console2 as console, stdJson} from 'forge-std/Script.sol'; import {VmSafe} from 'forge-std/Vm.sol'; +import {UERC20FactoryDeployer} from '../../src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol'; +import {UERC20SuperchainFactoryDeployer} from + '../../src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol'; + contract Deploy is Script { using stdJson for string; @@ -80,6 +84,8 @@ contract Deploy is Script { deployUtilsContracts(); + deployUERC20Factory(); + vm.stopBroadcast(); if (vm.isContext(VmSafe.ForgeContext.ScriptBroadcast) && config.readBool('.rename')) { @@ -432,6 +438,25 @@ contract Deploy is Script { ); } + function deployUERC20Factory() private { + if (!config.readBoolOr('.protocols.uerc20-factory.deploy', false)) return; + + bool deployUERC20FactoryMainnet = + config.readBoolOr('.protocols.uerc20-factory.contracts.UERC20Factory.deploy', false); + bool deployUERC20SuperchainFactory = + config.readBoolOr('.protocols.uerc20-factory.contracts.UERC20SuperchainFactory.deploy', false); + + if (deployUERC20FactoryMainnet) { + console.log('deploying UERC20 Factory'); + UERC20FactoryDeployer.deploy(); + } + + if (deployUERC20SuperchainFactory) { + console.log('deploying UERC20 Superchain Factory'); + UERC20SuperchainFactoryDeployer.deploy(); + } + } + function weth() internal returns (address) { if (_weth == address(0)) { _weth = config.readAddress('.dependencies.weth.value'); diff --git a/script/deploy/tasks/task_template.json b/script/deploy/tasks/task_template.json index c92951d1..f028ad00 100644 --- a/script/deploy/tasks/task_template.json +++ b/script/deploy/tasks/task_template.json @@ -398,6 +398,25 @@ } } } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": false, + "contracts": { + "UERC20Factory": { + "deploy": false, + "address": null, + "params": {} + }, + "UERC20SuperchainFactory": { + "deploy": false, + "address": null, + "params": {} + } + }, + "lookup": { + "latest": "UERC20Factory" + } } }, "dependencies": { diff --git a/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol new file mode 100644 index 00000000..1d3a2800 --- /dev/null +++ b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT +pragma solidity >= 0.8.0; + +import {IUERC20Factory} from '../../protocols/uerc20-factory/interfaces/IUERC20Factory.sol'; +import {DeployerHelper} from '../DeployerHelper.sol'; +import {UERC20MetadataDeployer} from './UERC20MetadataDeployer.sol'; + +library UERC20FactoryDeployer { + function deploy() internal returns (IUERC20Factory uerc20Factory) { + address uerc20Metadata = UERC20MetadataDeployer.deploy(); + bytes memory initcode_ = abi.encodePacked(initcode(uerc20Metadata)); + uerc20Factory = IUERC20Factory(DeployerHelper.create(initcode_)); + } + + /** + * @dev autogenerated - run `./script/util/create_briefcase.sh` to generate current initcode + * + * @notice This initcode is generated from the following contract: + * - Source Contract: src/pkgs/uerc20-factory/src/factories/UERC20Factory.sol + */ + function initcode(address UERC20MetadataLibrary) internal pure returns (bytes memory) { + return abi.encodePacked( + hex'6080604052348015600e575f5ffd5b506121c28061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80632c0cf9471461004357806394a8b1d414610073578063a5ea11da14610086575b5f5ffd5b6100566100513660046108cf565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109bd565b61030a565b61008e61039c565b60405161006a9190610a6e565b5f806100a983850185610b47565b80519091506001600160a01b031633146100f157805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b6040805160c0810182528a8152602081018a90529081018790526001600160a01b038616606082015260ff8816608082015260a081018290525f806101368c82610c9a565b506020820151600182019061014b9082610c9a565b50604082015160028201556060820151600382018054608085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560a08301518051600484018054919093166001600160a01b031991909116178255602081015190919060058401906101c29082610c9a565b50604082015160028201906101d79082610c9a565b50606082015160038201906101ec9082610c9a565b505083516040515f945061020a93508d92508c918c91602001610d54565b6040516020818303038152906040528051906020012090508060405161022f90610711565b8190604051809103905ff590508015801561024c573d5f5f3e3d5ffd5b5092505f8061025b818061071e565b610268600183015f61071e565b5f600283018190556003830180546001600160a81b03191690556004830180546001600160a01b0319168155906102a2600585018261071e565b6102af600283015f61071e565b6102bc600383015f61071e565b50506040516001600160a01b03861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050979650505050505050565b5f5f858585856040516020016103239493929190610d54565b6040516020818303038152906040528051906020012090505f6040518060200161034c90610711565b601f1982820381018352601f90910116604081905261036e9190602001610d9d565b6040516020818303038152906040528051906020012090506103918282306106df565b979650505050505050565b6103a4610758565b5f6040518060c00160405290815f820180546103bf90610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546103eb90610c16565b80156104365780601f1061040d57610100808354040283529160200191610436565b820191905f5260205f20905b81548152906001019060200180831161041957829003601f168201915b5050505050815260200160018201805461044f90610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461047b90610c16565b80156104c65780601f1061049d576101008083540402835291602001916104c6565b820191905f5260205f20905b8154815290600101906020018083116104a957829003601f168201915b5050509183525050600282015460208083019190915260038301546001600160a01b03808216604080860191909152600160a01b90920460ff1660608501528151608080820190935260048601805490921681526005860180549390950194909391929184019161053690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461056290610c16565b80156105ad5780601f10610584576101008083540402835291602001916105ad565b820191905f5260205f20905b81548152906001019060200180831161059057829003601f168201915b505050505081526020016002820180546105c690610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546105f290610c16565b801561063d5780601f106106145761010080835404028352916020019161063d565b820191905f5260205f20905b81548152906001019060200180831161062057829003601f168201915b5050505050815260200160038201805461065690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461068290610c16565b80156106cd5780601f106106a4576101008083540402835291602001916106cd565b820191905f5260205f20905b8154815290600101906020018083116106b057829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b61140280610db483390190565b50805461072a90610c16565b5f825580601f10610739575050565b601f0160209004905f5260205f209081019061075591906107c7565b50565b6040518060c0016040528060608152602001606081526020015f81526020015f6001600160a01b031681526020015f60ff1681526020016107c260405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b808211156107db575f81556001016107c8565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715610815576108156107df565b60405290565b5f82601f83011261082a575f5ffd5b81356001600160401b03811115610843576108436107df565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610871576108716107df565b604052818152838201602001851015610888575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146108b4575f5ffd5b919050565b80356001600160a01b03811681146108b4575f5ffd5b5f5f5f5f5f5f5f60c0888a0312156108e5575f5ffd5b87356001600160401b038111156108fa575f5ffd5b6109068a828b0161081b565b97505060208801356001600160401b03811115610921575f5ffd5b61092d8a828b0161081b565b96505061093c604089016108a4565b945060608801359350610951608089016108b9565b925060a08801356001600160401b0381111561096b575f5ffd5b88015f80601f83018c1361097d575f5ffd5b5081356001600160401b03811115610993575f5ffd5b6020830191508b60208285010111156109aa575f5ffd5b989b979a50959850939692959293505050565b5f5f5f5f608085870312156109d0575f5ffd5b84356001600160401b038111156109e5575f5ffd5b6109f18782880161081b565b94505060208501356001600160401b03811115610a0c575f5ffd5b610a188782880161081b565b935050610a27604086016108a4565b9150610a35606086016108b9565b905092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f825160c06020840152610a8960e0840182610a40565b90506020840151601f19848303016040850152610aa68282610a40565b9150506040840151606084015260018060a01b03606085015116608084015260ff60808501511660a084015260a0840151601f198483030160c085015260018060a01b038151168252602081015160806020840152610b086080840182610a40565b905060408201518382036040850152610b218282610a40565b915050606082015191508281036060840152610b3d8183610a40565b9695505050505050565b5f60208284031215610b57575f5ffd5b81356001600160401b03811115610b6c575f5ffd5b820160808185031215610b7d575f5ffd5b610b856107f3565b610b8e826108b9565b815260208201356001600160401b03811115610ba8575f5ffd5b610bb48682850161081b565b60208301525060408201356001600160401b03811115610bd2575f5ffd5b610bde8682850161081b565b60408301525060608201356001600160401b03811115610bfc575f5ffd5b610c088682850161081b565b606083015250949350505050565b600181811c90821680610c2a57607f821691505b602082108103610c4857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610c9557805f5260205f20601f840160051c81016020851015610c735750805b601f840160051c820191505b81811015610c92575f8155600101610c7f565b50505b505050565b81516001600160401b03811115610cb357610cb36107df565b610cc781610cc18454610c16565b84610c4e565b6020601f821160018114610cf9575f8315610ce25750848201515b5f19600385901b1c1916600184901b178455610c92565b5f84815260208120601f198516915b82811015610d285787850151825560209485019460019092019101610d08565b5084821015610d4557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608081525f610d666080830187610a40565b8281036020840152610d788187610a40565b60ff95909516604084015250506001600160a01b039190911660609091015292915050565b5f82518060208501845e5f92019182525091905056fe60a060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610073919081019061035e565b80519091505f9061008490826104cb565b50602081015160019061009790826104cb565b5060808181015160ff16905260a08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100db90826104cb565b50604082015160028201906100f090826104cb565b506060820151600382019061010590826104cb565b5050506060810151604082015161011c9190610122565b50610585565b6805345cdf77eb68f44c54818101818110156101455763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101d9576101d96101a3565b60405290565b60405160c081016001600160401b03811182821017156101d9576101d96101a3565b5f82601f830112610210575f5ffd5b81516001600160401b03811115610229576102296101a3565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610257576102576101a3565b60405281815283820160200185101561026e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102a0575f5ffd5b919050565b805160ff811681146102a0575f5ffd5b5f608082840312156102c5575f5ffd5b6102cd6101b7565b90506102d88261028a565b815260208201516001600160401b038111156102f2575f5ffd5b6102fe84828501610201565b60208301525060408201516001600160401b0381111561031c575f5ffd5b61032884828501610201565b60408301525060608201516001600160401b03811115610346575f5ffd5b61035284828501610201565b60608301525092915050565b5f6020828403121561036e575f5ffd5b81516001600160401b03811115610383575f5ffd5b820160c08185031215610394575f5ffd5b61039c6101df565b81516001600160401b038111156103b1575f5ffd5b6103bd86828501610201565b82525060208201516001600160401b038111156103d8575f5ffd5b6103e486828501610201565b602083015250604082810151908201526104006060830161028a565b6060820152610411608083016102a5565b608082015260a08201516001600160401b0381111561042e575f5ffd5b61043a868285016102b5565b60a083015250949350505050565b600181811c9082168061045c57607f821691505b60208210810361047a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561019e57805f5260205f20601f840160051c810160208510156104a55750805b601f840160051c820191505b818110156104c4575f81556001016104b1565b5050505050565b81516001600160401b038111156104e4576104e46101a3565b6104f8816104f28454610448565b84610480565b6020601f82116001811461052a575f83156105135750848201515b5f19600385901b1c1916600184901b1784556104c4565b5f84815260208120601f198516915b828110156105595787850151825560209485019460019092019101610539565b508482101561057657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608051610e6561059d5f395f61015e0152610e655ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80633c130d901161008857806395d89b411161006357806395d89b41146101fa578063a9059cbb14610202578063d505accf14610215578063dd62ed3e1461022a575f5ffd5b80633c130d90146101a857806370a08231146101b05780637ecebe00146101d5575f5ffd5b806323b872dd116100c357806323b872dd14610144578063313ce567146101575780633644e51514610188578063392f37e914610190575f5ffd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f5ffd5b6100f161023d565b6040516100fe9190610b47565b60405180910390f35b61011a610115366004610b7b565b6102cc565b60405190151581526020016100fe565b6805345cdf77eb68f44c545b6040519081526020016100fe565b61011a610152366004610ba3565b61034c565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100fe565b61013661041b565b610198610497565b6040516100fe9493929190610bdd565b6100f161064e565b6101366101be366004610c31565b6387a211a2600c9081525f91909152602090205490565b6101366101e3366004610c31565b6338377508600c9081525f91909152602090205490565b6100f161089b565b61011a610210366004610b7b565b6108aa565b610228610223366004610c4a565b610921565b005b610136610238366004610cb7565b610ad5565b60605f805461024b90610ce8565b80601f016020809104026020016040519081016040528092919081815260200182805461027790610ce8565b80156102c25780601f10610299576101008083540402835291602001916102c2565b820191905f5260205f20905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba318821915176102fd57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa35060015b92915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146103a15733602052637f5e9f208117600c526034600c20805480191561039e5780851115610398576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156103c75763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060019392505050565b5f8061042561023d565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916104b590610ce8565b80601f01602080910402602001604051908101604052809291908181526020018280546104e190610ce8565b801561052c5780601f106105035761010080835404028352916020019161052c565b820191905f5260205f20905b81548152906001019060200180831161050f57829003601f168201915b50505050509080600201805461054190610ce8565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90610ce8565b80156105b85780601f1061058f576101008083540402835291602001916105b8565b820191905f5260205f20905b81548152906001019060200180831161059b57829003601f168201915b5050505050908060030180546105cd90610ce8565b80601f01602080910402602001604051908101604052809291908181526020018280546105f990610ce8565b80156106445780601f1061061b57610100808354040283529160200191610644565b820191905f5260205f20905b81548152906001019060200180831161062757829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b03168252600380546060939291602084019161067f90610ce8565b80601f01602080910402602001604051908101604052809291908181526020018280546106ab90610ce8565b80156106f65780601f106106cd576101008083540402835291602001916106f6565b820191905f5260205f20905b8154815290600101906020018083116106d957829003601f168201915b5050505050815260200160028201805461070f90610ce8565b80601f016020809104026020016040519081016040528092919081815260200182805461073b90610ce8565b80156107865780601f1061075d57610100808354040283529160200191610786565b820191905f5260205f20905b81548152906001019060200180831161076957829003601f168201915b5050505050815260200160038201805461079f90610ce8565b80601f01602080910402602001604051908101604052809291908181526020018280546107cb90610ce8565b80156108165780601f106107ed57610100808354040283529160200191610816565b820191905f5260205f20905b8154815290600101906020018083116107f957829003601f168201915b505050919092525050604051631c64c49160e21b815273', + UERC20MetadataLibrary, + hex'926371931244925061085591600401610d20565b5f60405180830381865af415801561086f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108969190810190610da5565b905090565b60606001805461024b90610ce8565b5f6387a211a2600c52335f526020600c208054808411156108d25763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba3188519151761095157633f68539a5f526004601cfd5b5f61095a61023d565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64286101561099957631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610a815763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610afe57505f19610346565b50602052637f5e9f20600c9081525f91909152603490205490565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610b596020830184610b19565b9392505050565b80356001600160a01b0381168114610b76575f5ffd5b919050565b5f5f60408385031215610b8c575f5ffd5b610b9583610b60565b946020939093013593505050565b5f5f5f60608486031215610bb5575f5ffd5b610bbe84610b60565b9250610bcc60208501610b60565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f90610c0090830186610b19565b8281036040840152610c128186610b19565b90508281036060840152610c268185610b19565b979650505050505050565b5f60208284031215610c41575f5ffd5b610b5982610b60565b5f5f5f5f5f5f5f60e0888a031215610c60575f5ffd5b610c6988610b60565b9650610c7760208901610b60565b95506040880135945060608801359350608088013560ff81168114610c9a575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215610cc8575f5ffd5b610cd183610b60565b9150610cdf60208401610b60565b90509250929050565b600181811c90821680610cfc57607f821691505b602082108103610d1a57634e487b7160e01b5f52602260045260245ffd5b50919050565b602080825282516001600160a01b031682820152820151608060408301525f90610d4d60a0840182610b19565b90506040840151601f19848303016060850152610d6a8282610b19565b9150506060840151601f19848303016080850152610d888282610b19565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610db5575f5ffd5b815167ffffffffffffffff811115610dcb575f5ffd5b8201601f81018413610ddb575f5ffd5b805167ffffffffffffffff811115610df557610df5610d91565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610e2457610e24610d91565b604052818152828201602001861015610e3b575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea164736f6c634300081c000aa164736f6c634300081c000a' + ); + } +} diff --git a/src/briefcase/deployers/uerc20-factory/UERC20MetadataDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20MetadataDeployer.sol new file mode 100644 index 00000000..d42d78cb --- /dev/null +++ b/src/briefcase/deployers/uerc20-factory/UERC20MetadataDeployer.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: MIT +pragma solidity >= 0.8.0; + +import {DeployerHelper} from '../DeployerHelper.sol'; + +library UERC20MetadataDeployer { + function deploy() internal returns (address uerc20Metadata) { + bytes memory initcode_ = abi.encodePacked(initcode()); + uerc20Metadata = DeployerHelper.create2(initcode_); + } + + /** + * @dev autogenerated - run `./script/util/create_briefcase.sh` to generate current initcode + * + * @notice This initcode is generated from the following contract: + * - Source Contract: src/pkgs/uerc20-factory/src/libraries/UERC20Metadata.sol + */ + function initcode() internal pure returns (bytes memory) { + return hex''; + } +} diff --git a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol new file mode 100644 index 00000000..f92085c4 --- /dev/null +++ b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: MIT +pragma solidity >= 0.8.0; + +import {IUERC20SuperchainFactory} from '../../protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol'; +import {DeployerHelper} from '../DeployerHelper.sol'; +import {UERC20MetadataDeployer} from './UERC20MetadataDeployer.sol'; + +library UERC20SuperchainFactoryDeployer { + function deploy() internal returns (IUERC20SuperchainFactory uerc20SuperchainFactory) { + address uerc20Metadata = UERC20MetadataDeployer.deploy(); + bytes memory initcode_ = abi.encodePacked(initcode(uerc20Metadata)); + uerc20SuperchainFactory = IUERC20SuperchainFactory(DeployerHelper.create(initcode_)); + } + + /** + * @dev autogenerated - run `./script/util/create_briefcase.sh` to generate current initcode + * + * @notice This initcode is generated from the following contract: + * - Source Contract: src/pkgs/uerc20-factory/src/factories/UERC20SuperchainFactory.sol + */ + function initcode(address UERC20MetadataLibrary) internal pure returns (bytes memory) { + return abi.encodePacked( + hex'6080604052348015600e575f5ffd5b5061258b8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806312e5f742146100435780632c0cf94714610073578063a5ea11da14610086575b5f5ffd5b61005661005136600461094b565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109d7565b610130565b61008e610405565b60405161006a9190610b50565b5f5f86868686866040516020016100b6959493929190610bda565b6040516020818303038152906040528051906020012090505f604051806020016100df90610787565b601f1982820381018352601f9091011660408190526101019190602001610c28565b604051602081830303815290604052805190602001209050610124828230610755565b98975050505050505050565b5f808061013f84860186610c3e565b91509150814614801561015c575080516001600160a01b03163314155b1561019557805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b8146146101d05760408051602080820183525f8083528482019290925282518082018452828152848401528251908101909252815260608201525b6040805160e0810182528b8152602081018b9052908101889052606081018390526001600160a01b038716608082015260ff891660a082015260c081018290525f8061021c8d82610d9d565b50602082015160018201906102319082610d9d565b506040820151600282015560608201516003820155608082015160048201805460a085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560c08301518051600584018054919093166001600160a01b031991909116178255602081015190919060068401906102b29082610d9d565b50604082015160028201906102c79082610d9d565b50606082015160038201906102dc9082610d9d565b505083516040515f94506102fd93508e92508d918d91889190602001610bda565b6040516020818303038152906040528051906020012090508060405161032290610787565b8190604051809103905ff590508015801561033f573d5f5f3e3d5ffd5b5093505f8061034e8180610794565b61035b600183015f610794565b5f60028301819055600383018190556004830180546001600160a81b03191690556005830180546001600160a01b03191681559061039c6006850182610794565b6103a9600283015f610794565b6103b6600383015f610794565b50506040516001600160a01b03871681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505050979650505050505050565b61040d6107ce565b5f6040518060e00160405290815f8201805461042890610d19565b80601f016020809104026020016040519081016040528092919081815260200182805461045490610d19565b801561049f5780601f106104765761010080835404028352916020019161049f565b820191905f5260205f20905b81548152906001019060200180831161048257829003601f168201915b505050505081526020016001820180546104b890610d19565b80601f01602080910402602001604051908101604052809291908181526020018280546104e490610d19565b801561052f5780601f106105065761010080835404028352916020019161052f565b820191905f5260205f20905b81548152906001019060200180831161051257829003601f168201915b50505091835250506002820154602080830191909152600383015460408084019190915260048401546001600160a01b038082166060860152600160a01b90910460ff166080808601919091528251908101909252600585018054909116825260068501805460a09095019492939192918401916105ac90610d19565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890610d19565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b5050505050815260200160028201805461063c90610d19565b80601f016020809104026020016040519081016040528092919081815260200182805461066890610d19565b80156106b35780601f1061068a576101008083540402835291602001916106b3565b820191905f5260205f20905b81548152906001019060200180831161069657829003601f168201915b505050505081526020016003820180546106cc90610d19565b80601f01602080910402602001604051908101604052809291908181526020018280546106f890610d19565b80156107435780601f1061071a57610100808354040283529160200191610743565b820191905f5260205f20905b81548152906001019060200180831161072657829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b61172780610e5883390190565b5080546107a090610d19565b5f825580601f106107af575050565b601f0160209004905f5260205f20908101906107cb9190610843565b50565b6040518060e0016040528060608152602001606081526020015f81526020015f81526020015f6001600160a01b031681526020015f60ff16815260200161083e60405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b80821115610857575f8155600101610844565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156108915761089161085b565b60405290565b5f82601f8301126108a6575f5ffd5b81356001600160401b038111156108bf576108bf61085b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156108ed576108ed61085b565b604052818152838201602001851015610904575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610930575f5ffd5b919050565b80356001600160a01b0381168114610930575f5ffd5b5f5f5f5f5f60a0868803121561095f575f5ffd5b85356001600160401b03811115610974575f5ffd5b61098088828901610897565b95505060208601356001600160401b0381111561099b575f5ffd5b6109a788828901610897565b9450506109b660408701610920565b9250606086013591506109cb60808701610935565b90509295509295909350565b5f5f5f5f5f5f5f60c0888a0312156109ed575f5ffd5b87356001600160401b03811115610a02575f5ffd5b610a0e8a828b01610897565b97505060208801356001600160401b03811115610a29575f5ffd5b610a358a828b01610897565b965050610a4460408901610920565b945060608801359350610a5960808901610935565b925060a08801356001600160401b03811115610a73575f5ffd5b8801601f81018a13610a83575f5ffd5b80356001600160401b03811115610a98575f5ffd5b8a6020828401011115610aa9575f5ffd5b602082019350809250505092959891949750929550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b0381511682525f602082015160806020850152610b146080850182610ac0565b905060408301518482036040860152610b2d8282610ac0565b91505060608301518482036060860152610b478282610ac0565b95945050505050565b602081525f825160e06020840152610b6c610100840182610ac0565b90506020840151601f19848303016040850152610b898282610ac0565b915050604084015160608401526060840151608084015260018060a01b0360808501511660a084015260ff60a08501511660c084015260c0840151601f198483030160e0850152610b478282610aee565b60a081525f610bec60a0830188610ac0565b8281036020840152610bfe8188610ac0565b60ff969096166040840152505060608101929092526001600160a01b031660809091015292915050565b5f82518060208501845e5f920191825250919050565b5f5f60408385031215610c4f575f5ffd5b8235915060208301356001600160401b03811115610c6b575f5ffd5b830160808186031215610c7c575f5ffd5b610c8461086f565b610c8d82610935565b815260208201356001600160401b03811115610ca7575f5ffd5b610cb387828501610897565b60208301525060408201356001600160401b03811115610cd1575f5ffd5b610cdd87828501610897565b60408301525060608201356001600160401b03811115610cfb575f5ffd5b610d0787828501610897565b60608301525080925050509250929050565b600181811c90821680610d2d57607f821691505b602082108103610d4b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d9857805f5260205f20601f840160051c81016020851015610d765750805b601f840160051c820191505b81811015610d95575f8155600101610d82565b50505b505050565b81516001600160401b03811115610db657610db661085b565b610dca81610dc48454610d19565b84610d51565b6020601f821160018114610dfc575f8315610de55750848201515b5f19600385901b1c1916600184901b178455610d95565b5f84815260208120601f198516915b82811015610e2b5787850151825560209485019460019092019101610e0b565b5084821015610e4857868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe60c060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100739190810190610375565b606081015160a05280519091505f9061008c90826104ec565b50602081015160019061009f90826104ec565b5060a081015160ff1660805260c08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100e390826104ec565b50604082015160028201906100f890826104ec565b506060820151600382019061010d90826104ec565b50505060608101514603610133576101338160800151826040015161013960201b60201c565b506105a6565b6805345cdf77eb68f44c548181018181101561015c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101f0576101f06101ba565b60405290565b60405160e081016001600160401b03811182821017156101f0576101f06101ba565b5f82601f830112610227575f5ffd5b81516001600160401b03811115610240576102406101ba565b604051601f8201601f19908116603f011681016001600160401b038111828210171561026e5761026e6101ba565b604052818152838201602001851015610285575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102b7575f5ffd5b919050565b805160ff811681146102b7575f5ffd5b5f608082840312156102dc575f5ffd5b6102e46101ce565b90506102ef826102a1565b815260208201516001600160401b03811115610309575f5ffd5b61031584828501610218565b60208301525060408201516001600160401b03811115610333575f5ffd5b61033f84828501610218565b60408301525060608201516001600160401b0381111561035d575f5ffd5b61036984828501610218565b60608301525092915050565b5f60208284031215610385575f5ffd5b81516001600160401b0381111561039a575f5ffd5b820160e081850312156103ab575f5ffd5b6103b36101f6565b81516001600160401b038111156103c8575f5ffd5b6103d486828501610218565b82525060208201516001600160401b038111156103ef575f5ffd5b6103fb86828501610218565b6020830152506040828101519082015260608083015190820152610421608083016102a1565b608082015261043260a083016102bc565b60a082015260c08201516001600160401b0381111561044f575f5ffd5b61045b868285016102cc565b60c083015250949350505050565b600181811c9082168061047d57607f821691505b60208210810361049b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b557805f5260205f20601f840160051c810160208510156104c65750805b601f840160051c820191505b818110156104e5575f81556001016104d2565b5050505050565b81516001600160401b03811115610505576105056101ba565b610519816105138454610469565b846104a1565b6020601f82116001811461054b575f83156105345750848201515b5f19600385901b1c1916600184901b1784556104e5565b5f84815260208120601f198516915b8281101561057a578785015182556020948501946001909201910161055a565b508482101561059757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a0516111606105c75f395f6102ae01525f6101cc01526111605ff3fe608060405234801561000f575f5ffd5b506004361061011c575f3560e01c8063392f37e9116100a9578063a9059cbb1161006e578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610296578063ef126967146102a9578063ef31f2cd146102d0575f5ffd5b8063392f37e9146101fe5780633c130d901461021657806370a082311461021e5780637ecebe001461024357806395d89b4114610268575f5ffd5b806318bf5077116100ef57806318bf50771461018a57806323b872dd1461019f5780632b8c49e3146101b2578063313ce567146101c55780633644e515146101f6575f5ffd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b5f5ffd5b61013361012e366004610dcd565b6102f6565b60405190151581526020015b60405180910390f35b610150610347565b60405161013f9190610e29565b61013361016b366004610e56565b6103d6565b6805345cdf77eb68f44c545b60405190815260200161013f565b61019d610198366004610e56565b610455565b005b6101336101ad366004610e7e565b6104df565b61019d6101c0366004610e56565b61059b565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161013f565b61017c610618565b610206610694565b60405161013f9493929190610eb8565b61015061084b565b61017c61022c366004610f0c565b6387a211a2600c9081525f91909152602090205490565b61017c610251366004610f0c565b6338377508600c9081525f91909152602090205490565b610150610a98565b61013361027e366004610e56565b610aa7565b61019d610291366004610f25565b610b0b565b61017c6102a4366004610f92565b610cbf565b61017c7f000000000000000000000000000000000000000000000000000000000000000081565b6102de6028602160991b0181565b6040516001600160a01b03909116815260200161013f565b5f6001600160e01b03198216630cccc66560e21b148061032657506001600160e01b031982166336372b0760e01b145b8061034157506001600160e01b031982166301ffc9a760e01b145b92915050565b60605f805461035590610fc3565b80601f016020809104026020016040519081016040528092919081815260200182805461038190610fc3565b80156103cc5780601f106103a3576101008083540402835291602001916103cc565b820191905f5260205f20905b8154815290600101906020018083116103af57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761040757633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b011461049057604051632e0d831f60e01b81523360048201526028602160991b0160248201526044015b60405180910390fd5b61049a8282610d03565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105345733602052637f5e9f208117600c526034600c208054801915610531578085111561052b576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c2080548085111561055a5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f5160206111345f395f51905f52602080a3505060019392505050565b336028602160991b01146105d157604051632e0d831f60e01b81523360048201526028602160991b016024820152604401610487565b6105db8282610d6c565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd4906020016104d3565b5f80610622610347565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916106b290610fc3565b80601f01602080910402602001604051908101604052809291908181526020018280546106de90610fc3565b80156107295780601f1061070057610100808354040283529160200191610729565b820191905f5260205f20905b81548152906001019060200180831161070c57829003601f168201915b50505050509080600201805461073e90610fc3565b80601f016020809104026020016040519081016040528092919081815260200182805461076a90610fc3565b80156107b55780601f1061078c576101008083540402835291602001916107b5565b820191905f5260205f20905b81548152906001019060200180831161079857829003601f168201915b5050505050908060030180546107ca90610fc3565b80601f01602080910402602001604051908101604052809291908181526020018280546107f690610fc3565b80156108415780601f1061081857610100808354040283529160200191610841565b820191905f5260205f20905b81548152906001019060200180831161082457829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b03168252600380546060939291602084019161087c90610fc3565b80601f01602080910402602001604051908101604052809291908181526020018280546108a890610fc3565b80156108f35780601f106108ca576101008083540402835291602001916108f3565b820191905f5260205f20905b8154815290600101906020018083116108d657829003601f168201915b5050505050815260200160028201805461090c90610fc3565b80601f016020809104026020016040519081016040528092919081815260200182805461093890610fc3565b80156109835780601f1061095a57610100808354040283529160200191610983565b820191905f5260205f20905b81548152906001019060200180831161096657829003601f168201915b5050505050815260200160038201805461099c90610fc3565b80601f01602080910402602001604051908101604052809291908181526020018280546109c890610fc3565b8015610a135780601f106109ea57610100808354040283529160200191610a13565b820191905f5260205f20905b8154815290600101906020018083116109f657829003601f168201915b505050919092525050604051631c64c49160e21b815273', + UERC20MetadataLibrary, + hex'9263719312449250610a5291600401610ffb565b5f60405180830381865af4158015610a6c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a939190810190611080565b905090565b60606001805461035590610fc3565b5f6387a211a2600c52335f526020600c20805480841115610acf5763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f5160206111345f395f51905f52602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba31885191517610b3b57633f68539a5f526004601cfd5b5f610b44610347565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b8357631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610c6b5763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610ce857505f19610341565b50602052637f5e9f20600c9081525f91909152603490205490565b6805345cdf77eb68f44c5481810181811015610d265763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f5160206111345f395f51905f52602080a35050565b6387a211a2600c52815f526020600c20805480831115610d935763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f5160206111345f395f51905f52602083a35050565b5f60208284031215610ddd575f5ffd5b81356001600160e01b031981168114610df4575f5ffd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610df46020830184610dfb565b80356001600160a01b0381168114610e51575f5ffd5b919050565b5f5f60408385031215610e67575f5ffd5b610e7083610e3b565b946020939093013593505050565b5f5f5f60608486031215610e90575f5ffd5b610e9984610e3b565b9250610ea760208501610e3b565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f90610edb90830186610dfb565b8281036040840152610eed8186610dfb565b90508281036060840152610f018185610dfb565b979650505050505050565b5f60208284031215610f1c575f5ffd5b610df482610e3b565b5f5f5f5f5f5f5f60e0888a031215610f3b575f5ffd5b610f4488610e3b565b9650610f5260208901610e3b565b95506040880135945060608801359350608088013560ff81168114610f75575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215610fa3575f5ffd5b610fac83610e3b565b9150610fba60208401610e3b565b90509250929050565b600181811c90821680610fd757607f821691505b602082108103610ff557634e487b7160e01b5f52602260045260245ffd5b50919050565b602080825282516001600160a01b031682820152820151608060408301525f9061102860a0840182610dfb565b90506040840151601f198483030160608501526110458282610dfb565b9150506060840151601f198483030160808501526110638282610dfb565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611090575f5ffd5b815167ffffffffffffffff8111156110a6575f5ffd5b8201601f810184136110b6575f5ffd5b805167ffffffffffffffff8111156110d0576110d061106c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156110ff576110ff61106c565b604052818152828201602001861015611116575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081c000aa164736f6c634300081c000a' + ); + } +} diff --git a/src/briefcase/deployers/util-contracts/FeeCollectorDeployer.sol b/src/briefcase/deployers/util-contracts/FeeCollectorDeployer.sol index dd5e8486..55f6b710 100644 --- a/src/briefcase/deployers/util-contracts/FeeCollectorDeployer.sol +++ b/src/briefcase/deployers/util-contracts/FeeCollectorDeployer.sol @@ -22,6 +22,6 @@ library FeeCollectorDeployer { */ function initcode() internal pure returns (bytes memory) { return - hex'60c060405234801561000f575f80fd5b50604051610d11380380610d1183398101604081905261002e916100bc565b5f80546001600160a01b0319166001600160a01b03861690811782556040518692907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b0394851617905582166080521660a0525061010d565b80516001600160a01b03811681146100b7575f80fd5b919050565b5f805f80608085870312156100cf575f80fd5b6100d8856100a1565b93506100e6602086016100a1565b92506100f4604086016100a1565b9150610102606086016100a1565b905092959194509250565b60805160a051610bc16101505f395f818160f8015281816103fa015281816104f201528181610527015261064d01525f81816101c1015261048f0152610bc15ff3fe6080604052600436106100dc575f3560e01c80638da5cb5b1161007c578063b4a25ce711610057578063b4a25ce714610261578063bbf20c1514610291578063d88d35de146102b0578063f2fde38b146102cf575f80fd5b80638da5cb5b1461020257806394a228b514610220578063b2ef14e314610242575f80fd5b8063481fb142116100b7578063481fb14214610177578063628a4b2f14610191578063647846a5146101b057806365d82753146101e3575f80fd5b806312261ee7146100e75780631ac169861461013757806335a9e4df14610158575f80fd5b366100e357005b5f80fd5b3480156100f2575f80fd5b5061011a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610142575f80fd5b506101566101513660046108ee565b6102ee565b005b348015610163575f80fd5b5060015461011a906001600160a01b031681565b348015610182575f80fd5b5061011a6001600160a01b0381565b34801561019c575f80fd5b506101566101ab36600461094d565b610330565b3480156101bb575f80fd5b5061011a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156101ee575f80fd5b506101566101fd3660046109b0565b6103c2565b34801561020d575f80fd5b505f5461011a906001600160a01b031681565b34801561022b575f80fd5b506102345f1981565b60405190815260200161012e565b34801561024d575f80fd5b5061015661025c3660046109ef565b610459565b34801561026c575f80fd5b5061027a65ffffffffffff81565b60405165ffffffffffff909116815260200161012e565b34801561029c575f80fd5b506101566102ab366004610a19565b6104ba565b3480156102bb575f80fd5b506101566102ca366004610a92565b61060d565b3480156102da575f80fd5b506101566102e936600461094d565b6106b5565b5f546001600160a01b031633146103205760405162461bcd60e51b815260040161031790610b03565b60405180910390fd5b61032b838383610728565b505050565b5f546001600160a01b031633146103595760405162461bcd60e51b815260040161031790610b03565b600154604080516001600160a01b03928316815291831660208301527f736ee8e49f5bc52c4483e2bf96ce5c99a25af7c12037267ccde543b28ab63071910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146103eb5760405162461bcd60e51b815260040161031790610b03565b5f5b8181101561032b576104517f00000000000000000000000000000000000000000000000000000000000000005f85858581811061042c5761042c610b29565b9050602002016020810190610441919061094d565b6001600160a01b031691906107b0565b6001016103ed565b5f546001600160a01b031633146104825760405162461bcd60e51b815260040161031790610b03565b6104b66001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016838361082c565b5050565b5f546001600160a01b031633146104e35760405162461bcd60e51b815260040161031790610b03565b5f5b818110156105fa576105257f00000000000000000000000000000000000000000000000000000000000000005f1985858581811061042c5761042c610b29565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166387517c4584848481811061056657610566610b29565b905060200201602081019061057b919061094d565b60015460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529082166024820152604481019190915265ffffffffffff60648201526084015f604051808303815f87803b1580156105d8575f80fd5b505af11580156105ea573d5f803e3d5ffd5b5050600190920191506104e59050565b50610606858585610728565b5050505050565b5f546001600160a01b031633146106365760405162461bcd60e51b815260040161031790610b03565b60405163cc53287f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cc53287f906106849085908590600401610b3d565b5f604051808303815f87803b15801561069b575f80fd5b505af11580156106ad573d5f803e3d5ffd5b505050505050565b5f546001600160a01b031633146106de5760405162461bcd60e51b815260040161031790610b03565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001546040515f916001600160a01b03169083906107499087908790610ba5565b5f6040518083038185875af1925050503d805f8114610783576040519150601f19603f3d011682016040523d82523d5f602084013e610788565b606091505b50509050806107aa5760405163cee8b77760e01b815260040160405180910390fd5b50505050565b5f60405163095ea7b360e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f5114161716915050806107aa5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606401610317565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f5114161716915050806107aa5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610317565b5f8083601f8401126108b9575f80fd5b50813567ffffffffffffffff8111156108d0575f80fd5b6020830191508360208285010111156108e7575f80fd5b9250929050565b5f805f60408486031215610900575f80fd5b833567ffffffffffffffff811115610916575f80fd5b610922868287016108a9565b909790965060209590950135949350505050565b6001600160a01b038116811461094a575f80fd5b50565b5f6020828403121561095d575f80fd5b813561096881610936565b9392505050565b5f8083601f84011261097f575f80fd5b50813567ffffffffffffffff811115610996575f80fd5b6020830191508360208260051b85010111156108e7575f80fd5b5f80602083850312156109c1575f80fd5b823567ffffffffffffffff8111156109d7575f80fd5b6109e38582860161096f565b90969095509350505050565b5f8060408385031215610a00575f80fd5b8235610a0b81610936565b946020939093013593505050565b5f805f805f60608688031215610a2d575f80fd5b853567ffffffffffffffff811115610a43575f80fd5b610a4f888289016108a9565b90965094505060208601359250604086013567ffffffffffffffff811115610a75575f80fd5b610a818882890161096f565b969995985093965092949392505050565b5f8060208385031215610aa3575f80fd5b823567ffffffffffffffff811115610ab9575f80fd5b8301601f81018513610ac9575f80fd5b803567ffffffffffffffff811115610adf575f80fd5b8560208260061b8401011115610af3575f80fd5b6020919091019590945092505050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b602080825281018290525f8360408301825b85811015610b9b578235610b6281610936565b6001600160a01b031682526020830135610b7b81610936565b6001600160a01b0316602083015260409283019290910190600101610b4f565b5095945050505050565b818382375f910190815291905056fea164736f6c634300081a000a'; + hex'60c060405234801561000f575f5ffd5b50604051610d11380380610d1183398101604081905261002e916100bc565b5f80546001600160a01b0319166001600160a01b03861690811782556040518692907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b0394851617905582166080521660a0525061010d565b80516001600160a01b03811681146100b7575f5ffd5b919050565b5f5f5f5f608085870312156100cf575f5ffd5b6100d8856100a1565b93506100e6602086016100a1565b92506100f4604086016100a1565b9150610102606086016100a1565b905092959194509250565b60805160a051610bc16101505f395f818160f8015281816103fa015281816104f201528181610527015261064d01525f81816101c1015261048f0152610bc15ff3fe6080604052600436106100dc575f3560e01c80638da5cb5b1161007c578063b4a25ce711610057578063b4a25ce714610261578063bbf20c1514610291578063d88d35de146102b0578063f2fde38b146102cf575f5ffd5b80638da5cb5b1461020257806394a228b514610220578063b2ef14e314610242575f5ffd5b8063481fb142116100b7578063481fb14214610177578063628a4b2f14610191578063647846a5146101b057806365d82753146101e3575f5ffd5b806312261ee7146100e75780631ac169861461013757806335a9e4df14610158575f5ffd5b366100e357005b5f5ffd5b3480156100f2575f5ffd5b5061011a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b348015610142575f5ffd5b506101566101513660046108ee565b6102ee565b005b348015610163575f5ffd5b5060015461011a906001600160a01b031681565b348015610182575f5ffd5b5061011a6001600160a01b0381565b34801561019c575f5ffd5b506101566101ab36600461094d565b610330565b3480156101bb575f5ffd5b5061011a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156101ee575f5ffd5b506101566101fd3660046109b0565b6103c2565b34801561020d575f5ffd5b505f5461011a906001600160a01b031681565b34801561022b575f5ffd5b506102345f1981565b60405190815260200161012e565b34801561024d575f5ffd5b5061015661025c3660046109ef565b610459565b34801561026c575f5ffd5b5061027a65ffffffffffff81565b60405165ffffffffffff909116815260200161012e565b34801561029c575f5ffd5b506101566102ab366004610a19565b6104ba565b3480156102bb575f5ffd5b506101566102ca366004610a92565b61060d565b3480156102da575f5ffd5b506101566102e936600461094d565b6106b5565b5f546001600160a01b031633146103205760405162461bcd60e51b815260040161031790610b03565b60405180910390fd5b61032b838383610728565b505050565b5f546001600160a01b031633146103595760405162461bcd60e51b815260040161031790610b03565b600154604080516001600160a01b03928316815291831660208301527f736ee8e49f5bc52c4483e2bf96ce5c99a25af7c12037267ccde543b28ab63071910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b031633146103eb5760405162461bcd60e51b815260040161031790610b03565b5f5b8181101561032b576104517f00000000000000000000000000000000000000000000000000000000000000005f85858581811061042c5761042c610b29565b9050602002016020810190610441919061094d565b6001600160a01b031691906107b0565b6001016103ed565b5f546001600160a01b031633146104825760405162461bcd60e51b815260040161031790610b03565b6104b66001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016838361082c565b5050565b5f546001600160a01b031633146104e35760405162461bcd60e51b815260040161031790610b03565b5f5b818110156105fa576105257f00000000000000000000000000000000000000000000000000000000000000005f1985858581811061042c5761042c610b29565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166387517c4584848481811061056657610566610b29565b905060200201602081019061057b919061094d565b60015460405160e084901b6001600160e01b03191681526001600160a01b0392831660048201529082166024820152604481019190915265ffffffffffff60648201526084015f604051808303815f87803b1580156105d8575f5ffd5b505af11580156105ea573d5f5f3e3d5ffd5b5050600190920191506104e59050565b50610606858585610728565b5050505050565b5f546001600160a01b031633146106365760405162461bcd60e51b815260040161031790610b03565b60405163cc53287f60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063cc53287f906106849085908590600401610b3d565b5f604051808303815f87803b15801561069b575f5ffd5b505af11580156106ad573d5f5f3e3d5ffd5b505050505050565b5f546001600160a01b031633146106de5760405162461bcd60e51b815260040161031790610b03565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b6001546040515f916001600160a01b03169083906107499087908790610ba5565b5f6040518083038185875af1925050503d805f8114610783576040519150601f19603f3d011682016040523d82523d5f602084013e610788565b606091505b50509050806107aa5760405163cee8b77760e01b815260040160405180910390fd5b50505050565b5f60405163095ea7b360e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f5114161716915050806107aa5760405162461bcd60e51b815260206004820152600e60248201526d1054141493d59157d1905253115160921b6044820152606401610317565b5f60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f5114161716915050806107aa5760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606401610317565b5f5f83601f8401126108b9575f5ffd5b50813567ffffffffffffffff8111156108d0575f5ffd5b6020830191508360208285010111156108e7575f5ffd5b9250929050565b5f5f5f60408486031215610900575f5ffd5b833567ffffffffffffffff811115610916575f5ffd5b610922868287016108a9565b909790965060209590950135949350505050565b6001600160a01b038116811461094a575f5ffd5b50565b5f6020828403121561095d575f5ffd5b813561096881610936565b9392505050565b5f5f83601f84011261097f575f5ffd5b50813567ffffffffffffffff811115610996575f5ffd5b6020830191508360208260051b85010111156108e7575f5ffd5b5f5f602083850312156109c1575f5ffd5b823567ffffffffffffffff8111156109d7575f5ffd5b6109e38582860161096f565b90969095509350505050565b5f5f60408385031215610a00575f5ffd5b8235610a0b81610936565b946020939093013593505050565b5f5f5f5f5f60608688031215610a2d575f5ffd5b853567ffffffffffffffff811115610a43575f5ffd5b610a4f888289016108a9565b90965094505060208601359250604086013567ffffffffffffffff811115610a75575f5ffd5b610a818882890161096f565b969995985093965092949392505050565b5f5f60208385031215610aa3575f5ffd5b823567ffffffffffffffff811115610ab9575f5ffd5b8301601f81018513610ac9575f5ffd5b803567ffffffffffffffff811115610adf575f5ffd5b8560208260061b8401011115610af3575f5ffd5b6020919091019590945092505050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b602080825281018290525f8360408301825b85811015610b9b578235610b6281610936565b6001600160a01b031682526020830135610b7b81610936565b6001600160a01b0316602083015260409283019290910190600101610b4f565b5095945050505050565b818382375f910190815291905056fea164736f6c634300081c000a'; } } diff --git a/src/briefcase/deployers/v2-core/UniswapV2FactoryDeployer.sol b/src/briefcase/deployers/v2-core/UniswapV2FactoryDeployer.sol index e45f27cf..f5e0d601 100644 --- a/src/briefcase/deployers/v2-core/UniswapV2FactoryDeployer.sol +++ b/src/briefcase/deployers/v2-core/UniswapV2FactoryDeployer.sol @@ -25,6 +25,6 @@ library UniswapV2FactoryDeployer { */ function initcode() internal pure returns (bytes memory) { return - hex'608060405234801561001057600080fd5b506040516136863803806136868339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613623806100636000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af6146100fd578063c9c6539614610132578063e6a439051461016d578063f46901ed146101a857610088565b8063017e7e581461008d578063094b7415146100be5780631e3dd18b146100c6578063574f2ba3146100e3575b600080fd5b6100956101db565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100956101f7565b610095600480360360208110156100dc57600080fd5b5035610213565b6100eb610247565b60408051918252519081900360200190f35b6101306004803603602081101561011357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661024d565b005b6100956004803603604081101561014857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661031a565b6100956004803603604081101561018357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076d565b610130600480360360208110156101be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107a0565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061022057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106103f45783856103f7565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff821661047e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561051f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b6060604051806020016105319061086d565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f5604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152868116602483015291519297509087169163485cc9559160448082019260009290919082900301818387803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461082657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612d748061087b8339019056fe60806040526001600c5534801561001557600080fd5b506040514690806052612d228239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612c1d806101056000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820dd42df89920e3fc7e7e44872ae22b0e0d37c5676f6393c1d91bd2d07c885508c64736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a265627a7a7231582052eb7203d64987658077ed49effb75c090088e15da2a8497fc8577fb5d900e9364736f6c63430005100032'; + hex'608060405234801561001057600080fd5b506040516136863803806136868339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613623806100636000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af6146100fd578063c9c6539614610132578063e6a439051461016d578063f46901ed146101a857610088565b8063017e7e581461008d578063094b7415146100be5780631e3dd18b146100c6578063574f2ba3146100e3575b600080fd5b6100956101db565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100956101f7565b610095600480360360208110156100dc57600080fd5b5035610213565b6100eb610247565b60408051918252519081900360200190f35b6101306004803603602081101561011357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661024d565b005b6100956004803603604081101561014857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661031a565b6100956004803603604081101561018357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076d565b610130600480360360208110156101be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107a0565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061022057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106103f45783856103f7565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff821661047e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561051f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b6060604051806020016105319061086d565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f5604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152868116602483015291519297509087169163485cc9559160448082019260009290919082900301818387803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461082657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612d748061087b8339019056fe60806040526001600c5534801561001557600080fd5b506040514690806052612d228239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612c1d806101056000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820a733de2fa9f645092d7437b1a999172868c91eb4b4293d05b0c14e012c25fcd564736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a265627a7a7231582072765fb9cc28f4cf2e2c8283d974149eb2d7e6835dbdd20603900e8ea1a5003b64736f6c63430005100032'; } } diff --git a/src/briefcase/deployers/v4-periphery/StateViewDeployer.sol b/src/briefcase/deployers/v4-periphery/StateViewDeployer.sol index 4603654d..94dde6e8 100644 --- a/src/briefcase/deployers/v4-periphery/StateViewDeployer.sol +++ b/src/briefcase/deployers/v4-periphery/StateViewDeployer.sol @@ -18,6 +18,6 @@ library StateViewDeployer { */ function initcode() internal pure returns (bytes memory) { return - hex'60a03460b357601f610e9738819003918201601f19168301916001600160401b0383118484101760b75780849260209460405283398101031260b357516001600160a01b038116810360b357608052604051610dcb90816100cc823960805181818161012b01528181610246015281816102db0152818161039e0152818161048101528181610549015281816105db01528181610622015281816106870152818161073401528181610810015261096a0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80631c7ccb4c146108ac57806353e9c1fb146107c95780637c40f1fe146106ab5780638a2bb9e61461064657806397fd7b421461060b5780639ec538c8146105a2578063c815641c1461050b578063caedab54146103f6578063dacf1d2f146102ff578063dc4c90d314610291578063f0928f29146101e65763fa6793d51461009d575f80fd5b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576100d7600435610d2f565b600381018091116101b957604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f90610177575b6020906fffffffffffffffffffffffffffffffff60405191168152f35b506020813d6020116101a6575b8161019160209383610a2b565b810103126101a2576020905161015a565b5f80fd5b3d9150610184565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b346101a2576101fd6101f7366109f7565b90610d8b565b604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f90610177576020906fffffffffffffffffffffffffffffffff60405191168152f35b346101a2575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101a25760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760243573ffffffffffffffffffffffffffffffffffffffff811681036101a2576103566109e7565b6064358060020b81036101a2576103f2926103c2926040519260843560268501526006840152600383015281525f603a600c83012091816040820152816020820152526004357f0000000000000000000000000000000000000000000000000000000000000000610bc0565b604080516fffffffffffffffffffffffffffffffff90941684526020840192909252908201529081906060820190565b0390f35b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576104386104306109d7565b600435610d55565b604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f906104d8575b6040908151906fffffffffffffffffffffffffffffffff8116825260801d600f0b6020820152f35b506020813d602011610503575b816104f260209383610a2b565b810103126101a257604090516104b0565b3d91506104e5565b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257608062ffffff8061056d6004357f0000000000000000000000000000000000000000000000000000000000000000610c63565b92949173ffffffffffffffffffffffffffffffffffffffff6040519616865260020b6020860152166040840152166060820152f35b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406105ff6004357f0000000000000000000000000000000000000000000000000000000000000000610c58565b82519182526020820152f35b346101a2576103f26103c261061f366109f7565b907f0000000000000000000000000000000000000000000000000000000000000000610bc0565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406105ff6106826109d7565b6004357f0000000000000000000000000000000000000000000000000000000000000000610b1e565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576106e56104306109d7565b604051907f35fd631a0000000000000000000000000000000000000000000000000000000082526004820152600360248201525f8160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae576080915f916107a7575b506020810151906060604082015191015190604051926fffffffffffffffffffffffffffffffff81168452841d600f0b602084015260408301526060820152f35b6107c391503d805f833e6107bb8183610a2b565b810190610a99565b82610766565b346101a25760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406004356108056109d7565b9061080e6109e7565b7f00000000000000000000000000000000000000000000000000000000000000009061083a8383610c58565b90610846868686610b1e565b96909361085f610857828989610b1e565b989097610c63565b5050905060020b9160020b82125f14610885575050505003910382519182526020820152f35b95969593949360020b1361089d5750500391036105ff565b949392909403039203036105ff565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576024358060010b8091036101a2576108f4600435610d2f565b600581018091116101b957604051906020820192835260408201526040815261091e606082610a2b565b519020604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f906109a4575b602090604051908152f35b506020813d6020116109cf575b816109be60209383610a2b565b810103126101a25760209051610999565b3d91506109b1565b602435908160020b82036101a257565b604435908160020b82036101a257565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60409101126101a2576004359060243590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a6c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6020818303126101a25780519067ffffffffffffffff82116101a257019080601f830112156101a25781519167ffffffffffffffff8311610a6c578260051b9060405193610aea6020840186610a2b565b84526020808501928201019283116101a257602001905b828210610b0e5750505090565b8151815260209182019101610b01565b9291610b2991610d55565b600181018091116101b95773ffffffffffffffffffffffffffffffffffffffff9260445f9260405195869384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260026024840152165afa9182156101ae575f92610ba4575b506040602083015192015190565b610bb99192503d805f833e6107bb8183610a2b565b905f610b96565b6044610be273ffffffffffffffffffffffffffffffffffffffff945f94610d8b565b60405194859384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260036024840152165afa9081156101ae575f91610c3e575b506020810151916060604083015192015190565b610c5291503d805f833e6107bb8183610a2b565b5f610c2a565b9190610b2990610d2f565b6020906024610c8773ffffffffffffffffffffffffffffffffffffffff9594610d2f565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156101ae575f92610cfb575b5073ffffffffffffffffffffffffffffffffffffffff8216918060a01c60020b9162ffffff808360b81c169260d01c1690565b9091506020813d602011610d27575b81610d1760209383610a2b565b810103126101a25751905f610cc8565b3d9150610d0a565b604051602081019182526006604082015260408152610d4f606082610a2b565b51902090565b610d5e90610d2f565b600481018091116101b95760405190602082019260020b8352604082015260408152610d4f606082610a2b565b610d9490610d2f565b600681018091116101b9576040519060208201928352604082015260408152610d4f606082610a2b56fea164736f6c634300081a000a'; + hex'60a0346100b757601f610e9b38819003918201601f19168301916001600160401b038311848410176100bb578084926020946040528339810103126100b757516001600160a01b03811681036100b757608052604051610dcb90816100d0823960805181818161012b01528181610246015281816102db0152818161039e0152818161048101528181610549015281816105db01528181610622015281816106870152818161073401528181610810015261096a0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80631c7ccb4c146108ac57806353e9c1fb146107c95780637c40f1fe146106ab5780638a2bb9e61461064657806397fd7b421461060b5780639ec538c8146105a2578063c815641c1461050b578063caedab54146103f6578063dacf1d2f146102ff578063dc4c90d314610291578063f0928f29146101e65763fa6793d51461009d575f80fd5b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576100d7600435610d2f565b600381018091116101b957604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f90610177575b6020906fffffffffffffffffffffffffffffffff60405191168152f35b506020813d6020116101a6575b8161019160209383610a2b565b810103126101a2576020905161015a565b5f80fd5b3d9150610184565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b346101a2576101fd6101f7366109f7565b90610d8b565b604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f90610177576020906fffffffffffffffffffffffffffffffff60405191168152f35b346101a2575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101a25760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760243573ffffffffffffffffffffffffffffffffffffffff811681036101a2576103566109e7565b6064358060020b81036101a2576103f2926103c2926040519260843560268501526006840152600383015281525f603a600c83012091816040820152816020820152526004357f0000000000000000000000000000000000000000000000000000000000000000610bc0565b604080516fffffffffffffffffffffffffffffffff90941684526020840192909252908201529081906060820190565b0390f35b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576104386104306109d7565b600435610d55565b604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f906104d8575b6040908151906fffffffffffffffffffffffffffffffff8116825260801d600f0b6020820152f35b506020813d602011610503575b816104f260209383610a2b565b810103126101a257604090516104b0565b3d91506104e5565b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257608062ffffff8061056d6004357f0000000000000000000000000000000000000000000000000000000000000000610c63565b92949173ffffffffffffffffffffffffffffffffffffffff6040519616865260020b6020860152166040840152166060820152f35b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406105ff6004357f0000000000000000000000000000000000000000000000000000000000000000610c58565b82519182526020820152f35b346101a2576103f26103c261061f366109f7565b907f0000000000000000000000000000000000000000000000000000000000000000610bc0565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406105ff6106826109d7565b6004357f0000000000000000000000000000000000000000000000000000000000000000610b1e565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576106e56104306109d7565b604051907f35fd631a0000000000000000000000000000000000000000000000000000000082526004820152600360248201525f8160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae576080915f916107a7575b506020810151906060604082015191015190604051926fffffffffffffffffffffffffffffffff81168452841d600f0b602084015260408301526060820152f35b6107c391503d805f833e6107bb8183610a2b565b810190610a99565b82610766565b346101a25760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406004356108056109d7565b9061080e6109e7565b7f00000000000000000000000000000000000000000000000000000000000000009061083a8383610c58565b90610846868686610b1e565b96909361085f610857828989610b1e565b989097610c63565b5050905060020b9160020b82125f14610885575050505003910382519182526020820152f35b95969593949360020b1361089d5750500391036105ff565b949392909403039203036105ff565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576024358060010b8091036101a2576108f4600435610d2f565b600581018091116101b957604051906020820192835260408201526040815261091e606082610a2b565b519020604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f906109a4575b602090604051908152f35b506020813d6020116109cf575b816109be60209383610a2b565b810103126101a25760209051610999565b3d91506109b1565b602435908160020b82036101a257565b604435908160020b82036101a257565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60409101126101a2576004359060243590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a6c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6020818303126101a25780519067ffffffffffffffff82116101a257019080601f830112156101a25781519167ffffffffffffffff8311610a6c578260051b9060405193610aea6020840186610a2b565b84526020808501928201019283116101a257602001905b828210610b0e5750505090565b8151815260209182019101610b01565b9291610b2991610d55565b600181018091116101b95773ffffffffffffffffffffffffffffffffffffffff9260445f9260405195869384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260026024840152165afa9182156101ae575f92610ba4575b506040602083015192015190565b610bb99192503d805f833e6107bb8183610a2b565b905f610b96565b6044610be273ffffffffffffffffffffffffffffffffffffffff945f94610d8b565b60405194859384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260036024840152165afa9081156101ae575f91610c3e575b506020810151916060604083015192015190565b610c5291503d805f833e6107bb8183610a2b565b5f610c2a565b9190610b2990610d2f565b6020906024610c8773ffffffffffffffffffffffffffffffffffffffff9594610d2f565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156101ae575f92610cfb575b5073ffffffffffffffffffffffffffffffffffffffff8216918060a01c60020b9162ffffff808360b81c169260d01c1690565b9091506020813d602011610d27575b81610d1760209383610a2b565b810103126101a25751905f610cc8565b3d9150610d0a565b604051602081019182526006604082015260408152610d4f606082610a2b565b51902090565b610d5e90610d2f565b600481018091116101b95760405190602082019260020b8352604082015260408152610d4f606082610a2b565b610d9490610d2f565b600681018091116101b9576040519060208201928352604082015260408152610d4f606082610a2b56fea164736f6c634300081c000a'; } } diff --git a/src/briefcase/deployers/v4-periphery/V4QuoterDeployer.sol b/src/briefcase/deployers/v4-periphery/V4QuoterDeployer.sol index 5a80daf4..c64e1525 100644 --- a/src/briefcase/deployers/v4-periphery/V4QuoterDeployer.sol +++ b/src/briefcase/deployers/v4-periphery/V4QuoterDeployer.sol @@ -19,6 +19,6 @@ library V4QuoterDeployer { */ function initcode() internal pure returns (bytes memory) { return - hex'60a034607b57601f61187a38819003918201601f19168301916001600160401b03831184841017607f57808492602094604052833981010312607b57516001600160a01b0381168103607b576080526040516117e6908161009482396080518181816101c0015281816103490152818161069401526115bb0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063147d2af9146109865780635873307314610911578063595323f5146108655780636a36a38c1461073a57806391dd734614610610578063aa2f150114610463578063aa9d21cb146103ee578063ca253dc914610254578063d737d0c7146101e4578063dc4c90d3146101765763eebe0c6a14610092575f80fd5b34610172576100a036610ea1565b30330361014a578061010c61010661010160a06fffffffffffffffffffffffffffffffff9501936100d085611227565b6100e9876100e060c08501611234565b16600f0b6113b3565b906100f760e0840184611251565b9490933690610d54565b611475565b91611227565b156101405781165b7fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60801d8116610114565b7f29c3b7ee000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b34610172575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610172575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461017257604061026436610b7d565b337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d5f8061032f5f6102c96102f55a9688519283917f6a36a38c00000000000000000000000000000000000000000000000000000000602084015260248301610fc3565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610a60565b8651809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610f11565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190816103ce575b506103c657505061039561038f61038761114a565b925a90611179565b916113df565b905b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d82519182526020820152f35b909150610397565b6103e9903d805f833e6103e18183610a60565b8101906110e7565b610372565b346101725760406103fe36610dbd565b337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d5f8061032f5f6102c96102f55a9688519283917feebe0c6a00000000000000000000000000000000000000000000000000000000602084015260248301611186565b346101725761047136610f54565b30330361014a576020810161048681836112d1565b905061049460408401611234565b9161049e84611325565b9190815b6104e4576fffffffffffffffffffffffffffffffff847fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091926104f182866112d1565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85018581116105c0576105496105426fffffffffffffffffffffffffffffffff926105909661056595611346565b97886116b2565b939061055860808a018a611251565b9390921690851590611475565b90156105ed5761057790600f0b6112a2565b6fffffffffffffffffffffffffffffffff165b93611325565b9180156105c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190816104a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105f99060801d6112a2565b6fffffffffffffffffffffffffffffffff1661058a565b346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725760043567ffffffffffffffff811161017257366023820112156101725780600401359067ffffffffffffffff82116101725736602483830101116101725773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610712575f6024819284806040519384930183378101838152039082305af16106dd61114a565b906106ea57602081519101fd5b7fe0752a5a000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101725761074836610f54565b30330361014a57602081019061075e82826112d1565b905061076c60408301611234565b9161077681611325565b935f915b8383106107bf576fffffffffffffffffffffffffffffffff857fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b909192936108406fffffffffffffffffffffffffffffffff61082161080c6001946107fe6107f78a6107f18b8b6112d1565b90611346565b9b8c6116b2565b948593919216600f0b6113b3565b61081960808d018d611251565b939092611475565b901561084b576fffffffffffffffffffffffffffffffff165b96611325565b95949301919061077a565b60801d6fffffffffffffffffffffffffffffffff1661083a565b346101725761087336610ea1565b30330361014a57806108bf61010661010160a06fffffffffffffffffffffffffffffffff9501936108a385611227565b866108b060c08401611234565b16906100f760e0840184611251565b156108fe576108d09060801d6112a2565b81167fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b61090a90600f0b6112a2565b8116610114565b3461017257604061092136610dbd565b337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d5f8061032f5f6102c96102f55a9688519283917f595323f500000000000000000000000000000000000000000000000000000000602084015260248301611186565b3461017257604061099636610b7d565b337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d5f8061032f5f6102c96102f55a9688519283917faa2f150100000000000000000000000000000000000000000000000000000000602084015260248301610fc3565b6060810190811067ffffffffffffffff821117610a1757604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff821117610a1757604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a1757604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361017257565b359062ffffff8216820361017257565b35908160020b820361017257565b67ffffffffffffffff8111610a1757601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561017257803590610b3182610ae0565b92610b3f6040519485610a60565b8284526020838301011161017257815f926020809301838601378301015290565b35906fffffffffffffffffffffffffffffffff8216820361017257565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101725760043567ffffffffffffffff81116101725760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82840301126101725760405191610bf2836109fb565b610bfe82600401610aa1565b8352602482013567ffffffffffffffff811161017257820190806023830112156101725760048201359167ffffffffffffffff8311610a17578260051b60405193610c4c6020830186610a60565b845281016024019060208401908383116101725760248101915b838310610c8b5750505050506020830152610c8390604401610b60565b604082015290565b823567ffffffffffffffff8111610172576004908301019060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083880301126101725760405190610cdc82610a44565b610ce860208401610aa1565b8252610cf660408401610ac2565b6020830152610d0760608401610ad2565b6040830152610d1860808401610aa1565b606083015260a08301359167ffffffffffffffff831161017257610d4488602080969581960101610b1a565b6080820152815201920191610c66565b91908260a091031261017257604051610d6c81610a44565b6080610db8818395610d7d81610aa1565b8552610d8b60208201610aa1565b6020860152610d9c60408201610ac2565b6040860152610dad60608201610ad2565b606086015201610aa1565b910152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101725760043567ffffffffffffffff8111610172576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828403011261017257604051916080830183811067ffffffffffffffff821117610a1757604052610e518183600401610d54565b835260a48201358015158103610172576020840152610e7260c48301610b60565b604084015260e48201359167ffffffffffffffff831161017257610e999201600401610b1a565b606082015290565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610172576004359067ffffffffffffffff8211610172577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610100920301126101725760040190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610172576004359067ffffffffffffffff8211610172577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826060920301126101725760040190565b60208152608081019173ffffffffffffffffffffffffffffffffffffffff815116602083015260208101519260606040840152835180915260a0830190602060a08260051b8601019501915f905b82821061103b57505050506fffffffffffffffffffffffffffffffff604060609201511691015290565b909192956020806110d9837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608a6001960301865260a060808c5173ffffffffffffffffffffffffffffffffffffffff815116845262ffffff868201511686850152604081015160020b604085015273ffffffffffffffffffffffffffffffffffffffff60608201511660608501520151918160808201520190610f11565b980192019201909291611011565b6020818303126101725780519067ffffffffffffffff8211610172570181601f820112156101725780519061111b82610ae0565b926111296040519485610a60565b8284526020838301011161017257815f9260208093018386015e8301015290565b3d15611174573d9061115b82610ae0565b916111696040519384610a60565b82523d5f602084013e565b606090565b919082039182116105c057565b610120606061122493602084526111eb60208501825173ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b6020810151151560c08501526fffffffffffffffffffffffffffffffff60408201511660e0850152015191610100808201520190610f11565b90565b3580151581036101725790565b356fffffffffffffffffffffffffffffffff811681036101725790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610172570180359067ffffffffffffffff82116101725760200191813603831361017257565b600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081146105c0575f0390565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610172570180359067ffffffffffffffff821161017257602001918160051b3603831361017257565b3573ffffffffffffffffffffffffffffffffffffffff811681036101725790565b91908110156113865760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6181360301821215610172570190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f800000000000000000000000000000000000000000000000000000000000000081146105c0575f0390565b7fecbd9804000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000060208301511603611433576024015190565b611471906040519182917f6190b2b0000000000000000000000000000000000000000000000000000000008352602060048401526024830190610f11565b0390fd5b929493908015611697576401000276a4915b8060405192611495846109fb565b1515978884526020840194868652604085019073ffffffffffffffffffffffffffffffffffffffff1681526040519586957ff3cd914c00000000000000000000000000000000000000000000000000000000875260048701611541908b73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b51151560a48701525160c48601525173ffffffffffffffffffffffffffffffffffffffff1660e48501526101048401610120905281610124850152610144840137808201610144015f9052601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681010361014401817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691815a6020945f91f190811561168c575f9161165a575b5080945f8312145f146116525760801d5b600f0b036116235750565b60a090207f7a5ed734000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b600f0b611618565b90506020813d602011611684575b8161167560209383610a60565b8101031261017257515f611607565b3d9150611668565b6040513d5f823e3d90fd5b73fffd8963efd1fc6a506488495d951d5263988d2591611487565b905f60806040516116c281610a44565b82815282602082015282604082015282606082015201526116e282611325565b73ffffffffffffffffffffffffffffffffffffffff82169173ffffffffffffffffffffffffffffffffffffffff82168084105f146117ba575073ffffffffffffffffffffffffffffffffffffffff905b1680921492602081013562ffffff8116809103610172576040820135918260020b80930361017257606001359273ffffffffffffffffffffffffffffffffffffffff84168094036101725773ffffffffffffffffffffffffffffffffffffffff90604051956117a087610a44565b865216602085015260408401526060830152608082015291565b91505073ffffffffffffffffffffffffffffffffffffffff829161173256fea164736f6c634300081a000a'; + hex'60a03461007f57601f61187e38819003918201601f19168301916001600160401b038311848410176100835780849260209460405283398101031261007f57516001600160a01b038116810361007f576080526040516117e6908161009882396080518181816101c0015281816103490152818161069401526115bb0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063147d2af9146109865780635873307314610911578063595323f5146108655780636a36a38c1461073a57806391dd734614610610578063aa2f150114610463578063aa9d21cb146103ee578063ca253dc914610254578063d737d0c7146101e4578063dc4c90d3146101765763eebe0c6a14610092575f80fd5b34610172576100a036610ea1565b30330361014a578061010c61010661010160a06fffffffffffffffffffffffffffffffff9501936100d085611227565b6100e9876100e060c08501611234565b16600f0b6113b3565b906100f760e0840184611251565b9490933690610d54565b611475565b91611227565b156101405781165b7fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60801d8116610114565b7f29c3b7ee000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b34610172575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261017257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b34610172575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b3461017257604061026436610b7d565b337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d5f5f61032f5f6102c96102f55a9688519283917f6a36a38c00000000000000000000000000000000000000000000000000000000602084015260248301610fc3565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610a60565b8651809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610f11565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190816103ce575b506103c657505061039561038f61038761114a565b925a90611179565b916113df565b905b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d82519182526020820152f35b909150610397565b6103e9903d805f833e6103e18183610a60565b8101906110e7565b610372565b346101725760406103fe36610dbd565b337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d5f5f61032f5f6102c96102f55a9688519283917feebe0c6a00000000000000000000000000000000000000000000000000000000602084015260248301611186565b346101725761047136610f54565b30330361014a576020810161048681836112d1565b905061049460408401611234565b9161049e84611325565b9190815b6104e4576fffffffffffffffffffffffffffffffff847fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091926104f182866112d1565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85018581116105c0576105496105426fffffffffffffffffffffffffffffffff926105909661056595611346565b97886116b2565b939061055860808a018a611251565b9390921690851590611475565b90156105ed5761057790600f0b6112a2565b6fffffffffffffffffffffffffffffffff165b93611325565b9180156105c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190816104a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105f99060801d6112a2565b6fffffffffffffffffffffffffffffffff1661058a565b346101725760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101725760043567ffffffffffffffff811161017257366023820112156101725780600401359067ffffffffffffffff82116101725736602483830101116101725773ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610712575f6024819284806040519384930183378101838152039082305af16106dd61114a565b906106ea57602081519101fd5b7fe0752a5a000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101725761074836610f54565b30330361014a57602081019061075e82826112d1565b905061076c60408301611234565b9161077681611325565b935f915b8383106107bf576fffffffffffffffffffffffffffffffff857fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b909192936108406fffffffffffffffffffffffffffffffff61082161080c6001946107fe6107f78a6107f18b8b6112d1565b90611346565b9b8c6116b2565b948593919216600f0b6113b3565b61081960808d018d611251565b939092611475565b901561084b576fffffffffffffffffffffffffffffffff165b96611325565b95949301919061077a565b60801d6fffffffffffffffffffffffffffffffff1661083a565b346101725761087336610ea1565b30330361014a57806108bf61010661010160a06fffffffffffffffffffffffffffffffff9501936108a385611227565b866108b060c08401611234565b16906100f760e0840184611251565b156108fe576108d09060801d6112a2565b81167fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b61090a90600f0b6112a2565b8116610114565b3461017257604061092136610dbd565b337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d5f5f61032f5f6102c96102f55a9688519283917f595323f500000000000000000000000000000000000000000000000000000000602084015260248301611186565b3461017257604061099636610b7d565b337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d5f5f61032f5f6102c96102f55a9688519283917faa2f150100000000000000000000000000000000000000000000000000000000602084015260248301610fc3565b6060810190811067ffffffffffffffff821117610a1757604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff821117610a1757604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a1757604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361017257565b359062ffffff8216820361017257565b35908160020b820361017257565b67ffffffffffffffff8111610a1757601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561017257803590610b3182610ae0565b92610b3f6040519485610a60565b8284526020838301011161017257815f926020809301838601378301015290565b35906fffffffffffffffffffffffffffffffff8216820361017257565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101725760043567ffffffffffffffff81116101725760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82840301126101725760405191610bf2836109fb565b610bfe82600401610aa1565b8352602482013567ffffffffffffffff811161017257820190806023830112156101725760048201359167ffffffffffffffff8311610a17578260051b60405193610c4c6020830186610a60565b845281016024019060208401908383116101725760248101915b838310610c8b5750505050506020830152610c8390604401610b60565b604082015290565b823567ffffffffffffffff8111610172576004908301019060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083880301126101725760405190610cdc82610a44565b610ce860208401610aa1565b8252610cf660408401610ac2565b6020830152610d0760608401610ad2565b6040830152610d1860808401610aa1565b606083015260a08301359167ffffffffffffffff831161017257610d4488602080969581960101610b1a565b6080820152815201920191610c66565b91908260a091031261017257604051610d6c81610a44565b6080610db8818395610d7d81610aa1565b8552610d8b60208201610aa1565b6020860152610d9c60408201610ac2565b6040860152610dad60608201610ad2565b606086015201610aa1565b910152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101725760043567ffffffffffffffff8111610172576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828403011261017257604051916080830183811067ffffffffffffffff821117610a1757604052610e518183600401610d54565b835260a48201358015158103610172576020840152610e7260c48301610b60565b604084015260e48201359167ffffffffffffffff831161017257610e999201600401610b1a565b606082015290565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610172576004359067ffffffffffffffff8211610172577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610100920301126101725760040190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610172576004359067ffffffffffffffff8211610172577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826060920301126101725760040190565b60208152608081019173ffffffffffffffffffffffffffffffffffffffff815116602083015260208101519260606040840152835180915260a0830190602060a08260051b8601019501915f905b82821061103b57505050506fffffffffffffffffffffffffffffffff604060609201511691015290565b909192956020806110d9837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608a6001960301865260a060808c5173ffffffffffffffffffffffffffffffffffffffff815116845262ffffff868201511686850152604081015160020b604085015273ffffffffffffffffffffffffffffffffffffffff60608201511660608501520151918160808201520190610f11565b980192019201909291611011565b6020818303126101725780519067ffffffffffffffff8211610172570181601f820112156101725780519061111b82610ae0565b926111296040519485610a60565b8284526020838301011161017257815f9260208093018386015e8301015290565b3d15611174573d9061115b82610ae0565b916111696040519384610a60565b82523d5f602084013e565b606090565b919082039182116105c057565b610120606061122493602084526111eb60208501825173ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b6020810151151560c08501526fffffffffffffffffffffffffffffffff60408201511660e0850152015191610100808201520190610f11565b90565b3580151581036101725790565b356fffffffffffffffffffffffffffffffff811681036101725790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610172570180359067ffffffffffffffff82116101725760200191813603831361017257565b600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081146105c0575f0390565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610172570180359067ffffffffffffffff821161017257602001918160051b3603831361017257565b3573ffffffffffffffffffffffffffffffffffffffff811681036101725790565b91908110156113865760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6181360301821215610172570190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f800000000000000000000000000000000000000000000000000000000000000081146105c0575f0390565b7fecbd9804000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000060208301511603611433576024015190565b611471906040519182917f6190b2b0000000000000000000000000000000000000000000000000000000008352602060048401526024830190610f11565b0390fd5b929493908015611697576401000276a4915b8060405192611495846109fb565b1515978884526020840194868652604085019073ffffffffffffffffffffffffffffffffffffffff1681526040519586957ff3cd914c00000000000000000000000000000000000000000000000000000000875260048701611541908b73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b51151560a48701525160c48601525173ffffffffffffffffffffffffffffffffffffffff1660e48501526101048401610120905281610124850152610144840137808201610144015f9052601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681010361014401817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691815a6020945f91f190811561168c575f9161165a575b5080945f8312145f146116525760801d5b600f0b036116235750565b60a090207f7a5ed734000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b600f0b611618565b90506020813d602011611684575b8161167560209383610a60565b8101031261017257515f611607565b3d9150611668565b6040513d5f823e3d90fd5b73fffd8963efd1fc6a506488495d951d5263988d2591611487565b905f60806040516116c281610a44565b82815282602082015282604082015282606082015201526116e282611325565b73ffffffffffffffffffffffffffffffffffffffff82169173ffffffffffffffffffffffffffffffffffffffff82168084105f146117ba575073ffffffffffffffffffffffffffffffffffffffff905b1680921492602081013562ffffff8116809103610172576040820135918260020b80930361017257606001359273ffffffffffffffffffffffffffffffffffffffff84168094036101725773ffffffffffffffffffffffffffffffffffffffff90604051956117a087610a44565b865216602085015260408401526060830152608082015291565b91505073ffffffffffffffffffffffffffffffffffffffff829161173256fea164736f6c634300081c000a'; } } diff --git a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Base64.sol b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Base64.sol index 94220f37..5d924c97 100644 --- a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Base64.sol +++ b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Base64.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -// OpenZeppelin Contracts (last updated v5.0.2) (utils/Base64.sol) +// OpenZeppelin Contracts (last updated v5.1.0) (utils/Base64.sol) /** * @dev Provides a set of functions to operate with Base64 strings. @@ -9,32 +9,54 @@ pragma solidity ^0.8.20; library Base64 { /** * @dev Base64 Encoding/Decoding Table + * See sections 4 and 5 of https://datatracker.ietf.org/doc/html/rfc4648 */ string internal constant _TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + string internal constant _TABLE_URL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'; /** * @dev Converts a `bytes` to its Bytes64 `string` representation. */ function encode(bytes memory data) internal pure returns (string memory) { + return _encode(data, _TABLE, true); + } + + /** + * @dev Converts a `bytes` to its Bytes64Url `string` representation. + * Output is not padded with `=` as specified in https://www.rfc-editor.org/rfc/rfc4648[rfc4648]. + */ + function encodeURL(bytes memory data) internal pure returns (string memory) { + return _encode(data, _TABLE_URL, false); + } + + /** + * @dev Internal table-agnostic conversion + */ + function _encode(bytes memory data, string memory table, bool withPadding) private pure returns (string memory) { /** * Inspired by Brecht Devos (Brechtpd) implementation - MIT licence * https://github.com/Brechtpd/base64/blob/e78d9fd951e7b0977ddca77d92dc85183770daf4/base64.sol */ if (data.length == 0) return ''; - // Loads the table into memory - string memory table = _TABLE; - - // Encoding takes 3 bytes chunks of binary data from `bytes` data parameter - // and split into 4 numbers of 6 bits. - // The final Base64 length should be `bytes` data length multiplied by 4/3 rounded up - // - `data.length + 2` -> Round up - // - `/ 3` -> Number of 3-bytes chunks + // If padding is enabled, the final length should be `bytes` data length divided by 3 rounded up and then + // multiplied by 4 so that it leaves room for padding the last chunk + // - `data.length + 2` -> Prepare for division rounding up + // - `/ 3` -> Number of 3-bytes chunks (rounded up) // - `4 *` -> 4 characters for each chunk - string memory result = new string(4 * ((data.length + 2) / 3)); - - /// @solidity memory-safe-assembly - assembly { + // This is equivalent to: 4 * Math.ceil(data.length / 3) + // + // If padding is disabled, the final length should be `bytes` data length multiplied by 4/3 rounded up as + // opposed to when padding is required to fill the last chunk. + // - `4 * data.length` -> 4 characters for each chunk + // - ` + 2` -> Prepare for division rounding up + // - `/ 3` -> Number of 3-bytes chunks (rounded up) + // This is equivalent to: Math.ceil((4 * data.length) / 3) + uint256 resultLength = withPadding ? 4 * ((data.length + 2) / 3) : (4 * data.length + 2) / 3; + + string memory result = new string(resultLength); + + assembly ("memory-safe") { // Prepare the lookup table (skip the first "length" byte) let tablePtr := add(table, 1) @@ -78,14 +100,16 @@ library Base64 { // Reset the value that was cached mstore(afterPtr, afterCache) - // When data `bytes` is not exactly 3 bytes long - // it is padded with `=` characters at the end - switch mod(mload(data), 3) - case 1 { - mstore8(sub(resultPtr, 1), 0x3d) - mstore8(sub(resultPtr, 2), 0x3d) + if withPadding { + // When data `bytes` is not exactly 3 bytes long + // it is padded with `=` characters at the end + switch mod(mload(data), 3) + case 1 { + mstore8(sub(resultPtr, 1), 0x3d) + mstore8(sub(resultPtr, 2), 0x3d) + } + case 2 { mstore8(sub(resultPtr, 1), 0x3d) } } - case 2 { mstore8(sub(resultPtr, 1), 0x3d) } } return result; diff --git a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Panic.sol b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Panic.sol new file mode 100644 index 00000000..b45e5949 --- /dev/null +++ b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Panic.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol) + +/** + * @dev Helper library for emitting standardized panic codes. + * + * ```solidity + * contract Example { + * using Panic for uint256; + * + * // Use any of the declared internal constants + * function foo() { Panic.GENERIC.panic(); } + * + * // Alternatively + * function foo() { Panic.panic(Panic.GENERIC); } + * } + * ``` + * + * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. + * + * _Available since v5.1._ + */ +// slither-disable-next-line unused-state +library Panic { + /// @dev generic / unspecified error + uint256 internal constant GENERIC = 0x00; + /// @dev used by the assert() builtin + uint256 internal constant ASSERT = 0x01; + /// @dev arithmetic underflow or overflow + uint256 internal constant UNDER_OVERFLOW = 0x11; + /// @dev division or modulo by zero + uint256 internal constant DIVISION_BY_ZERO = 0x12; + /// @dev enum conversion error + uint256 internal constant ENUM_CONVERSION_ERROR = 0x21; + /// @dev invalid encoding in storage + uint256 internal constant STORAGE_ENCODING_ERROR = 0x22; + /// @dev empty array pop + uint256 internal constant EMPTY_ARRAY_POP = 0x31; + /// @dev array out of bounds access + uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32; + /// @dev resource error (too large allocation or too large array) + uint256 internal constant RESOURCE_ERROR = 0x41; + /// @dev calling invalid internal function + uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51; + + /// @dev Reverts with a panic code. Recommended to use with + /// the internal constants with predefined codes. + function panic(uint256 code) internal pure { + assembly ("memory-safe") { + mstore(0x00, 0x4e487b71) + mstore(0x20, code) + revert(0x1c, 0x24) + } + } +} diff --git a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Strings.sol b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Strings.sol index 011f1dda..d55dfcb4 100644 --- a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Strings.sol +++ b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Strings.sol @@ -2,22 +2,42 @@ pragma solidity ^0.8.20; import {Math} from './math/Math.sol'; +import {SafeCast} from './math/SafeCast.sol'; import {SignedMath} from './math/SignedMath.sol'; -// OpenZeppelin Contracts (last updated v5.0.0) (utils/Strings.sol) +// OpenZeppelin Contracts (last updated v5.2.0) (utils/Strings.sol) /** * @dev String operations. */ library Strings { + using SafeCast for *; + bytes16 private constant HEX_DIGITS = '0123456789abcdef'; uint8 private constant ADDRESS_LENGTH = 20; + uint256 private constant SPECIAL_CHARS_LOOKUP = (1 << 0x08) // backspace + | (1 << 0x09) // tab + | (1 << 0x0a) // newline + | (1 << 0x0c) // form feed + | (1 << 0x0d) // carriage return + | (1 << 0x22) // double quote + | (1 << 0x5c); // backslash /** * @dev The `value` string doesn't fit in the specified `length`. */ error StringsInsufficientHexLength(uint256 value, uint256 length); + /** + * @dev The string being parsed contains characters that are not in scope of the given base. + */ + error StringsInvalidChar(); + + /** + * @dev The string being parsed is not a properly formatted address. + */ + error StringsInvalidAddressFormat(); + /** * @dev Converts a `uint256` to its ASCII `string` decimal representation. */ @@ -26,14 +46,12 @@ library Strings { uint256 length = Math.log10(value) + 1; string memory buffer = new string(length); uint256 ptr; - /// @solidity memory-safe-assembly - assembly { + assembly ("memory-safe") { ptr := add(buffer, add(32, length)) } while (true) { ptr--; - /// @solidity memory-safe-assembly - assembly { + assembly ("memory-safe") { mstore8(ptr, byte(mod(value, 10), HEX_DIGITS)) } value /= 10; @@ -85,10 +103,391 @@ library Strings { return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH); } + /** + * @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal + * representation, according to EIP-55. + */ + function toChecksumHexString(address addr) internal pure returns (string memory) { + bytes memory buffer = bytes(toHexString(addr)); + + // hash the hex part of buffer (skip length + 2 bytes, length 40) + uint256 hashValue; + assembly ("memory-safe") { + hashValue := shr(96, keccak256(add(buffer, 0x22), 40)) + } + + for (uint256 i = 41; i > 1; --i) { + // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f) + if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) { + // case shift by xoring with 0x20 + buffer[i] ^= 0x20; + } + hashValue >>= 4; + } + return string(buffer); + } + /** * @dev Returns true if the two strings are equal. */ function equal(string memory a, string memory b) internal pure returns (bool) { return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b)); } + + /** + * @dev Parse a decimal string and returns the value as a `uint256`. + * + * Requirements: + * - The string must be formatted as `[0-9]*` + * - The result must fit into an `uint256` type + */ + function parseUint(string memory input) internal pure returns (uint256) { + return parseUint(input, 0, bytes(input).length); + } + + /** + * @dev Variant of {parseUint-string} that parses a substring of `input` located between position `begin` (included) and + * `end` (excluded). + * + * Requirements: + * - The substring must be formatted as `[0-9]*` + * - The result must fit into an `uint256` type + */ + function parseUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) { + (bool success, uint256 value) = tryParseUint(input, begin, end); + if (!success) revert StringsInvalidChar(); + return value; + } + + /** + * @dev Variant of {parseUint-string} that returns false if the parsing fails because of an invalid character. + * + * NOTE: This function will revert if the result does not fit in a `uint256`. + */ + function tryParseUint(string memory input) internal pure returns (bool success, uint256 value) { + return _tryParseUintUncheckedBounds(input, 0, bytes(input).length); + } + + /** + * @dev Variant of {parseUint-string-uint256-uint256} that returns false if the parsing fails because of an invalid + * character. + * + * NOTE: This function will revert if the result does not fit in a `uint256`. + */ + function tryParseUint(string memory input, uint256 begin, uint256 end) + internal + pure + returns (bool success, uint256 value) + { + if (end > bytes(input).length || begin > end) return (false, 0); + return _tryParseUintUncheckedBounds(input, begin, end); + } + + /** + * @dev Implementation of {tryParseUint-string-uint256-uint256} that does not check bounds. Caller should make sure that + * `begin <= end <= input.length`. Other inputs would result in undefined behavior. + */ + function _tryParseUintUncheckedBounds(string memory input, uint256 begin, uint256 end) + private + pure + returns (bool success, uint256 value) + { + bytes memory buffer = bytes(input); + + uint256 result = 0; + for (uint256 i = begin; i < end; ++i) { + uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i))); + if (chr > 9) return (false, 0); + result *= 10; + result += chr; + } + return (true, result); + } + + /** + * @dev Parse a decimal string and returns the value as a `int256`. + * + * Requirements: + * - The string must be formatted as `[-+]?[0-9]*` + * - The result must fit in an `int256` type. + */ + function parseInt(string memory input) internal pure returns (int256) { + return parseInt(input, 0, bytes(input).length); + } + + /** + * @dev Variant of {parseInt-string} that parses a substring of `input` located between position `begin` (included) and + * `end` (excluded). + * + * Requirements: + * - The substring must be formatted as `[-+]?[0-9]*` + * - The result must fit in an `int256` type. + */ + function parseInt(string memory input, uint256 begin, uint256 end) internal pure returns (int256) { + (bool success, int256 value) = tryParseInt(input, begin, end); + if (!success) revert StringsInvalidChar(); + return value; + } + + /** + * @dev Variant of {parseInt-string} that returns false if the parsing fails because of an invalid character or if + * the result does not fit in a `int256`. + * + * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`. + */ + function tryParseInt(string memory input) internal pure returns (bool success, int256 value) { + return _tryParseIntUncheckedBounds(input, 0, bytes(input).length); + } + + uint256 private constant ABS_MIN_INT256 = 2 ** 255; + + /** + * @dev Variant of {parseInt-string-uint256-uint256} that returns false if the parsing fails because of an invalid + * character or if the result does not fit in a `int256`. + * + * NOTE: This function will revert if the absolute value of the result does not fit in a `uint256`. + */ + function tryParseInt(string memory input, uint256 begin, uint256 end) + internal + pure + returns (bool success, int256 value) + { + if (end > bytes(input).length || begin > end) return (false, 0); + return _tryParseIntUncheckedBounds(input, begin, end); + } + + /** + * @dev Implementation of {tryParseInt-string-uint256-uint256} that does not check bounds. Caller should make sure that + * `begin <= end <= input.length`. Other inputs would result in undefined behavior. + */ + function _tryParseIntUncheckedBounds(string memory input, uint256 begin, uint256 end) + private + pure + returns (bool success, int256 value) + { + bytes memory buffer = bytes(input); + + // Check presence of a negative sign. + bytes1 sign = begin == end ? bytes1(0) : bytes1(_unsafeReadBytesOffset(buffer, begin)); // don't do out-of-bound (possibly unsafe) read if sub-string is empty + bool positiveSign = sign == bytes1('+'); + bool negativeSign = sign == bytes1('-'); + uint256 offset = (positiveSign || negativeSign).toUint(); + + (bool absSuccess, uint256 absValue) = tryParseUint(input, begin + offset, end); + + if (absSuccess && absValue < ABS_MIN_INT256) { + return (true, negativeSign ? -int256(absValue) : int256(absValue)); + } else if (absSuccess && negativeSign && absValue == ABS_MIN_INT256) { + return (true, type(int256).min); + } else { + return (false, 0); + } + } + + /** + * @dev Parse a hexadecimal string (with or without "0x" prefix), and returns the value as a `uint256`. + * + * Requirements: + * - The string must be formatted as `(0x)?[0-9a-fA-F]*` + * - The result must fit in an `uint256` type. + */ + function parseHexUint(string memory input) internal pure returns (uint256) { + return parseHexUint(input, 0, bytes(input).length); + } + + /** + * @dev Variant of {parseHexUint-string} that parses a substring of `input` located between position `begin` (included) and + * `end` (excluded). + * + * Requirements: + * - The substring must be formatted as `(0x)?[0-9a-fA-F]*` + * - The result must fit in an `uint256` type. + */ + function parseHexUint(string memory input, uint256 begin, uint256 end) internal pure returns (uint256) { + (bool success, uint256 value) = tryParseHexUint(input, begin, end); + if (!success) revert StringsInvalidChar(); + return value; + } + + /** + * @dev Variant of {parseHexUint-string} that returns false if the parsing fails because of an invalid character. + * + * NOTE: This function will revert if the result does not fit in a `uint256`. + */ + function tryParseHexUint(string memory input) internal pure returns (bool success, uint256 value) { + return _tryParseHexUintUncheckedBounds(input, 0, bytes(input).length); + } + + /** + * @dev Variant of {parseHexUint-string-uint256-uint256} that returns false if the parsing fails because of an + * invalid character. + * + * NOTE: This function will revert if the result does not fit in a `uint256`. + */ + function tryParseHexUint(string memory input, uint256 begin, uint256 end) + internal + pure + returns (bool success, uint256 value) + { + if (end > bytes(input).length || begin > end) return (false, 0); + return _tryParseHexUintUncheckedBounds(input, begin, end); + } + + /** + * @dev Implementation of {tryParseHexUint-string-uint256-uint256} that does not check bounds. Caller should make sure that + * `begin <= end <= input.length`. Other inputs would result in undefined behavior. + */ + function _tryParseHexUintUncheckedBounds(string memory input, uint256 begin, uint256 end) + private + pure + returns (bool success, uint256 value) + { + bytes memory buffer = bytes(input); + + // skip 0x prefix if present + bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(buffer, begin)) == bytes2('0x'); // don't do out-of-bound (possibly unsafe) read if sub-string is empty + uint256 offset = hasPrefix.toUint() * 2; + + uint256 result = 0; + for (uint256 i = begin + offset; i < end; ++i) { + uint8 chr = _tryParseChr(bytes1(_unsafeReadBytesOffset(buffer, i))); + if (chr > 15) return (false, 0); + result *= 16; + unchecked { + // Multiplying by 16 is equivalent to a shift of 4 bits (with additional overflow check). + // This guarantees that adding a value < 16 will not cause an overflow, hence the unchecked. + result += chr; + } + } + return (true, result); + } + + /** + * @dev Parse a hexadecimal string (with or without "0x" prefix), and returns the value as an `address`. + * + * Requirements: + * - The string must be formatted as `(0x)?[0-9a-fA-F]{40}` + */ + function parseAddress(string memory input) internal pure returns (address) { + return parseAddress(input, 0, bytes(input).length); + } + + /** + * @dev Variant of {parseAddress-string} that parses a substring of `input` located between position `begin` (included) and + * `end` (excluded). + * + * Requirements: + * - The substring must be formatted as `(0x)?[0-9a-fA-F]{40}` + */ + function parseAddress(string memory input, uint256 begin, uint256 end) internal pure returns (address) { + (bool success, address value) = tryParseAddress(input, begin, end); + if (!success) revert StringsInvalidAddressFormat(); + return value; + } + + /** + * @dev Variant of {parseAddress-string} that returns false if the parsing fails because the input is not a properly + * formatted address. See {parseAddress-string} requirements. + */ + function tryParseAddress(string memory input) internal pure returns (bool success, address value) { + return tryParseAddress(input, 0, bytes(input).length); + } + + /** + * @dev Variant of {parseAddress-string-uint256-uint256} that returns false if the parsing fails because input is not a properly + * formatted address. See {parseAddress-string-uint256-uint256} requirements. + */ + function tryParseAddress(string memory input, uint256 begin, uint256 end) + internal + pure + returns (bool success, address value) + { + if (end > bytes(input).length || begin > end) return (false, address(0)); + + bool hasPrefix = (end > begin + 1) && bytes2(_unsafeReadBytesOffset(bytes(input), begin)) == bytes2('0x'); // don't do out-of-bound (possibly unsafe) read if sub-string is empty + uint256 expectedLength = 40 + hasPrefix.toUint() * 2; + + // check that input is the correct length + if (end - begin == expectedLength) { + // length guarantees that this does not overflow, and value is at most type(uint160).max + (bool s, uint256 v) = _tryParseHexUintUncheckedBounds(input, begin, end); + return (s, address(uint160(v))); + } else { + return (false, address(0)); + } + } + + function _tryParseChr(bytes1 chr) private pure returns (uint8) { + uint8 value = uint8(chr); + + // Try to parse `chr`: + // - Case 1: [0-9] + // - Case 2: [a-f] + // - Case 3: [A-F] + // - otherwise not supported + unchecked { + if (value > 47 && value < 58) value -= 48; + else if (value > 96 && value < 103) value -= 87; + else if (value > 64 && value < 71) value -= 55; + else return type(uint8).max; + } + + return value; + } + + /** + * @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata. + * + * WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped. + */ + function escapeJSON(string memory input) internal pure returns (string memory) { + bytes memory buffer = bytes(input); + bytes memory output = new bytes(2 * buffer.length); // worst case scenario + uint256 outputLength = 0; + + for (uint256 i; i < buffer.length; ++i) { + bytes1 char = bytes1(_unsafeReadBytesOffset(buffer, i)); + if (((SPECIAL_CHARS_LOOKUP & (1 << uint8(char))) != 0)) { + output[outputLength++] = '\\'; + if (char == 0x08) { + output[outputLength++] = 'b'; + } else if (char == 0x09) { + output[outputLength++] = 't'; + } else if (char == 0x0a) { + output[outputLength++] = 'n'; + } else if (char == 0x0c) { + output[outputLength++] = 'f'; + } else if (char == 0x0d) { + output[outputLength++] = 'r'; + } else if (char == 0x5c) { + output[outputLength++] = '\\'; + } else if (char == 0x22) { + // solhint-disable-next-line quotes + output[outputLength++] = '"'; + } + } else { + output[outputLength++] = char; + } + } + // write the actual length and deallocate unused memory + assembly ("memory-safe") { + mstore(output, outputLength) + mstore(0x40, add(output, shl(5, shr(5, add(outputLength, 63))))) + } + + return string(output); + } + + /** + * @dev Reads a bytes32 from a bytes array without bounds checking. + * + * NOTE: making this function internal would mean it could be used with memory unsafe offset, and marking the + * assembly block as such would prevent some optimizations. + */ + function _unsafeReadBytesOffset(bytes memory buffer, uint256 offset) private pure returns (bytes32 value) { + // This is not memory safe in the general case, but all calls to this private function are within bounds. + assembly ("memory-safe") { + value := mload(add(buffer, add(0x20, offset))) + } + } } diff --git a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/Math.sol b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/Math.sol index 3681b4b7..fb25dfb5 100644 --- a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/Math.sol +++ b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/Math.sol @@ -1,17 +1,15 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/Math.sol) +import {Panic} from '../Panic.sol'; +import {SafeCast} from './SafeCast.sol'; + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol) /** * @dev Standard math utilities missing in the Solidity language. */ library Math { - /** - * @dev Muldiv operation overflow. - */ - error MathOverflowedMulDiv(); - enum Rounding { Floor, // Toward negative infinity Ceil, // Toward positive infinity @@ -21,58 +19,134 @@ library Math { } /** - * @dev Returns the addition of two unsigned integers, with an overflow flag. + * @dev Return the 512-bit addition of two uint256. + * + * The result is stored in two 256 variables such that sum = high * 2²⁵⁶ + low. */ - function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { + function add512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) { + assembly ("memory-safe") { + low := add(a, b) + high := lt(low, a) + } + } + + /** + * @dev Return the 512-bit multiplication of two uint256. + * + * The result is stored in two 256 variables such that product = high * 2²⁵⁶ + low. + */ + function mul512(uint256 a, uint256 b) internal pure returns (uint256 high, uint256 low) { + // 512-bit multiply [high low] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use + // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256 + // variables such that product = high * 2²⁵⁶ + low. + assembly ("memory-safe") { + let mm := mulmod(a, b, not(0)) + low := mul(a, b) + high := sub(sub(mm, low), lt(mm, low)) + } + } + + /** + * @dev Returns the addition of two unsigned integers, with a success flag (no overflow). + */ + function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { unchecked { uint256 c = a + b; - if (c < a) return (false, 0); - return (true, c); + success = c >= a; + result = c * SafeCast.toUint(success); } } /** - * @dev Returns the subtraction of two unsigned integers, with an overflow flag. + * @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow). */ - function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { + function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { unchecked { - if (b > a) return (false, 0); - return (true, a - b); + uint256 c = a - b; + success = c <= a; + result = c * SafeCast.toUint(success); } } /** - * @dev Returns the multiplication of two unsigned integers, with an overflow flag. + * @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow). */ - function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { + function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { unchecked { - // Gas optimization: this is cheaper than requiring 'a' not being zero, but the - // benefit is lost if 'b' is also tested. - // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 - if (a == 0) return (true, 0); uint256 c = a * b; - if (c / a != b) return (false, 0); - return (true, c); + assembly ("memory-safe") { + // Only true when the multiplication doesn't overflow + // (c / a == b) || (a == 0) + success := or(eq(div(c, a), b), iszero(a)) + } + // equivalent to: success ? c : 0 + result = c * SafeCast.toUint(success); } } /** - * @dev Returns the division of two unsigned integers, with a division by zero flag. + * @dev Returns the division of two unsigned integers, with a success flag (no division by zero). */ - function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { + function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { unchecked { - if (b == 0) return (false, 0); - return (true, a / b); + success = b > 0; + assembly ("memory-safe") { + // The `DIV` opcode returns zero when the denominator is 0. + result := div(a, b) + } } } /** - * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. + * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero). */ - function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { + function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) { unchecked { - if (b == 0) return (false, 0); - return (true, a % b); + success = b > 0; + assembly ("memory-safe") { + // The `MOD` opcode returns zero when the denominator is 0. + result := mod(a, b) + } + } + } + + /** + * @dev Unsigned saturating addition, bounds to `2²⁵⁶ - 1` instead of overflowing. + */ + function saturatingAdd(uint256 a, uint256 b) internal pure returns (uint256) { + (bool success, uint256 result) = tryAdd(a, b); + return ternary(success, result, type(uint256).max); + } + + /** + * @dev Unsigned saturating subtraction, bounds to zero instead of overflowing. + */ + function saturatingSub(uint256 a, uint256 b) internal pure returns (uint256) { + (, uint256 result) = trySub(a, b); + return result; + } + + /** + * @dev Unsigned saturating multiplication, bounds to `2²⁵⁶ - 1` instead of overflowing. + */ + function saturatingMul(uint256 a, uint256 b) internal pure returns (uint256) { + (bool success, uint256 result) = tryMul(a, b); + return ternary(success, result, type(uint256).max); + } + + /** + * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant. + * + * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone. + * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute + * one branch when needed, making this function more expensive. + */ + function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) { + unchecked { + // branchless ternary works because: + // b ^ (a ^ b) == a + // b ^ 0 == b + return b ^ ((a ^ b) * SafeCast.toUint(condition)); } } @@ -80,14 +154,14 @@ library Math { * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { - return a > b ? a : b; + return ternary(a > b, a, b); } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { - return a < b ? a : b; + return ternary(a < b, a, b); } /** @@ -108,200 +182,473 @@ library Math { function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { if (b == 0) { // Guarantee the same behavior as in a regular Solidity division. - return a / b; + Panic.panic(Panic.DIVISION_BY_ZERO); } - // (a + b - 1) / b can overflow on addition, so we distribute. - return a == 0 ? 0 : (a - 1) / b + 1; + // The following calculation ensures accurate ceiling division without overflow. + // Since a is non-zero, (a - 1) / b will not overflow. + // The largest possible result occurs when (a - 1) / b is type(uint256).max, + // but the largest value we can obtain is type(uint256).max - 1, which happens + // when a = type(uint256).max and b = 1. + unchecked { + return SafeCast.toUint(a > 0) * ((a - 1) / b + 1); + } } /** - * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or + * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or * denominator == 0. - * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by + * + * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by * Uniswap Labs also under MIT license. */ function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) { unchecked { - // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use - // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256 - // variables such that product = prod1 * 2^256 + prod0. - uint256 prod0 = x * y; // Least significant 256 bits of the product - uint256 prod1; // Most significant 256 bits of the product - assembly { - let mm := mulmod(x, y, not(0)) - prod1 := sub(sub(mm, prod0), lt(mm, prod0)) - } + (uint256 high, uint256 low) = mul512(x, y); // Handle non-overflow cases, 256 by 256 division. - if (prod1 == 0) { + if (high == 0) { // Solidity will revert if denominator == 0, unlike the div opcode on its own. // The surrounding unchecked block does not change this fact. // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic. - return prod0 / denominator; + return low / denominator; } - // Make sure the result is less than 2^256. Also prevents denominator == 0. - if (denominator <= prod1) { - revert MathOverflowedMulDiv(); + // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0. + if (denominator <= high) { + Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW)); } /////////////////////////////////////////////// // 512 by 256 division. /////////////////////////////////////////////// - // Make division exact by subtracting the remainder from [prod1 prod0]. + // Make division exact by subtracting the remainder from [high low]. uint256 remainder; - assembly { + assembly ("memory-safe") { // Compute remainder using mulmod. remainder := mulmod(x, y, denominator) // Subtract 256 bit number from 512 bit number. - prod1 := sub(prod1, gt(remainder, prod0)) - prod0 := sub(prod0, remainder) + high := sub(high, gt(remainder, low)) + low := sub(low, remainder) } // Factor powers of two out of denominator and compute largest power of two divisor of denominator. // Always >= 1. See https://cs.stackexchange.com/q/138556/92363. uint256 twos = denominator & (0 - denominator); - assembly { + assembly ("memory-safe") { // Divide denominator by twos. denominator := div(denominator, twos) - // Divide [prod1 prod0] by twos. - prod0 := div(prod0, twos) + // Divide [high low] by twos. + low := div(low, twos) - // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one. + // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one. twos := add(div(sub(0, twos), twos), 1) } - // Shift in bits from prod1 into prod0. - prod0 |= prod1 * twos; + // Shift in bits from high into low. + low |= high * twos; - // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such - // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for - // four bits. That is, denominator * inv = 1 mod 2^4. + // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such + // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for + // four bits. That is, denominator * inv ≡ 1 mod 2⁴. uint256 inverse = (3 * denominator) ^ 2; // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also // works in modular arithmetic, doubling the correct bits in each step. - inverse *= 2 - denominator * inverse; // inverse mod 2^8 - inverse *= 2 - denominator * inverse; // inverse mod 2^16 - inverse *= 2 - denominator * inverse; // inverse mod 2^32 - inverse *= 2 - denominator * inverse; // inverse mod 2^64 - inverse *= 2 - denominator * inverse; // inverse mod 2^128 - inverse *= 2 - denominator * inverse; // inverse mod 2^256 + inverse *= 2 - denominator * inverse; // inverse mod 2⁸ + inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶ + inverse *= 2 - denominator * inverse; // inverse mod 2³² + inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴ + inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸ + inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶ // Because the division is now exact we can divide by multiplying with the modular inverse of denominator. - // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is - // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1 + // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is + // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and high // is no longer required. - result = prod0 * inverse; + result = low * inverse; return result; } } /** - * @notice Calculates x * y / denominator with full precision, following the selected rounding direction. + * @dev Calculates x * y / denominator with full precision, following the selected rounding direction. */ function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) { - uint256 result = mulDiv(x, y, denominator); - if (unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0) { - result += 1; + return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0); + } + + /** + * @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256. + */ + function mulShr(uint256 x, uint256 y, uint8 n) internal pure returns (uint256 result) { + unchecked { + (uint256 high, uint256 low) = mul512(x, y); + if (high >= 1 << n) { + Panic.panic(Panic.UNDER_OVERFLOW); + } + return (high << (256 - n)) | (low >> n); + } + } + + /** + * @dev Calculates x * y >> n with full precision, following the selected rounding direction. + */ + function mulShr(uint256 x, uint256 y, uint8 n, Rounding rounding) internal pure returns (uint256) { + return mulShr(x, y, n) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, 1 << n) > 0); + } + + /** + * @dev Calculate the modular multiplicative inverse of a number in Z/nZ. + * + * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0. + * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible. + * + * If the input value is not inversible, 0 is returned. + * + * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the + * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}. + */ + function invMod(uint256 a, uint256 n) internal pure returns (uint256) { + unchecked { + if (n == 0) return 0; + + // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version) + // Used to compute integers x and y such that: ax + ny = gcd(a, n). + // When the gcd is 1, then the inverse of a modulo n exists and it's x. + // ax + ny = 1 + // ax = 1 + (-y)n + // ax ≡ 1 (mod n) # x is the inverse of a modulo n + + // If the remainder is 0 the gcd is n right away. + uint256 remainder = a % n; + uint256 gcd = n; + + // Therefore the initial coefficients are: + // ax + ny = gcd(a, n) = n + // 0a + 1n = n + int256 x = 0; + int256 y = 1; + + while (remainder != 0) { + uint256 quotient = gcd / remainder; + + (gcd, remainder) = ( + // The old remainder is the next gcd to try. + remainder, + // Compute the next remainder. + // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd + // where gcd is at most n (capped to type(uint256).max) + gcd - remainder * quotient + ); + + (x, y) = ( + // Increment the coefficient of a. + y, + // Decrement the coefficient of n. + // Can overflow, but the result is casted to uint256 so that the + // next value of y is "wrapped around" to a value between 0 and n - 1. + x - y * int256(quotient) + ); + } + + if (gcd != 1) return 0; // No inverse exists. + return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative. + } + } + + /** + * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`. + * + * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is + * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that + * `a**(p-2)` is the modular multiplicative inverse of a in Fp. + * + * NOTE: this function does NOT check that `p` is a prime greater than `2`. + */ + function invModPrime(uint256 a, uint256 p) internal view returns (uint256) { + unchecked { + return Math.modExp(a, p - 2, p); + } + } + + /** + * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m) + * + * Requirements: + * - modulus can't be zero + * - underlying staticcall to precompile must succeed + * + * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make + * sure the chain you're using it on supports the precompiled contract for modular exponentiation + * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, + * the underlying function will succeed given the lack of a revert, but the result may be incorrectly + * interpreted as 0. + */ + function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) { + (bool success, uint256 result) = tryModExp(b, e, m); + if (!success) { + Panic.panic(Panic.DIVISION_BY_ZERO); } return result; } /** - * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded - * towards zero. + * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m). + * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying + * to operate modulo 0 or if the underlying precompile reverted. * - * Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11). + * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain + * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in + * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack + * of a revert, but the result may be incorrectly interpreted as 0. */ - function sqrt(uint256 a) internal pure returns (uint256) { - if (a == 0) { - return 0; + function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) { + if (m == 0) return (false, 0); + assembly ("memory-safe") { + let ptr := mload(0x40) + // | Offset | Content | Content (Hex) | + // |-----------|------------|--------------------------------------------------------------------| + // | 0x00:0x1f | size of b | 0x0000000000000000000000000000000000000000000000000000000000000020 | + // | 0x20:0x3f | size of e | 0x0000000000000000000000000000000000000000000000000000000000000020 | + // | 0x40:0x5f | size of m | 0x0000000000000000000000000000000000000000000000000000000000000020 | + // | 0x60:0x7f | value of b | 0x<.............................................................b> | + // | 0x80:0x9f | value of e | 0x<.............................................................e> | + // | 0xa0:0xbf | value of m | 0x<.............................................................m> | + mstore(ptr, 0x20) + mstore(add(ptr, 0x20), 0x20) + mstore(add(ptr, 0x40), 0x20) + mstore(add(ptr, 0x60), b) + mstore(add(ptr, 0x80), e) + mstore(add(ptr, 0xa0), m) + + // Given the result < m, it's guaranteed to fit in 32 bytes, + // so we can use the memory scratch space located at offset 0. + success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20) + result := mload(0x00) } + } - // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target. - // - // We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have - // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`. - // - // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)` - // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))` - // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)` - // - // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit. - uint256 result = 1 << (log2(a) >> 1); + /** + * @dev Variant of {modExp} that supports inputs of arbitrary length. + */ + function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) { + (bool success, bytes memory result) = tryModExp(b, e, m); + if (!success) { + Panic.panic(Panic.DIVISION_BY_ZERO); + } + return result; + } - // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128, - // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at - // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision - // into the expected uint128 result. - unchecked { - result = (result + a / result) >> 1; - result = (result + a / result) >> 1; - result = (result + a / result) >> 1; - result = (result + a / result) >> 1; - result = (result + a / result) >> 1; - result = (result + a / result) >> 1; - result = (result + a / result) >> 1; - return min(result, a / result); + /** + * @dev Variant of {tryModExp} that supports inputs of arbitrary length. + */ + function tryModExp(bytes memory b, bytes memory e, bytes memory m) + internal + view + returns (bool success, bytes memory result) + { + if (_zeroBytes(m)) return (false, new bytes(0)); + + uint256 mLen = m.length; + + // Encode call args in result and move the free memory pointer + result = abi.encodePacked(b.length, e.length, mLen, b, e, m); + + assembly ("memory-safe") { + let dataPtr := add(result, 0x20) + // Write result on top of args to avoid allocating extra memory. + success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen) + // Overwrite the length. + // result.length > returndatasize() is guaranteed because returndatasize() == m.length + mstore(result, mLen) + // Set the memory pointer after the returned data. + mstore(0x40, add(dataPtr, mLen)) } } /** - * @notice Calculates sqrt(a), following the selected rounding direction. + * @dev Returns whether the provided byte array is zero. */ - function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { - unchecked { - uint256 result = sqrt(a); - return result + (unsignedRoundsUp(rounding) && result * result < a ? 1 : 0); + function _zeroBytes(bytes memory byteArray) private pure returns (bool) { + for (uint256 i = 0; i < byteArray.length; ++i) { + if (byteArray[i] != 0) { + return false; + } } + return true; } /** - * @dev Return the log in base 2 of a positive value rounded towards zero. - * Returns 0 if given 0. + * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded + * towards zero. + * + * This method is based on Newton's method for computing square roots; the algorithm is restricted to only + * using integer operations. */ - function log2(uint256 value) internal pure returns (uint256) { - uint256 result = 0; + function sqrt(uint256 a) internal pure returns (uint256) { unchecked { - if (value >> 128 > 0) { - value >>= 128; - result += 128; + // Take care of easy edge cases when a == 0 or a == 1 + if (a <= 1) { + return a; } - if (value >> 64 > 0) { - value >>= 64; - result += 64; + + // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a + // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between + // the current value as `ε_n = | x_n - sqrt(a) |`. + // + // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root + // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is + // bigger than any uint256. + // + // By noticing that + // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)` + // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar + // to the msb function. + uint256 aa = a; + uint256 xn = 1; + + if (aa >= (1 << 128)) { + aa >>= 128; + xn <<= 64; } - if (value >> 32 > 0) { - value >>= 32; - result += 32; + if (aa >= (1 << 64)) { + aa >>= 64; + xn <<= 32; } - if (value >> 16 > 0) { - value >>= 16; - result += 16; + if (aa >= (1 << 32)) { + aa >>= 32; + xn <<= 16; } - if (value >> 8 > 0) { - value >>= 8; - result += 8; + if (aa >= (1 << 16)) { + aa >>= 16; + xn <<= 8; } - if (value >> 4 > 0) { - value >>= 4; - result += 4; + if (aa >= (1 << 8)) { + aa >>= 8; + xn <<= 4; } - if (value >> 2 > 0) { - value >>= 2; - result += 2; + if (aa >= (1 << 4)) { + aa >>= 4; + xn <<= 2; } - if (value >> 1 > 0) { - result += 1; + if (aa >= (1 << 2)) { + xn <<= 1; } + + // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1). + // + // We can refine our estimation by noticing that the middle of that interval minimizes the error. + // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2). + // This is going to be our x_0 (and ε_0) + xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2) + + // From here, Newton's method give us: + // x_{n+1} = (x_n + a / x_n) / 2 + // + // One should note that: + // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a + // = ((x_n² + a) / (2 * x_n))² - a + // = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a + // = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²) + // = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²) + // = (x_n² - a)² / (2 * x_n)² + // = ((x_n² - a) / (2 * x_n))² + // ≥ 0 + // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n + // + // This gives us the proof of quadratic convergence of the sequence: + // ε_{n+1} = | x_{n+1} - sqrt(a) | + // = | (x_n + a / x_n) / 2 - sqrt(a) | + // = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) | + // = | (x_n - sqrt(a))² / (2 * x_n) | + // = | ε_n² / (2 * x_n) | + // = ε_n² / | (2 * x_n) | + // + // For the first iteration, we have a special case where x_0 is known: + // ε_1 = ε_0² / | (2 * x_0) | + // ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2))) + // ≤ 2**(2*e-4) / (3 * 2**(e-1)) + // ≤ 2**(e-3) / 3 + // ≤ 2**(e-3-log2(3)) + // ≤ 2**(e-4.5) + // + // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n: + // ε_{n+1} = ε_n² / | (2 * x_n) | + // ≤ (2**(e-k))² / (2 * 2**(e-1)) + // ≤ 2**(2*e-2*k) / 2**e + // ≤ 2**(e-2*k) + xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5) -- special case, see above + xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9) -- general case with k = 4.5 + xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18) -- general case with k = 9 + xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36) -- general case with k = 18 + xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72) -- general case with k = 36 + xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144) -- general case with k = 72 + + // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision + // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either + // sqrt(a) or sqrt(a) + 1. + return xn - SafeCast.toUint(xn > a / xn); + } + } + + /** + * @dev Calculates sqrt(a), following the selected rounding direction. + */ + function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { + unchecked { + uint256 result = sqrt(a); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a); + } + } + + /** + * @dev Return the log in base 2 of a positive value rounded towards zero. + * Returns 0 if given 0. + */ + function log2(uint256 x) internal pure returns (uint256 r) { + // If value has upper 128 bits set, log2 result is at least 128 + r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7; + // If upper 64 bits of 128-bit half set, add 64 to result + r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6; + // If upper 32 bits of 64-bit half set, add 32 to result + r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5; + // If upper 16 bits of 32-bit half set, add 16 to result + r |= SafeCast.toUint((x >> r) > 0xffff) << 4; + // If upper 8 bits of 16-bit half set, add 8 to result + r |= SafeCast.toUint((x >> r) > 0xff) << 3; + // If upper 4 bits of 8-bit half set, add 4 to result + r |= SafeCast.toUint((x >> r) > 0xf) << 2; + + // Shifts value right by the current result and use it as an index into this lookup table: + // + // | x (4 bits) | index | table[index] = MSB position | + // |------------|---------|-----------------------------| + // | 0000 | 0 | table[0] = 0 | + // | 0001 | 1 | table[1] = 0 | + // | 0010 | 2 | table[2] = 1 | + // | 0011 | 3 | table[3] = 1 | + // | 0100 | 4 | table[4] = 2 | + // | 0101 | 5 | table[5] = 2 | + // | 0110 | 6 | table[6] = 2 | + // | 0111 | 7 | table[7] = 2 | + // | 1000 | 8 | table[8] = 3 | + // | 1001 | 9 | table[9] = 3 | + // | 1010 | 10 | table[10] = 3 | + // | 1011 | 11 | table[11] = 3 | + // | 1100 | 12 | table[12] = 3 | + // | 1101 | 13 | table[13] = 3 | + // | 1110 | 14 | table[14] = 3 | + // | 1111 | 15 | table[15] = 3 | + // + // The lookup table is represented as a 32-byte value with the MSB positions for 0-15 in the last 16 bytes. + assembly ("memory-safe") { + r := or(r, byte(shr(r, x), 0x0000010102020202030303030303030300000000000000000000000000000000)) } - return result; } /** @@ -311,7 +658,7 @@ library Math { function log2(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log2(value); - return result + (unsignedRoundsUp(rounding) && 1 << result < value ? 1 : 0); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value); } } @@ -360,7 +707,7 @@ library Math { function log10(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log10(value); - return result + (unsignedRoundsUp(rounding) && 10 ** result < value ? 1 : 0); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value); } } @@ -370,30 +717,17 @@ library Math { * * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string. */ - function log256(uint256 value) internal pure returns (uint256) { - uint256 result = 0; - unchecked { - if (value >> 128 > 0) { - value >>= 128; - result += 16; - } - if (value >> 64 > 0) { - value >>= 64; - result += 8; - } - if (value >> 32 > 0) { - value >>= 32; - result += 4; - } - if (value >> 16 > 0) { - value >>= 16; - result += 2; - } - if (value >> 8 > 0) { - result += 1; - } - } - return result; + function log256(uint256 x) internal pure returns (uint256 r) { + // If value has upper 128 bits set, log2 result is at least 128 + r = SafeCast.toUint(x > 0xffffffffffffffffffffffffffffffff) << 7; + // If upper 64 bits of 128-bit half set, add 64 to result + r |= SafeCast.toUint((x >> r) > 0xffffffffffffffff) << 6; + // If upper 32 bits of 64-bit half set, add 32 to result + r |= SafeCast.toUint((x >> r) > 0xffffffff) << 5; + // If upper 16 bits of 32-bit half set, add 16 to result + r |= SafeCast.toUint((x >> r) > 0xffff) << 4; + // Add 1 if upper 8 bits of 16-bit half set, and divide accumulated result by 8 + return (r >> 3) | SafeCast.toUint((x >> r) > 0xff); } /** @@ -403,7 +737,7 @@ library Math { function log256(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log256(value); - return result + (unsignedRoundsUp(rounding) && 1 << (result << 3) < value ? 1 : 0); + return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value); } } diff --git a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/SafeCast.sol b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/SafeCast.sol new file mode 100644 index 00000000..b1df457a --- /dev/null +++ b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/SafeCast.sol @@ -0,0 +1,1162 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol) +// This file was procedurally generated from scripts/generate/templates/SafeCast.js. + +/** + * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow + * checks. + * + * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can + * easily result in undesired exploitation or bugs, since developers usually + * assume that overflows raise errors. `SafeCast` restores this intuition by + * reverting the transaction when such an operation overflows. + * + * Using this library instead of the unchecked operations eliminates an entire + * class of bugs, so it's recommended to use it always. + */ +library SafeCast { + /** + * @dev Value doesn't fit in an uint of `bits` size. + */ + error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value); + + /** + * @dev An int value doesn't fit in an uint of `bits` size. + */ + error SafeCastOverflowedIntToUint(int256 value); + + /** + * @dev Value doesn't fit in an int of `bits` size. + */ + error SafeCastOverflowedIntDowncast(uint8 bits, int256 value); + + /** + * @dev An uint value doesn't fit in an int of `bits` size. + */ + error SafeCastOverflowedUintToInt(uint256 value); + + /** + * @dev Returns the downcasted uint248 from uint256, reverting on + * overflow (when the input is greater than largest uint248). + * + * Counterpart to Solidity's `uint248` operator. + * + * Requirements: + * + * - input must fit into 248 bits + */ + function toUint248(uint256 value) internal pure returns (uint248) { + if (value > type(uint248).max) { + revert SafeCastOverflowedUintDowncast(248, value); + } + return uint248(value); + } + + /** + * @dev Returns the downcasted uint240 from uint256, reverting on + * overflow (when the input is greater than largest uint240). + * + * Counterpart to Solidity's `uint240` operator. + * + * Requirements: + * + * - input must fit into 240 bits + */ + function toUint240(uint256 value) internal pure returns (uint240) { + if (value > type(uint240).max) { + revert SafeCastOverflowedUintDowncast(240, value); + } + return uint240(value); + } + + /** + * @dev Returns the downcasted uint232 from uint256, reverting on + * overflow (when the input is greater than largest uint232). + * + * Counterpart to Solidity's `uint232` operator. + * + * Requirements: + * + * - input must fit into 232 bits + */ + function toUint232(uint256 value) internal pure returns (uint232) { + if (value > type(uint232).max) { + revert SafeCastOverflowedUintDowncast(232, value); + } + return uint232(value); + } + + /** + * @dev Returns the downcasted uint224 from uint256, reverting on + * overflow (when the input is greater than largest uint224). + * + * Counterpart to Solidity's `uint224` operator. + * + * Requirements: + * + * - input must fit into 224 bits + */ + function toUint224(uint256 value) internal pure returns (uint224) { + if (value > type(uint224).max) { + revert SafeCastOverflowedUintDowncast(224, value); + } + return uint224(value); + } + + /** + * @dev Returns the downcasted uint216 from uint256, reverting on + * overflow (when the input is greater than largest uint216). + * + * Counterpart to Solidity's `uint216` operator. + * + * Requirements: + * + * - input must fit into 216 bits + */ + function toUint216(uint256 value) internal pure returns (uint216) { + if (value > type(uint216).max) { + revert SafeCastOverflowedUintDowncast(216, value); + } + return uint216(value); + } + + /** + * @dev Returns the downcasted uint208 from uint256, reverting on + * overflow (when the input is greater than largest uint208). + * + * Counterpart to Solidity's `uint208` operator. + * + * Requirements: + * + * - input must fit into 208 bits + */ + function toUint208(uint256 value) internal pure returns (uint208) { + if (value > type(uint208).max) { + revert SafeCastOverflowedUintDowncast(208, value); + } + return uint208(value); + } + + /** + * @dev Returns the downcasted uint200 from uint256, reverting on + * overflow (when the input is greater than largest uint200). + * + * Counterpart to Solidity's `uint200` operator. + * + * Requirements: + * + * - input must fit into 200 bits + */ + function toUint200(uint256 value) internal pure returns (uint200) { + if (value > type(uint200).max) { + revert SafeCastOverflowedUintDowncast(200, value); + } + return uint200(value); + } + + /** + * @dev Returns the downcasted uint192 from uint256, reverting on + * overflow (when the input is greater than largest uint192). + * + * Counterpart to Solidity's `uint192` operator. + * + * Requirements: + * + * - input must fit into 192 bits + */ + function toUint192(uint256 value) internal pure returns (uint192) { + if (value > type(uint192).max) { + revert SafeCastOverflowedUintDowncast(192, value); + } + return uint192(value); + } + + /** + * @dev Returns the downcasted uint184 from uint256, reverting on + * overflow (when the input is greater than largest uint184). + * + * Counterpart to Solidity's `uint184` operator. + * + * Requirements: + * + * - input must fit into 184 bits + */ + function toUint184(uint256 value) internal pure returns (uint184) { + if (value > type(uint184).max) { + revert SafeCastOverflowedUintDowncast(184, value); + } + return uint184(value); + } + + /** + * @dev Returns the downcasted uint176 from uint256, reverting on + * overflow (when the input is greater than largest uint176). + * + * Counterpart to Solidity's `uint176` operator. + * + * Requirements: + * + * - input must fit into 176 bits + */ + function toUint176(uint256 value) internal pure returns (uint176) { + if (value > type(uint176).max) { + revert SafeCastOverflowedUintDowncast(176, value); + } + return uint176(value); + } + + /** + * @dev Returns the downcasted uint168 from uint256, reverting on + * overflow (when the input is greater than largest uint168). + * + * Counterpart to Solidity's `uint168` operator. + * + * Requirements: + * + * - input must fit into 168 bits + */ + function toUint168(uint256 value) internal pure returns (uint168) { + if (value > type(uint168).max) { + revert SafeCastOverflowedUintDowncast(168, value); + } + return uint168(value); + } + + /** + * @dev Returns the downcasted uint160 from uint256, reverting on + * overflow (when the input is greater than largest uint160). + * + * Counterpart to Solidity's `uint160` operator. + * + * Requirements: + * + * - input must fit into 160 bits + */ + function toUint160(uint256 value) internal pure returns (uint160) { + if (value > type(uint160).max) { + revert SafeCastOverflowedUintDowncast(160, value); + } + return uint160(value); + } + + /** + * @dev Returns the downcasted uint152 from uint256, reverting on + * overflow (when the input is greater than largest uint152). + * + * Counterpart to Solidity's `uint152` operator. + * + * Requirements: + * + * - input must fit into 152 bits + */ + function toUint152(uint256 value) internal pure returns (uint152) { + if (value > type(uint152).max) { + revert SafeCastOverflowedUintDowncast(152, value); + } + return uint152(value); + } + + /** + * @dev Returns the downcasted uint144 from uint256, reverting on + * overflow (when the input is greater than largest uint144). + * + * Counterpart to Solidity's `uint144` operator. + * + * Requirements: + * + * - input must fit into 144 bits + */ + function toUint144(uint256 value) internal pure returns (uint144) { + if (value > type(uint144).max) { + revert SafeCastOverflowedUintDowncast(144, value); + } + return uint144(value); + } + + /** + * @dev Returns the downcasted uint136 from uint256, reverting on + * overflow (when the input is greater than largest uint136). + * + * Counterpart to Solidity's `uint136` operator. + * + * Requirements: + * + * - input must fit into 136 bits + */ + function toUint136(uint256 value) internal pure returns (uint136) { + if (value > type(uint136).max) { + revert SafeCastOverflowedUintDowncast(136, value); + } + return uint136(value); + } + + /** + * @dev Returns the downcasted uint128 from uint256, reverting on + * overflow (when the input is greater than largest uint128). + * + * Counterpart to Solidity's `uint128` operator. + * + * Requirements: + * + * - input must fit into 128 bits + */ + function toUint128(uint256 value) internal pure returns (uint128) { + if (value > type(uint128).max) { + revert SafeCastOverflowedUintDowncast(128, value); + } + return uint128(value); + } + + /** + * @dev Returns the downcasted uint120 from uint256, reverting on + * overflow (when the input is greater than largest uint120). + * + * Counterpart to Solidity's `uint120` operator. + * + * Requirements: + * + * - input must fit into 120 bits + */ + function toUint120(uint256 value) internal pure returns (uint120) { + if (value > type(uint120).max) { + revert SafeCastOverflowedUintDowncast(120, value); + } + return uint120(value); + } + + /** + * @dev Returns the downcasted uint112 from uint256, reverting on + * overflow (when the input is greater than largest uint112). + * + * Counterpart to Solidity's `uint112` operator. + * + * Requirements: + * + * - input must fit into 112 bits + */ + function toUint112(uint256 value) internal pure returns (uint112) { + if (value > type(uint112).max) { + revert SafeCastOverflowedUintDowncast(112, value); + } + return uint112(value); + } + + /** + * @dev Returns the downcasted uint104 from uint256, reverting on + * overflow (when the input is greater than largest uint104). + * + * Counterpart to Solidity's `uint104` operator. + * + * Requirements: + * + * - input must fit into 104 bits + */ + function toUint104(uint256 value) internal pure returns (uint104) { + if (value > type(uint104).max) { + revert SafeCastOverflowedUintDowncast(104, value); + } + return uint104(value); + } + + /** + * @dev Returns the downcasted uint96 from uint256, reverting on + * overflow (when the input is greater than largest uint96). + * + * Counterpart to Solidity's `uint96` operator. + * + * Requirements: + * + * - input must fit into 96 bits + */ + function toUint96(uint256 value) internal pure returns (uint96) { + if (value > type(uint96).max) { + revert SafeCastOverflowedUintDowncast(96, value); + } + return uint96(value); + } + + /** + * @dev Returns the downcasted uint88 from uint256, reverting on + * overflow (when the input is greater than largest uint88). + * + * Counterpart to Solidity's `uint88` operator. + * + * Requirements: + * + * - input must fit into 88 bits + */ + function toUint88(uint256 value) internal pure returns (uint88) { + if (value > type(uint88).max) { + revert SafeCastOverflowedUintDowncast(88, value); + } + return uint88(value); + } + + /** + * @dev Returns the downcasted uint80 from uint256, reverting on + * overflow (when the input is greater than largest uint80). + * + * Counterpart to Solidity's `uint80` operator. + * + * Requirements: + * + * - input must fit into 80 bits + */ + function toUint80(uint256 value) internal pure returns (uint80) { + if (value > type(uint80).max) { + revert SafeCastOverflowedUintDowncast(80, value); + } + return uint80(value); + } + + /** + * @dev Returns the downcasted uint72 from uint256, reverting on + * overflow (when the input is greater than largest uint72). + * + * Counterpart to Solidity's `uint72` operator. + * + * Requirements: + * + * - input must fit into 72 bits + */ + function toUint72(uint256 value) internal pure returns (uint72) { + if (value > type(uint72).max) { + revert SafeCastOverflowedUintDowncast(72, value); + } + return uint72(value); + } + + /** + * @dev Returns the downcasted uint64 from uint256, reverting on + * overflow (when the input is greater than largest uint64). + * + * Counterpart to Solidity's `uint64` operator. + * + * Requirements: + * + * - input must fit into 64 bits + */ + function toUint64(uint256 value) internal pure returns (uint64) { + if (value > type(uint64).max) { + revert SafeCastOverflowedUintDowncast(64, value); + } + return uint64(value); + } + + /** + * @dev Returns the downcasted uint56 from uint256, reverting on + * overflow (when the input is greater than largest uint56). + * + * Counterpart to Solidity's `uint56` operator. + * + * Requirements: + * + * - input must fit into 56 bits + */ + function toUint56(uint256 value) internal pure returns (uint56) { + if (value > type(uint56).max) { + revert SafeCastOverflowedUintDowncast(56, value); + } + return uint56(value); + } + + /** + * @dev Returns the downcasted uint48 from uint256, reverting on + * overflow (when the input is greater than largest uint48). + * + * Counterpart to Solidity's `uint48` operator. + * + * Requirements: + * + * - input must fit into 48 bits + */ + function toUint48(uint256 value) internal pure returns (uint48) { + if (value > type(uint48).max) { + revert SafeCastOverflowedUintDowncast(48, value); + } + return uint48(value); + } + + /** + * @dev Returns the downcasted uint40 from uint256, reverting on + * overflow (when the input is greater than largest uint40). + * + * Counterpart to Solidity's `uint40` operator. + * + * Requirements: + * + * - input must fit into 40 bits + */ + function toUint40(uint256 value) internal pure returns (uint40) { + if (value > type(uint40).max) { + revert SafeCastOverflowedUintDowncast(40, value); + } + return uint40(value); + } + + /** + * @dev Returns the downcasted uint32 from uint256, reverting on + * overflow (when the input is greater than largest uint32). + * + * Counterpart to Solidity's `uint32` operator. + * + * Requirements: + * + * - input must fit into 32 bits + */ + function toUint32(uint256 value) internal pure returns (uint32) { + if (value > type(uint32).max) { + revert SafeCastOverflowedUintDowncast(32, value); + } + return uint32(value); + } + + /** + * @dev Returns the downcasted uint24 from uint256, reverting on + * overflow (when the input is greater than largest uint24). + * + * Counterpart to Solidity's `uint24` operator. + * + * Requirements: + * + * - input must fit into 24 bits + */ + function toUint24(uint256 value) internal pure returns (uint24) { + if (value > type(uint24).max) { + revert SafeCastOverflowedUintDowncast(24, value); + } + return uint24(value); + } + + /** + * @dev Returns the downcasted uint16 from uint256, reverting on + * overflow (when the input is greater than largest uint16). + * + * Counterpart to Solidity's `uint16` operator. + * + * Requirements: + * + * - input must fit into 16 bits + */ + function toUint16(uint256 value) internal pure returns (uint16) { + if (value > type(uint16).max) { + revert SafeCastOverflowedUintDowncast(16, value); + } + return uint16(value); + } + + /** + * @dev Returns the downcasted uint8 from uint256, reverting on + * overflow (when the input is greater than largest uint8). + * + * Counterpart to Solidity's `uint8` operator. + * + * Requirements: + * + * - input must fit into 8 bits + */ + function toUint8(uint256 value) internal pure returns (uint8) { + if (value > type(uint8).max) { + revert SafeCastOverflowedUintDowncast(8, value); + } + return uint8(value); + } + + /** + * @dev Converts a signed int256 into an unsigned uint256. + * + * Requirements: + * + * - input must be greater than or equal to 0. + */ + function toUint256(int256 value) internal pure returns (uint256) { + if (value < 0) { + revert SafeCastOverflowedIntToUint(value); + } + return uint256(value); + } + + /** + * @dev Returns the downcasted int248 from int256, reverting on + * overflow (when the input is less than smallest int248 or + * greater than largest int248). + * + * Counterpart to Solidity's `int248` operator. + * + * Requirements: + * + * - input must fit into 248 bits + */ + function toInt248(int256 value) internal pure returns (int248 downcasted) { + downcasted = int248(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(248, value); + } + } + + /** + * @dev Returns the downcasted int240 from int256, reverting on + * overflow (when the input is less than smallest int240 or + * greater than largest int240). + * + * Counterpart to Solidity's `int240` operator. + * + * Requirements: + * + * - input must fit into 240 bits + */ + function toInt240(int256 value) internal pure returns (int240 downcasted) { + downcasted = int240(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(240, value); + } + } + + /** + * @dev Returns the downcasted int232 from int256, reverting on + * overflow (when the input is less than smallest int232 or + * greater than largest int232). + * + * Counterpart to Solidity's `int232` operator. + * + * Requirements: + * + * - input must fit into 232 bits + */ + function toInt232(int256 value) internal pure returns (int232 downcasted) { + downcasted = int232(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(232, value); + } + } + + /** + * @dev Returns the downcasted int224 from int256, reverting on + * overflow (when the input is less than smallest int224 or + * greater than largest int224). + * + * Counterpart to Solidity's `int224` operator. + * + * Requirements: + * + * - input must fit into 224 bits + */ + function toInt224(int256 value) internal pure returns (int224 downcasted) { + downcasted = int224(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(224, value); + } + } + + /** + * @dev Returns the downcasted int216 from int256, reverting on + * overflow (when the input is less than smallest int216 or + * greater than largest int216). + * + * Counterpart to Solidity's `int216` operator. + * + * Requirements: + * + * - input must fit into 216 bits + */ + function toInt216(int256 value) internal pure returns (int216 downcasted) { + downcasted = int216(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(216, value); + } + } + + /** + * @dev Returns the downcasted int208 from int256, reverting on + * overflow (when the input is less than smallest int208 or + * greater than largest int208). + * + * Counterpart to Solidity's `int208` operator. + * + * Requirements: + * + * - input must fit into 208 bits + */ + function toInt208(int256 value) internal pure returns (int208 downcasted) { + downcasted = int208(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(208, value); + } + } + + /** + * @dev Returns the downcasted int200 from int256, reverting on + * overflow (when the input is less than smallest int200 or + * greater than largest int200). + * + * Counterpart to Solidity's `int200` operator. + * + * Requirements: + * + * - input must fit into 200 bits + */ + function toInt200(int256 value) internal pure returns (int200 downcasted) { + downcasted = int200(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(200, value); + } + } + + /** + * @dev Returns the downcasted int192 from int256, reverting on + * overflow (when the input is less than smallest int192 or + * greater than largest int192). + * + * Counterpart to Solidity's `int192` operator. + * + * Requirements: + * + * - input must fit into 192 bits + */ + function toInt192(int256 value) internal pure returns (int192 downcasted) { + downcasted = int192(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(192, value); + } + } + + /** + * @dev Returns the downcasted int184 from int256, reverting on + * overflow (when the input is less than smallest int184 or + * greater than largest int184). + * + * Counterpart to Solidity's `int184` operator. + * + * Requirements: + * + * - input must fit into 184 bits + */ + function toInt184(int256 value) internal pure returns (int184 downcasted) { + downcasted = int184(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(184, value); + } + } + + /** + * @dev Returns the downcasted int176 from int256, reverting on + * overflow (when the input is less than smallest int176 or + * greater than largest int176). + * + * Counterpart to Solidity's `int176` operator. + * + * Requirements: + * + * - input must fit into 176 bits + */ + function toInt176(int256 value) internal pure returns (int176 downcasted) { + downcasted = int176(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(176, value); + } + } + + /** + * @dev Returns the downcasted int168 from int256, reverting on + * overflow (when the input is less than smallest int168 or + * greater than largest int168). + * + * Counterpart to Solidity's `int168` operator. + * + * Requirements: + * + * - input must fit into 168 bits + */ + function toInt168(int256 value) internal pure returns (int168 downcasted) { + downcasted = int168(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(168, value); + } + } + + /** + * @dev Returns the downcasted int160 from int256, reverting on + * overflow (when the input is less than smallest int160 or + * greater than largest int160). + * + * Counterpart to Solidity's `int160` operator. + * + * Requirements: + * + * - input must fit into 160 bits + */ + function toInt160(int256 value) internal pure returns (int160 downcasted) { + downcasted = int160(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(160, value); + } + } + + /** + * @dev Returns the downcasted int152 from int256, reverting on + * overflow (when the input is less than smallest int152 or + * greater than largest int152). + * + * Counterpart to Solidity's `int152` operator. + * + * Requirements: + * + * - input must fit into 152 bits + */ + function toInt152(int256 value) internal pure returns (int152 downcasted) { + downcasted = int152(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(152, value); + } + } + + /** + * @dev Returns the downcasted int144 from int256, reverting on + * overflow (when the input is less than smallest int144 or + * greater than largest int144). + * + * Counterpart to Solidity's `int144` operator. + * + * Requirements: + * + * - input must fit into 144 bits + */ + function toInt144(int256 value) internal pure returns (int144 downcasted) { + downcasted = int144(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(144, value); + } + } + + /** + * @dev Returns the downcasted int136 from int256, reverting on + * overflow (when the input is less than smallest int136 or + * greater than largest int136). + * + * Counterpart to Solidity's `int136` operator. + * + * Requirements: + * + * - input must fit into 136 bits + */ + function toInt136(int256 value) internal pure returns (int136 downcasted) { + downcasted = int136(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(136, value); + } + } + + /** + * @dev Returns the downcasted int128 from int256, reverting on + * overflow (when the input is less than smallest int128 or + * greater than largest int128). + * + * Counterpart to Solidity's `int128` operator. + * + * Requirements: + * + * - input must fit into 128 bits + */ + function toInt128(int256 value) internal pure returns (int128 downcasted) { + downcasted = int128(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(128, value); + } + } + + /** + * @dev Returns the downcasted int120 from int256, reverting on + * overflow (when the input is less than smallest int120 or + * greater than largest int120). + * + * Counterpart to Solidity's `int120` operator. + * + * Requirements: + * + * - input must fit into 120 bits + */ + function toInt120(int256 value) internal pure returns (int120 downcasted) { + downcasted = int120(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(120, value); + } + } + + /** + * @dev Returns the downcasted int112 from int256, reverting on + * overflow (when the input is less than smallest int112 or + * greater than largest int112). + * + * Counterpart to Solidity's `int112` operator. + * + * Requirements: + * + * - input must fit into 112 bits + */ + function toInt112(int256 value) internal pure returns (int112 downcasted) { + downcasted = int112(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(112, value); + } + } + + /** + * @dev Returns the downcasted int104 from int256, reverting on + * overflow (when the input is less than smallest int104 or + * greater than largest int104). + * + * Counterpart to Solidity's `int104` operator. + * + * Requirements: + * + * - input must fit into 104 bits + */ + function toInt104(int256 value) internal pure returns (int104 downcasted) { + downcasted = int104(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(104, value); + } + } + + /** + * @dev Returns the downcasted int96 from int256, reverting on + * overflow (when the input is less than smallest int96 or + * greater than largest int96). + * + * Counterpart to Solidity's `int96` operator. + * + * Requirements: + * + * - input must fit into 96 bits + */ + function toInt96(int256 value) internal pure returns (int96 downcasted) { + downcasted = int96(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(96, value); + } + } + + /** + * @dev Returns the downcasted int88 from int256, reverting on + * overflow (when the input is less than smallest int88 or + * greater than largest int88). + * + * Counterpart to Solidity's `int88` operator. + * + * Requirements: + * + * - input must fit into 88 bits + */ + function toInt88(int256 value) internal pure returns (int88 downcasted) { + downcasted = int88(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(88, value); + } + } + + /** + * @dev Returns the downcasted int80 from int256, reverting on + * overflow (when the input is less than smallest int80 or + * greater than largest int80). + * + * Counterpart to Solidity's `int80` operator. + * + * Requirements: + * + * - input must fit into 80 bits + */ + function toInt80(int256 value) internal pure returns (int80 downcasted) { + downcasted = int80(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(80, value); + } + } + + /** + * @dev Returns the downcasted int72 from int256, reverting on + * overflow (when the input is less than smallest int72 or + * greater than largest int72). + * + * Counterpart to Solidity's `int72` operator. + * + * Requirements: + * + * - input must fit into 72 bits + */ + function toInt72(int256 value) internal pure returns (int72 downcasted) { + downcasted = int72(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(72, value); + } + } + + /** + * @dev Returns the downcasted int64 from int256, reverting on + * overflow (when the input is less than smallest int64 or + * greater than largest int64). + * + * Counterpart to Solidity's `int64` operator. + * + * Requirements: + * + * - input must fit into 64 bits + */ + function toInt64(int256 value) internal pure returns (int64 downcasted) { + downcasted = int64(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(64, value); + } + } + + /** + * @dev Returns the downcasted int56 from int256, reverting on + * overflow (when the input is less than smallest int56 or + * greater than largest int56). + * + * Counterpart to Solidity's `int56` operator. + * + * Requirements: + * + * - input must fit into 56 bits + */ + function toInt56(int256 value) internal pure returns (int56 downcasted) { + downcasted = int56(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(56, value); + } + } + + /** + * @dev Returns the downcasted int48 from int256, reverting on + * overflow (when the input is less than smallest int48 or + * greater than largest int48). + * + * Counterpart to Solidity's `int48` operator. + * + * Requirements: + * + * - input must fit into 48 bits + */ + function toInt48(int256 value) internal pure returns (int48 downcasted) { + downcasted = int48(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(48, value); + } + } + + /** + * @dev Returns the downcasted int40 from int256, reverting on + * overflow (when the input is less than smallest int40 or + * greater than largest int40). + * + * Counterpart to Solidity's `int40` operator. + * + * Requirements: + * + * - input must fit into 40 bits + */ + function toInt40(int256 value) internal pure returns (int40 downcasted) { + downcasted = int40(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(40, value); + } + } + + /** + * @dev Returns the downcasted int32 from int256, reverting on + * overflow (when the input is less than smallest int32 or + * greater than largest int32). + * + * Counterpart to Solidity's `int32` operator. + * + * Requirements: + * + * - input must fit into 32 bits + */ + function toInt32(int256 value) internal pure returns (int32 downcasted) { + downcasted = int32(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(32, value); + } + } + + /** + * @dev Returns the downcasted int24 from int256, reverting on + * overflow (when the input is less than smallest int24 or + * greater than largest int24). + * + * Counterpart to Solidity's `int24` operator. + * + * Requirements: + * + * - input must fit into 24 bits + */ + function toInt24(int256 value) internal pure returns (int24 downcasted) { + downcasted = int24(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(24, value); + } + } + + /** + * @dev Returns the downcasted int16 from int256, reverting on + * overflow (when the input is less than smallest int16 or + * greater than largest int16). + * + * Counterpart to Solidity's `int16` operator. + * + * Requirements: + * + * - input must fit into 16 bits + */ + function toInt16(int256 value) internal pure returns (int16 downcasted) { + downcasted = int16(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(16, value); + } + } + + /** + * @dev Returns the downcasted int8 from int256, reverting on + * overflow (when the input is less than smallest int8 or + * greater than largest int8). + * + * Counterpart to Solidity's `int8` operator. + * + * Requirements: + * + * - input must fit into 8 bits + */ + function toInt8(int256 value) internal pure returns (int8 downcasted) { + downcasted = int8(value); + if (downcasted != value) { + revert SafeCastOverflowedIntDowncast(8, value); + } + } + + /** + * @dev Converts an unsigned uint256 into a signed int256. + * + * Requirements: + * + * - input must be less than or equal to maxInt256. + */ + function toInt256(uint256 value) internal pure returns (int256) { + // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive + if (value > uint256(type(int256).max)) { + revert SafeCastOverflowedUintToInt(value); + } + return int256(value); + } + + /** + * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump. + */ + function toUint(bool b) internal pure returns (uint256 u) { + assembly ("memory-safe") { + u := iszero(iszero(b)) + } + } +} diff --git a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/SignedMath.sol b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/SignedMath.sol index c0eb2ae4..7f2a7380 100644 --- a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/SignedMath.sol +++ b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/SignedMath.sol @@ -1,24 +1,42 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -// OpenZeppelin Contracts (last updated v5.0.0) (utils/math/SignedMath.sol) +import {SafeCast} from './SafeCast.sol'; + +// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol) /** * @dev Standard signed math utilities missing in the Solidity language. */ library SignedMath { + /** + * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant. + * + * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone. + * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute + * one branch when needed, making this function more expensive. + */ + function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) { + unchecked { + // branchless ternary works because: + // b ^ (a ^ b) == a + // b ^ 0 == b + return b ^ ((a ^ b) * int256(SafeCast.toUint(condition))); + } + } + /** * @dev Returns the largest of two signed numbers. */ function max(int256 a, int256 b) internal pure returns (int256) { - return a > b ? a : b; + return ternary(a > b, a, b); } /** * @dev Returns the smallest of two signed numbers. */ function min(int256 a, int256 b) internal pure returns (int256) { - return a < b ? a : b; + return ternary(a < b, a, b); } /** @@ -36,8 +54,15 @@ library SignedMath { */ function abs(int256 n) internal pure returns (uint256) { unchecked { - // must be unchecked in order to support `n = type(int256).min` - return uint256(n >= 0 ? n : -n); + // Formula from the "Bit Twiddling Hacks" by Sean Eron Anderson. + // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift, + // taking advantage of the most significant (or "sign" bit) in two's complement representation. + // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result, + // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative). + int256 mask = n >> 255; + + // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it. + return uint256((n + mask) ^ mask); } } } diff --git a/src/briefcase/protocols/uerc20-factory/interfaces/ITokenFactory.sol b/src/briefcase/protocols/uerc20-factory/interfaces/ITokenFactory.sol new file mode 100644 index 00000000..18e529e0 --- /dev/null +++ b/src/briefcase/protocols/uerc20-factory/interfaces/ITokenFactory.sol @@ -0,0 +1,30 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2; + +/** + * @title ITokenFactory + * @dev Generic interface for a token factory. + */ +interface ITokenFactory { + /// @notice Emitted when a new token is created + event TokenCreated(address tokenAddress); + + /** + * @notice Creates a new token contract + * @param name The ERC20-style name of the token. + * @param symbol The ERC20-style symbol of the token. + * @param decimals The number of decimal places for the token. + * @param initialSupply The initial supply to mint upon creation. + * @param recipient The recipient of the initial supply. + * @param data Additional factory-specific data required for token creation. + * @return tokenAddress The address of the newly created token. + */ + function createToken( + string calldata name, + string calldata symbol, + uint8 decimals, + uint256 initialSupply, + address recipient, + bytes calldata data + ) external returns (address tokenAddress); +} diff --git a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol new file mode 100644 index 00000000..b6484e2f --- /dev/null +++ b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2; + +import {UERC20Metadata} from '../libraries/UERC20Metadata.sol'; +import {ITokenFactory} from './ITokenFactory.sol'; + +/// @title IUERC20Factory +/// @notice Interface for the IUERC20Factory contract +interface IUERC20Factory is ITokenFactory { + /// @notice Parameters struct to be used by the UERC20 during construction + struct Parameters { + string name; + string symbol; + uint256 totalSupply; + address recipient; + uint8 decimals; + UERC20Metadata metadata; + } + + /// @notice Thrown when the caller is not the creator in the initial deployment of a token + error NotCreator(address sender, address creator); + + /// @notice Computes the deterministic address for a token based on its core parameters + /// @param name The name of the token + /// @param symbol The symbol of the token + /// @param decimals The number of decimals the token uses + /// @param creator The creator of the token + /// @return The deterministic address of the token + function getUERC20Address(string memory name, string memory symbol, uint8 decimals, address creator) + external + view + returns (address); + + /// @notice Gets the parameters for token initialization + /// @return The parameters structure with all token initialization data + function getParameters() external view returns (Parameters memory); +} diff --git a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol new file mode 100644 index 00000000..2cc14c8f --- /dev/null +++ b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.2; + +import {UERC20Metadata} from '../libraries/UERC20Metadata.sol'; +import {ITokenFactory} from './ITokenFactory.sol'; + +/// @title IUERC20SuperchainFactory +/// @notice Interface for the UERC20SuperchainFactory contract +interface IUERC20SuperchainFactory is ITokenFactory { + /// @notice Parameters struct to be used by the UERC20Superchain during construction + struct Parameters { + string name; + string symbol; + uint256 totalSupply; + uint256 homeChainId; + address recipient; + uint8 decimals; + UERC20Metadata metadata; + } + + /// @notice Thrown when the caller is not the creator in the initial deployment of a token + error NotCreator(address sender, address creator); + + /// @notice Computes the deterministic address for a token based on its core parameters + /// @param name The name of the token + /// @param symbol The symbol of the token + /// @param decimals The number of decimals the token uses + /// @param homeChainId The hub chain ID of the token + /// @param creator The creator of the token + /// @return The deterministic address of the token + function getUERC20SuperchainAddress( + string memory name, + string memory symbol, + uint8 decimals, + uint256 homeChainId, + address creator + ) external view returns (address); + + /// @notice Gets the parameters for token initialization + /// @return The parameters structure with all token initialization data + function getParameters() external view returns (Parameters memory); +} diff --git a/src/briefcase/protocols/uerc20-factory/libraries/UERC20Metadata.sol b/src/briefcase/protocols/uerc20-factory/libraries/UERC20Metadata.sol new file mode 100644 index 00000000..015b0407 --- /dev/null +++ b/src/briefcase/protocols/uerc20-factory/libraries/UERC20Metadata.sol @@ -0,0 +1,44 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import {Base64} from '../../lib-external/openzeppelin-contracts/contracts/utils/Base64.sol'; +import {Strings} from '../../lib-external/openzeppelin-contracts/contracts/utils/Strings.sol'; + +struct UERC20Metadata { + address creator; + string description; + string website; + string image; +} + +/// @title UERC20MetadataLibrary +/// @notice Library for generating base64 encoded JSON token metadata +library UERC20MetadataLibrary { + using Strings for *; + + /// @notice Generates a base64 encoded JSON string of the token metadata + /// @param metadata The token metadata + /// @return The base64 encoded JSON string + function toJSON(UERC20Metadata memory metadata) public pure returns (string memory) { + return string(abi.encodePacked('data:application/json;base64,', Base64.encode(displayMetadata(metadata)))); + } + + /// @notice Generates an abi encoded JSON string of the token metadata + /// @param metadata The token metadata + /// @return The abi encoded JSON string + function displayMetadata(UERC20Metadata memory metadata) private pure returns (bytes memory) { + bytes memory json = abi.encodePacked('{"Creator":"', metadata.creator.toChecksumHexString(), '"'); + + if (bytes(metadata.description).length > 0) { + json = abi.encodePacked(json, ', "Description":"', metadata.description.escapeJSON(), '"'); + } + if (bytes(metadata.website).length > 0) { + json = abi.encodePacked(json, ', "Website":"', metadata.website.escapeJSON(), '"'); + } + if (bytes(metadata.image).length > 0) { + json = abi.encodePacked(json, ', "Image":"', metadata.image.escapeJSON(), '"'); + } + + return abi.encodePacked(json, '}'); + } +} diff --git a/src/pkgs/uerc20-factory b/src/pkgs/uerc20-factory new file mode 160000 index 00000000..2122b10e --- /dev/null +++ b/src/pkgs/uerc20-factory @@ -0,0 +1 @@ +Subproject commit 2122b10e40827f1a0630245c936800d28667c34f From 332393da5c332e3a93b470675bb4746cfaf621b9 Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Fri, 16 May 2025 14:44:30 -0400 Subject: [PATCH 02/13] library name change --- .../uerc20-factory/UERC20FactoryDeployer.sol | 4 ++-- .../uerc20-factory/UERC20MetadataDeployer.sol | 21 ------------------ .../UERC20MetadataLibraryDeployer.sol | 22 +++++++++++++++++++ .../UERC20SuperchainFactoryDeployer.sol | 4 ++-- .../contracts/utils/Strings.sol | 6 ++++- .../contracts/utils/math/Math.sol | 2 +- .../interfaces/IUERC20Factory.sol | 2 +- .../interfaces/IUERC20SuperchainFactory.sol | 2 +- ...Metadata.sol => UERC20MetadataLibrary.sol} | 0 src/pkgs/uerc20-factory | 2 +- 10 files changed, 35 insertions(+), 30 deletions(-) delete mode 100644 src/briefcase/deployers/uerc20-factory/UERC20MetadataDeployer.sol create mode 100644 src/briefcase/deployers/uerc20-factory/UERC20MetadataLibraryDeployer.sol rename src/briefcase/protocols/uerc20-factory/libraries/{UERC20Metadata.sol => UERC20MetadataLibrary.sol} (100%) diff --git a/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol index 1d3a2800..4eb7ef9b 100644 --- a/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol +++ b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol @@ -3,11 +3,11 @@ pragma solidity >= 0.8.0; import {IUERC20Factory} from '../../protocols/uerc20-factory/interfaces/IUERC20Factory.sol'; import {DeployerHelper} from '../DeployerHelper.sol'; -import {UERC20MetadataDeployer} from './UERC20MetadataDeployer.sol'; +import {UERC20MetadataLibraryDeployer} from './UERC20MetadataLibraryDeployer.sol'; library UERC20FactoryDeployer { function deploy() internal returns (IUERC20Factory uerc20Factory) { - address uerc20Metadata = UERC20MetadataDeployer.deploy(); + address uerc20Metadata = UERC20MetadataLibraryDeployer.deploy(); bytes memory initcode_ = abi.encodePacked(initcode(uerc20Metadata)); uerc20Factory = IUERC20Factory(DeployerHelper.create(initcode_)); } diff --git a/src/briefcase/deployers/uerc20-factory/UERC20MetadataDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20MetadataDeployer.sol deleted file mode 100644 index d42d78cb..00000000 --- a/src/briefcase/deployers/uerc20-factory/UERC20MetadataDeployer.sol +++ /dev/null @@ -1,21 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >= 0.8.0; - -import {DeployerHelper} from '../DeployerHelper.sol'; - -library UERC20MetadataDeployer { - function deploy() internal returns (address uerc20Metadata) { - bytes memory initcode_ = abi.encodePacked(initcode()); - uerc20Metadata = DeployerHelper.create2(initcode_); - } - - /** - * @dev autogenerated - run `./script/util/create_briefcase.sh` to generate current initcode - * - * @notice This initcode is generated from the following contract: - * - Source Contract: src/pkgs/uerc20-factory/src/libraries/UERC20Metadata.sol - */ - function initcode() internal pure returns (bytes memory) { - return hex''; - } -} diff --git a/src/briefcase/deployers/uerc20-factory/UERC20MetadataLibraryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20MetadataLibraryDeployer.sol new file mode 100644 index 00000000..13ad1b84 --- /dev/null +++ b/src/briefcase/deployers/uerc20-factory/UERC20MetadataLibraryDeployer.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: MIT +pragma solidity >= 0.8.0; + +import {DeployerHelper} from '../DeployerHelper.sol'; + +library UERC20MetadataLibraryDeployer { + function deploy() internal returns (address uerc20MetadataLibrary) { + bytes memory initcode_ = abi.encodePacked(initcode()); + uerc20MetadataLibrary = DeployerHelper.create2(initcode_); + } + + /** + * @dev autogenerated - run `./script/util/create_briefcase.sh` to generate current initcode + * + * @notice This initcode is generated from the following contract: + * - Source Contract: src/pkgs/uerc20-factory/src/libraries/UERC20MetadataLibrary.sol + */ + function initcode() internal pure returns (bytes memory) { + return + hex'610bdc610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c80637193124414610038575b5f5ffd5b61004b6100463660046108b1565b610061565b6040516100589190610991565b60405180910390f35b606061007461006f8361009a565b6101b1565b60405160200161008491906109dd565b6040516020818303038152906040529050919050565b60605f6100b2835f01516001600160a01b03166101dd565b6040516020016100c29190610a0e565b60405160208183030381529060405290505f836020015151111561011157806100ee846020015161028b565b6040516020016100ff929190610a3f565b60405160208183030381529060405290505b6040830151511561014d578061012a846040015161028b565b60405160200161013b929190610a81565b60405160208183030381529060405290505b606083015151156101895780610166846060015161028b565b604051602001610177929190610aac565b60405160208183030381529060405290505b8060405160200161019a9190610ad5565b604051602081830303815290604052915050919050565b60606101d782604051806060016040528060408152602001610b906040913960016104dd565b92915050565b60605f6101e98361065a565b6028602282012090915060601c60295b600181111561028257600782600f1611801561022e5750606083828151811061022457610224610af1565b016020015160f81c115b1561026b57602060f81b83828151811061024a5761024a610af1565b0160200180516001600160f81b0319908116909218909116905f82901a9053505b60049190911c9061027b81610b19565b90506101f9565b50909392505050565b805160609082905f9061029f906002610b2e565b67ffffffffffffffff8111156102b7576102b76107e9565b6040519080825280601f01601f1916602001820160405280156102e1576020820181803683370190505b5090505f805b83518110156104c6575f6102fe8583016020015190565b90506b100000000000000400003700600160f883901c1b161561048857601760fa1b848461032b81610b45565b95508151811061033d5761033d610af1565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b036103a557603160f91b848461037881610b45565b95508151811061038a5761038a610af1565b60200101906001600160f81b03191690815f1a9053506104bd565b6001600160f81b03198116600960f81b036103ca57601d60fa1b848461037881610b45565b6001600160f81b03198116600560f91b036103ef57603760f91b848461037881610b45565b6001600160f81b03198116600360fa1b0361041457603360f91b848461037881610b45565b6001600160f81b03198116600d60f81b0361043957603960f91b848461037881610b45565b6001600160f81b03198116601760fa1b0361045e57601760fa1b848461037881610b45565b6001600160f81b03198116601160f91b0361048357601160f91b848461037881610b45565b6104bd565b80848461049481610b45565b9550815181106104a6576104a6610af1565b60200101906001600160f81b03191690815f1a9053505b506001016102e7565b50808252603f01601f191681016040529392505050565b606083515f036104fb575060408051602081019091525f8152610653565b5f8261052b576003855160046105119190610b2e565b61051c906002610b5d565b6105269190610b70565b610550565b60038551600261053b9190610b5d565b6105459190610b70565b610550906004610b2e565b90505f8167ffffffffffffffff81111561056c5761056c6107e9565b6040519080825280601f01601f191660200182016040528015610596576020820181803683370190505b509050600185016020820187885189016020810180515f82525b8284101561060b576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506105b0565b90525050851561064c5760038851066001811461062f57600281146106425761064a565b603d6001830353603d600283035361064a565b603d60018303535b505b5090925050505b9392505050565b60606101d76001600160a01b03831660146060825f61067a846002610b2e565b610685906002610b5d565b67ffffffffffffffff81111561069d5761069d6107e9565b6040519080825280601f01601f1916602001820160405280156106c7576020820181803683370190505b509050600360fc1b815f815181106106e1576106e1610af1565b60200101906001600160f81b03191690815f1a905350600f60fb1b8160018151811061070f5761070f610af1565b60200101906001600160f81b03191690815f1a9053505f610731856002610b2e565b61073c906001610b5d565b90505b60018111156107b3576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061077057610770610af1565b1a60f81b82828151811061078657610786610af1565b60200101906001600160f81b03191690815f1a90535060049290921c916107ac81610b19565b905061073f565b5081156107e15760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715610820576108206107e9565b60405290565b5f82601f830112610835575f5ffd5b813567ffffffffffffffff81111561084f5761084f6107e9565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561087e5761087e6107e9565b604052818152838201602001851015610895575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156108c1575f5ffd5b813567ffffffffffffffff8111156108d7575f5ffd5b8201608081850312156108e8575f5ffd5b6108f06107fd565b81356001600160a01b0381168114610906575f5ffd5b8152602082013567ffffffffffffffff811115610921575f5ffd5b61092d86828501610826565b602083015250604082013567ffffffffffffffff81111561094c575f5ffd5b61095886828501610826565b604083015250606082013567ffffffffffffffff811115610977575f5ffd5b61098386828501610826565b606083015250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610653601d8301846109c6565b6b3d9121b932b0ba37b9111d1160a11b81525f610a2e600c8301846109c6565b601160f91b81526001019392505050565b5f610a4a82856109c6565b701610112232b9b1b934b83a34b7b7111d1160791b8152610a6e60118201856109c6565b601160f91b815260010195945050505050565b5f610a8c82856109c6565b6c1610112bb2b139b4ba32911d1160991b8152610a6e600d8201856109c6565b5f610ab782856109c6565b6a16101124b6b0b3b2911d1160a91b8152610a6e600b8201856109c6565b5f610ae082846109c6565b607d60f81b81526001019392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f81610b2757610b27610b05565b505f190190565b80820281158282048414176101d7576101d7610b05565b5f60018201610b5657610b56610b05565b5060010190565b808201808211156101d7576101d7610b05565b5f82610b8a57634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000a'; + } +} diff --git a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol index f92085c4..4ed48d78 100644 --- a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol +++ b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol @@ -3,11 +3,11 @@ pragma solidity >= 0.8.0; import {IUERC20SuperchainFactory} from '../../protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol'; import {DeployerHelper} from '../DeployerHelper.sol'; -import {UERC20MetadataDeployer} from './UERC20MetadataDeployer.sol'; +import {UERC20MetadataLibraryDeployer} from './UERC20MetadataLibraryDeployer.sol'; library UERC20SuperchainFactoryDeployer { function deploy() internal returns (IUERC20SuperchainFactory uerc20SuperchainFactory) { - address uerc20Metadata = UERC20MetadataDeployer.deploy(); + address uerc20Metadata = UERC20MetadataLibraryDeployer.deploy(); bytes memory initcode_ = abi.encodePacked(initcode(uerc20Metadata)); uerc20SuperchainFactory = IUERC20SuperchainFactory(DeployerHelper.create(initcode_)); } diff --git a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Strings.sol b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Strings.sol index d55dfcb4..9dc10011 100644 --- a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Strings.sol +++ b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/Strings.sol @@ -5,7 +5,7 @@ import {Math} from './math/Math.sol'; import {SafeCast} from './math/SafeCast.sol'; import {SignedMath} from './math/SignedMath.sol'; -// OpenZeppelin Contracts (last updated v5.2.0) (utils/Strings.sol) +// OpenZeppelin Contracts (last updated v5.3.0) (utils/Strings.sol) /** * @dev String operations. @@ -439,6 +439,10 @@ library Strings { * @dev Escape special characters in JSON strings. This can be useful to prevent JSON injection in NFT metadata. * * WARNING: This function should only be used in double quoted JSON strings. Single quotes are not escaped. + * + * NOTE: This function escapes all unicode characters, and not just the ones in ranges defined in section 2.5 of + * RFC-4627 (U+0000 to U+001F, U+0022 and U+005C). ECMAScript's `JSON.parse` does recover escaped unicode + * characters that are not in this range, but other tooling may provide different results. */ function escapeJSON(string memory input) internal pure returns (string memory) { bytes memory buffer = bytes(input); diff --git a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/Math.sol b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/Math.sol index fb25dfb5..4cc07f99 100644 --- a/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/Math.sol +++ b/src/briefcase/protocols/lib-external/openzeppelin-contracts/contracts/utils/math/Math.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.20; import {Panic} from '../Panic.sol'; import {SafeCast} from './SafeCast.sol'; -// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol) +// OpenZeppelin Contracts (last updated v5.3.0) (utils/math/Math.sol) /** * @dev Standard math utilities missing in the Solidity language. diff --git a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol index b6484e2f..b6365a27 100644 --- a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol +++ b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.6.2; -import {UERC20Metadata} from '../libraries/UERC20Metadata.sol'; +import {UERC20Metadata} from '../libraries/UERC20MetadataLibrary.sol'; import {ITokenFactory} from './ITokenFactory.sol'; /// @title IUERC20Factory diff --git a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol index 2cc14c8f..f6611108 100644 --- a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol +++ b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.6.2; -import {UERC20Metadata} from '../libraries/UERC20Metadata.sol'; +import {UERC20Metadata} from '../libraries/UERC20MetadataLibrary.sol'; import {ITokenFactory} from './ITokenFactory.sol'; /// @title IUERC20SuperchainFactory diff --git a/src/briefcase/protocols/uerc20-factory/libraries/UERC20Metadata.sol b/src/briefcase/protocols/uerc20-factory/libraries/UERC20MetadataLibrary.sol similarity index 100% rename from src/briefcase/protocols/uerc20-factory/libraries/UERC20Metadata.sol rename to src/briefcase/protocols/uerc20-factory/libraries/UERC20MetadataLibrary.sol diff --git a/src/pkgs/uerc20-factory b/src/pkgs/uerc20-factory index 2122b10e..07873e90 160000 --- a/src/pkgs/uerc20-factory +++ b/src/pkgs/uerc20-factory @@ -1 +1 @@ -Subproject commit 2122b10e40827f1a0630245c936800d28667c34f +Subproject commit 07873e9007622544d2d05e937789ae7c019af4ea From 17334cd6bb2a67d2beafc62afe1c5d79b87b1122 Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Sat, 17 May 2025 21:09:33 -0400 Subject: [PATCH 03/13] fixes --- script/deploy/Deploy-all.s.sol | 22 +++++++++++++++++-- script/deploy/tasks/task_template.json | 13 +++++------ .../uerc20-factory/UERC20FactoryDeployer.sol | 7 +++--- .../UERC20SuperchainFactoryDeployer.sol | 10 +++++---- 4 files changed, 35 insertions(+), 17 deletions(-) diff --git a/script/deploy/Deploy-all.s.sol b/script/deploy/Deploy-all.s.sol index 52f0b767..df84a031 100644 --- a/script/deploy/Deploy-all.s.sol +++ b/script/deploy/Deploy-all.s.sol @@ -47,6 +47,9 @@ import {UERC20FactoryDeployer} from '../../src/briefcase/deployers/uerc20-factor import {UERC20SuperchainFactoryDeployer} from '../../src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol'; +import {UERC20MetadataLibraryDeployer} from + '../../src/briefcase/deployers/uerc20-factory/UERC20MetadataLibraryDeployer.sol'; + contract Deploy is Script { using stdJson for string; @@ -441,19 +444,34 @@ contract Deploy is Script { function deployUERC20Factory() private { if (!config.readBoolOr('.protocols.uerc20-factory.deploy', false)) return; + bool deployUERC20MetadataLibrary = + config.readBoolOr('.protocols.uerc20-factory.contracts.UERC20MetadataLibrary.deploy', false); bool deployUERC20FactoryMainnet = config.readBoolOr('.protocols.uerc20-factory.contracts.UERC20Factory.deploy', false); bool deployUERC20SuperchainFactory = config.readBoolOr('.protocols.uerc20-factory.contracts.UERC20SuperchainFactory.deploy', false); + // Params + address uerc20MetadataLibrary; + + if (deployUERC20MetadataLibrary) { + console.log('deploying UERC20 Metadata Library'); + uerc20MetadataLibrary = UERC20MetadataLibraryDeployer.deploy(); + } + + if (!deployUERC20MetadataLibrary) { + uerc20MetadataLibrary = + config.readAddress('.protocols.uerc20-factory.contracts.UERC20MetadataLibrary.address'); + } + if (deployUERC20FactoryMainnet) { console.log('deploying UERC20 Factory'); - UERC20FactoryDeployer.deploy(); + UERC20FactoryDeployer.deploy(uerc20MetadataLibrary); } if (deployUERC20SuperchainFactory) { console.log('deploying UERC20 Superchain Factory'); - UERC20SuperchainFactoryDeployer.deploy(); + UERC20SuperchainFactoryDeployer.deploy(uerc20MetadataLibrary); } } diff --git a/script/deploy/tasks/task_template.json b/script/deploy/tasks/task_template.json index f028ad00..db500838 100644 --- a/script/deploy/tasks/task_template.json +++ b/script/deploy/tasks/task_template.json @@ -403,19 +403,18 @@ "name": "UERC20 Factory", "deploy": false, "contracts": { + "UERC20MetadataLibrary": { + "deploy": false, + "address": null + }, "UERC20Factory": { "deploy": false, - "address": null, - "params": {} + "address": null }, "UERC20SuperchainFactory": { "deploy": false, - "address": null, - "params": {} + "address": null } - }, - "lookup": { - "latest": "UERC20Factory" } } }, diff --git a/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol index 4eb7ef9b..e50154da 100644 --- a/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol +++ b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol @@ -6,10 +6,9 @@ import {DeployerHelper} from '../DeployerHelper.sol'; import {UERC20MetadataLibraryDeployer} from './UERC20MetadataLibraryDeployer.sol'; library UERC20FactoryDeployer { - function deploy() internal returns (IUERC20Factory uerc20Factory) { - address uerc20Metadata = UERC20MetadataLibraryDeployer.deploy(); - bytes memory initcode_ = abi.encodePacked(initcode(uerc20Metadata)); - uerc20Factory = IUERC20Factory(DeployerHelper.create(initcode_)); + function deploy(address uerc20MetadataLibrary) internal returns (IUERC20Factory uerc20Factory) { + bytes memory initcode_ = abi.encodePacked(initcode(uerc20MetadataLibrary)); + uerc20Factory = IUERC20Factory(DeployerHelper.create2(initcode_)); } /** diff --git a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol index 4ed48d78..de1e2d93 100644 --- a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol +++ b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol @@ -6,10 +6,12 @@ import {DeployerHelper} from '../DeployerHelper.sol'; import {UERC20MetadataLibraryDeployer} from './UERC20MetadataLibraryDeployer.sol'; library UERC20SuperchainFactoryDeployer { - function deploy() internal returns (IUERC20SuperchainFactory uerc20SuperchainFactory) { - address uerc20Metadata = UERC20MetadataLibraryDeployer.deploy(); - bytes memory initcode_ = abi.encodePacked(initcode(uerc20Metadata)); - uerc20SuperchainFactory = IUERC20SuperchainFactory(DeployerHelper.create(initcode_)); + function deploy(address uerc20MetadataLibrary) + internal + returns (IUERC20SuperchainFactory uerc20SuperchainFactory) + { + bytes memory initcode_ = abi.encodePacked(initcode(uerc20MetadataLibrary)); + uerc20SuperchainFactory = IUERC20SuperchainFactory(DeployerHelper.create2(initcode_)); } /** From 5addf853409a7d1a8c1070a251efa3ea87859d19 Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Tue, 20 May 2025 11:01:45 -0400 Subject: [PATCH 04/13] library params and update main --- script/deploy/tasks/task_template.json | 52 ++++++++++++++++---------- src/pkgs/uerc20-factory | 2 +- 2 files changed, 33 insertions(+), 21 deletions(-) diff --git a/script/deploy/tasks/task_template.json b/script/deploy/tasks/task_template.json index db500838..e0aa5e24 100644 --- a/script/deploy/tasks/task_template.json +++ b/script/deploy/tasks/task_template.json @@ -409,31 +409,43 @@ }, "UERC20Factory": { "deploy": false, - "address": null + "address": null, + "params": { + "metadataLibrary": { + "name": "UERC20 Metadata Library address", + "pointer": "protocols.uerc20-factory.contracts.UERC20MetadataLibrary" + } + } }, "UERC20SuperchainFactory": { "deploy": false, - "address": null + "address": null, + "params": { + "metadataLibrary": { + "name": "UERC20 Metadata Library address", + "pointer": "protocols.uerc20-factory.contracts.UERC20MetadataLibrary" + } + } } } - } - }, - "dependencies": { - "weth": { - "type": "address", - "lookup": { - "history": [ - "UniversalRouter.input.constructor.params.weth9", - "QuoterV2.input.constructor._WETH9", - "V3Migrator.input.constructor._WETH9", - "NonfungiblePositionManager.input.constructor._WETH9", - "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", - "SwapRouter.input.constructor._WETH9", - "SwapRouter02.input.constructor._WETH9", - "Quoter.input.constructor._WETH9", - "QuoterV2.input.constructor._WETH9", - "UniswapV2Router02.input.constructor._WETH" - ] + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } } } }, diff --git a/src/pkgs/uerc20-factory b/src/pkgs/uerc20-factory index 07873e90..a1efcf9e 160000 --- a/src/pkgs/uerc20-factory +++ b/src/pkgs/uerc20-factory @@ -1 +1 @@ -Subproject commit 07873e9007622544d2d05e937789ae7c019af4ea +Subproject commit a1efcf9e457bdd958902e43aa003501e1a4c9e7a From b4a9aa459287b8c9e0841631a68d02fc93b1b204 Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Tue, 20 May 2025 16:58:29 -0400 Subject: [PATCH 05/13] deploy to unichain sepolia and sepolia --- .../Deploy-all.s.sol/11155111/run-latest.json | 46 + .../Deploy-all.s.sol/1301/run-1747773832.json | 52 + .../Deploy-all.s.sol/1301/run-latest.json | 1200 +---------------- deployments/11155111.md | 196 +-- deployments/1301.md | 534 ++++---- deployments/index.md | 2 +- deployments/json/11155111.json | 21 + deployments/json/1301.json | 21 + script/deploy/Deploy-all.s.sol | 22 +- .../tasks/11155111/task-1747774092.json | 469 +++++++ script/deploy/tasks/1301/task-1747773822.json | 469 +++++++ script/deploy/tasks/task_template.json | 20 +- .../uerc20-factory/UERC20FactoryDeployer.sol | 14 +- .../UERC20MetadataLibraryDeployer.sol | 22 - .../UERC20SuperchainFactoryDeployer.sol | 17 +- .../libraries/UERC20MetadataLibrary.sol | 2 +- src/pkgs/uerc20-factory | 2 +- 17 files changed, 1522 insertions(+), 1587 deletions(-) create mode 100644 broadcast/Deploy-all.s.sol/11155111/run-latest.json create mode 100644 broadcast/Deploy-all.s.sol/1301/run-1747773832.json create mode 100644 script/deploy/tasks/11155111/task-1747774092.json create mode 100644 script/deploy/tasks/1301/task-1747773822.json delete mode 100644 src/briefcase/deployers/uerc20-factory/UERC20MetadataLibraryDeployer.sol diff --git a/broadcast/Deploy-all.s.sol/11155111/run-latest.json b/broadcast/Deploy-all.s.sol/11155111/run-latest.json new file mode 100644 index 00000000..85c3acc3 --- /dev/null +++ b/broadcast/Deploy-all.s.sol/11155111/run-latest.json @@ -0,0 +1,46 @@ +{ + "transactions": [ + { + "hash": "0xe62cda122ca2adcf828362a33347dd80c850e79603dd17b933c83b2fb85c5650", + "transactionType": "CREATE2", + "contractName": "UERC20Factory", + "contractAddress": "0x58b3578be439f47e393503518b5c50fb6339237f", + "function": null, + "arguments": null, + "transaction": { + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506129b68061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80632c0cf9471461004357806394a8b1d414610073578063a5ea11da14610086575b5f5ffd5b6100566100513660046108cf565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109bd565b61030a565b61008e61039c565b60405161006a9190610a6e565b5f806100a983850185610b47565b80519091506001600160a01b031633146100f157805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b6040805160c0810182528a8152602081018a90529081018790526001600160a01b038616606082015260ff8816608082015260a081018290525f806101368c82610c9a565b506020820151600182019061014b9082610c9a565b50604082015160028201556060820151600382018054608085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560a08301518051600484018054919093166001600160a01b031991909116178255602081015190919060058401906101c29082610c9a565b50604082015160028201906101d79082610c9a565b50606082015160038201906101ec9082610c9a565b505083516040515f945061020a93508d92508c918c91602001610d54565b6040516020818303038152906040528051906020012090508060405161022f90610711565b8190604051809103905ff590508015801561024c573d5f5f3e3d5ffd5b5092505f8061025b818061071e565b610268600183015f61071e565b5f600283018190556003830180546001600160a81b03191690556004830180546001600160a01b0319168155906102a2600585018261071e565b6102af600283015f61071e565b6102bc600383015f61071e565b50506040516001600160a01b03861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050979650505050505050565b5f5f858585856040516020016103239493929190610d54565b6040516020818303038152906040528051906020012090505f6040518060200161034c90610711565b601f1982820381018352601f90910116604081905261036e9190602001610d9d565b6040516020818303038152906040528051906020012090506103918282306106df565b979650505050505050565b6103a4610758565b5f6040518060c00160405290815f820180546103bf90610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546103eb90610c16565b80156104365780601f1061040d57610100808354040283529160200191610436565b820191905f5260205f20905b81548152906001019060200180831161041957829003601f168201915b5050505050815260200160018201805461044f90610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461047b90610c16565b80156104c65780601f1061049d576101008083540402835291602001916104c6565b820191905f5260205f20905b8154815290600101906020018083116104a957829003601f168201915b5050509183525050600282015460208083019190915260038301546001600160a01b03808216604080860191909152600160a01b90920460ff1660608501528151608080820190935260048601805490921681526005860180549390950194909391929184019161053690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461056290610c16565b80156105ad5780601f10610584576101008083540402835291602001916105ad565b820191905f5260205f20905b81548152906001019060200180831161059057829003601f168201915b505050505081526020016002820180546105c690610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546105f290610c16565b801561063d5780601f106106145761010080835404028352916020019161063d565b820191905f5260205f20905b81548152906001019060200180831161062057829003601f168201915b5050505050815260200160038201805461065690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461068290610c16565b80156106cd5780601f106106a4576101008083540402835291602001916106cd565b820191905f5260205f20905b8154815290600101906020018083116106b057829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611bf680610db483390190565b50805461072a90610c16565b5f825580601f10610739575050565b601f0160209004905f5260205f209081019061075591906107c7565b50565b6040518060c0016040528060608152602001606081526020015f81526020015f6001600160a01b031681526020015f60ff1681526020016107c260405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b808211156107db575f81556001016107c8565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715610815576108156107df565b60405290565b5f82601f83011261082a575f5ffd5b81356001600160401b03811115610843576108436107df565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610871576108716107df565b604052818152838201602001851015610888575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146108b4575f5ffd5b919050565b80356001600160a01b03811681146108b4575f5ffd5b5f5f5f5f5f5f5f60c0888a0312156108e5575f5ffd5b87356001600160401b038111156108fa575f5ffd5b6109068a828b0161081b565b97505060208801356001600160401b03811115610921575f5ffd5b61092d8a828b0161081b565b96505061093c604089016108a4565b945060608801359350610951608089016108b9565b925060a08801356001600160401b0381111561096b575f5ffd5b88015f80601f83018c1361097d575f5ffd5b5081356001600160401b03811115610993575f5ffd5b6020830191508b60208285010111156109aa575f5ffd5b989b979a50959850939692959293505050565b5f5f5f5f608085870312156109d0575f5ffd5b84356001600160401b038111156109e5575f5ffd5b6109f18782880161081b565b94505060208501356001600160401b03811115610a0c575f5ffd5b610a188782880161081b565b935050610a27604086016108a4565b9150610a35606086016108b9565b905092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f825160c06020840152610a8960e0840182610a40565b90506020840151601f19848303016040850152610aa68282610a40565b9150506040840151606084015260018060a01b03606085015116608084015260ff60808501511660a084015260a0840151601f198483030160c085015260018060a01b038151168252602081015160806020840152610b086080840182610a40565b905060408201518382036040850152610b218282610a40565b915050606082015191508281036060840152610b3d8183610a40565b9695505050505050565b5f60208284031215610b57575f5ffd5b81356001600160401b03811115610b6c575f5ffd5b820160808185031215610b7d575f5ffd5b610b856107f3565b610b8e826108b9565b815260208201356001600160401b03811115610ba8575f5ffd5b610bb48682850161081b565b60208301525060408201356001600160401b03811115610bd2575f5ffd5b610bde8682850161081b565b60408301525060608201356001600160401b03811115610bfc575f5ffd5b610c088682850161081b565b606083015250949350505050565b600181811c90821680610c2a57607f821691505b602082108103610c4857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610c9557805f5260205f20601f840160051c81016020851015610c735750805b601f840160051c820191505b81811015610c92575f8155600101610c7f565b50505b505050565b81516001600160401b03811115610cb357610cb36107df565b610cc781610cc18454610c16565b84610c4e565b6020601f821160018114610cf9575f8315610ce25750848201515b5f19600385901b1c1916600184901b178455610c92565b5f84815260208120601f198516915b82811015610d285787850151825560209485019460019092019101610d08565b5084821015610d4557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608081525f610d666080830187610a40565b8281036020840152610d788187610a40565b60ff95909516604084015250506001600160a01b039190911660609091015292915050565b5f82518060208501845e5f92019182525091905056fe60a060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610073919081019061035e565b80519091505f9061008490826104cb565b50602081015160019061009790826104cb565b5060808181015160ff16905260a08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100db90826104cb565b50604082015160028201906100f090826104cb565b506060820151600382019061010590826104cb565b5050506060810151604082015161011c9190610122565b50610585565b6805345cdf77eb68f44c54818101818110156101455763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101d9576101d96101a3565b60405290565b60405160c081016001600160401b03811182821017156101d9576101d96101a3565b5f82601f830112610210575f5ffd5b81516001600160401b03811115610229576102296101a3565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610257576102576101a3565b60405281815283820160200185101561026e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102a0575f5ffd5b919050565b805160ff811681146102a0575f5ffd5b5f608082840312156102c5575f5ffd5b6102cd6101b7565b90506102d88261028a565b815260208201516001600160401b038111156102f2575f5ffd5b6102fe84828501610201565b60208301525060408201516001600160401b0381111561031c575f5ffd5b61032884828501610201565b60408301525060608201516001600160401b03811115610346575f5ffd5b61035284828501610201565b60608301525092915050565b5f6020828403121561036e575f5ffd5b81516001600160401b03811115610383575f5ffd5b820160c08185031215610394575f5ffd5b61039c6101df565b81516001600160401b038111156103b1575f5ffd5b6103bd86828501610201565b82525060208201516001600160401b038111156103d8575f5ffd5b6103e486828501610201565b602083015250604082810151908201526104006060830161028a565b6060820152610411608083016102a5565b608082015260a08201516001600160401b0381111561042e575f5ffd5b61043a868285016102b5565b60a083015250949350505050565b600181811c9082168061045c57607f821691505b60208210810361047a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561019e57805f5260205f20601f840160051c810160208510156104a55750805b601f840160051c820191505b818110156104c4575f81556001016104b1565b5050505050565b81516001600160401b038111156104e4576104e46101a3565b6104f8816104f28454610448565b84610480565b6020601f82116001811461052a575f83156105135750848201515b5f19600385901b1c1916600184901b1784556104c4565b5f84815260208120601f198516915b828110156105595787850151825560209485019460019092019101610539565b508482101561057657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805161165961059d5f395f61015e01526116595ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80633c130d901161008857806395d89b411161006357806395d89b41146101fa578063a9059cbb14610202578063d505accf14610215578063dd62ed3e1461022a575f5ffd5b80633c130d90146101a857806370a08231146101b05780637ecebe00146101d5575f5ffd5b806323b872dd116100c357806323b872dd14610144578063313ce567146101575780633644e51514610188578063392f37e914610190575f5ffd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f5ffd5b6100f161023d565b6040516100fe919061125d565b60405180910390f35b61011a61011536600461128a565b6102cc565b60405190151581526020016100fe565b6805345cdf77eb68f44c545b6040519081526020016100fe565b61011a6101523660046112b2565b61034c565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100fe565b61013661041c565b610198610498565b6040516100fe94939291906112ec565b6100f161064f565b6101366101be366004611340565b6387a211a2600c9081525f91909152602090205490565b6101366101e3366004611340565b6338377508600c9081525f91909152602090205490565b6100f1610831565b61011a61021036600461128a565b610840565b610228610223366004611359565b6108b7565b005b6101366102383660046113c6565b610a6b565b60605f805461024b906113f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610277906113f7565b80156102c25780601f10610299576101008083540402835291602001916102c2565b820191905f5260205f20905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba318821915176102fd57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa35060015b92915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146103a15733602052637f5e9f208117600c526034600c20805480191561039e5780851115610398576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156103c75763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f8061042661023d565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916104b6906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546104e2906113f7565b801561052d5780601f106105045761010080835404028352916020019161052d565b820191905f5260205f20905b81548152906001019060200180831161051057829003601f168201915b505050505090806002018054610542906113f7565b80601f016020809104026020016040519081016040528092919081815260200182805461056e906113f7565b80156105b95780601f10610590576101008083540402835291602001916105b9565b820191905f5260205f20905b81548152906001019060200180831161059c57829003601f168201915b5050505050908060030180546105ce906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546105fa906113f7565b80156106455780601f1061061c57610100808354040283529160200191610645565b820191905f5260205f20905b81548152906001019060200180831161062857829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b031682526003805460609361082c9390929091602084019190610687906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546106b3906113f7565b80156106fe5780601f106106d5576101008083540402835291602001916106fe565b820191905f5260205f20905b8154815290600101906020018083116106e157829003601f168201915b50505050508152602001600282018054610717906113f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610743906113f7565b801561078e5780601f106107655761010080835404028352916020019161078e565b820191905f5260205f20905b81548152906001019060200180831161077157829003601f168201915b505050505081526020016003820180546107a7906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546107d3906113f7565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b505050505081525050610aaf565b905090565b60606001805461024b906113f7565b5f6387a211a2600c52335f526020600c208054808411156108685763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba318851915176108e757633f68539a5f526004601cfd5b5f6108f061023d565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64286101561092f57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610a175763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610a9457505f19610346565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610ac2610abd83610ae8565b610bff565b604051602001610ad29190611446565b6040516020818303038152906040529050919050565b60605f610b00835f01516001600160a01b0316610c25565b604051602001610b109190611477565b60405160208183030381529060405290505f8360200151511115610b5f5780610b3c8460200151610cd3565b604051602001610b4d9291906114a8565b60405160208183030381529060405290505b60408301515115610b9b5780610b788460400151610cd3565b604051602001610b899291906114ea565b60405160208183030381529060405290505b60608301515115610bd75780610bb48460600151610cd3565b604051602001610bc5929190611515565b60405160208183030381529060405290505b80604051602001610be8919061153e565b604051602081830303815290604052915050919050565b60606103468260405180606001604052806040815260200161160d604091396001610f25565b60605f610c31836110a0565b6028602282012090915060601c60295b6001811115610cca57600782600f16118015610c7657506060838281518110610c6c57610c6c61155a565b016020015160f81c115b15610cb357602060f81b838281518110610c9257610c9261155a565b0160200180516001600160f81b0319908116909218909116905f82901a9053505b60049190911c90610cc381611582565b9050610c41565b50909392505050565b805160609082905f90610ce7906002611597565b67ffffffffffffffff811115610cff57610cff6115ae565b6040519080825280601f01601f191660200182016040528015610d29576020820181803683370190505b5090505f805b8351811015610f0e575f610d468583016020015190565b90506b100000000000000400003700600160f883901c1b1615610ed057601760fa1b8484610d73816115c2565b955081518110610d8557610d8561155a565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b03610ded57603160f91b8484610dc0816115c2565b955081518110610dd257610dd261155a565b60200101906001600160f81b03191690815f1a905350610f05565b6001600160f81b03198116600960f81b03610e1257601d60fa1b8484610dc0816115c2565b6001600160f81b03198116600560f91b03610e3757603760f91b8484610dc0816115c2565b6001600160f81b03198116600360fa1b03610e5c57603360f91b8484610dc0816115c2565b6001600160f81b03198116600d60f81b03610e8157603960f91b8484610dc0816115c2565b6001600160f81b03198116601760fa1b03610ea657601760fa1b8484610dc0816115c2565b6001600160f81b03198116601160f91b03610ecb57601160f91b8484610dc0816115c2565b610f05565b808484610edc816115c2565b955081518110610eee57610eee61155a565b60200101906001600160f81b03191690815f1a9053505b50600101610d2f565b50808252603f01601f191681016040529392505050565b606083515f03610f43575060408051602081019091525f8152610415565b5f82610f7357600385516004610f599190611597565b610f649060026115da565b610f6e91906115ed565b610f98565b600385516002610f8391906115da565b610f8d91906115ed565b610f98906004611597565b90505f8167ffffffffffffffff811115610fb457610fb46115ae565b6040519080825280601f01601f191660200182016040528015610fde576020820181803683370190505b509050600185016020820187885189016020810180515f82525b82841015611053576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450610ff8565b90525050851561109457600388510660018114611077576002811461108a57611092565b603d6001830353603d6002830353611092565b603d60018303535b505b50909695505050505050565b60606103466001600160a01b03831660146060825f6110c0846002611597565b6110cb9060026115da565b67ffffffffffffffff8111156110e3576110e36115ae565b6040519080825280601f01601f19166020018201604052801561110d576020820181803683370190505b509050600360fc1b815f815181106111275761112761155a565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106111555761115561155a565b60200101906001600160f81b03191690815f1a9053505f611177856002611597565b6111829060016115da565b90505b60018111156111f9576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106111b6576111b661155a565b1a60f81b8282815181106111cc576111cc61155a565b60200101906001600160f81b03191690815f1a90535060049290921c916111f281611582565b9050611185565b5081156112275760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610415602083018461122f565b80356001600160a01b0381168114611285575f5ffd5b919050565b5f5f6040838503121561129b575f5ffd5b6112a48361126f565b946020939093013593505050565b5f5f5f606084860312156112c4575f5ffd5b6112cd8461126f565b92506112db6020850161126f565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f9061130f9083018661122f565b8281036040840152611321818661122f565b90508281036060840152611335818561122f565b979650505050505050565b5f60208284031215611350575f5ffd5b6104158261126f565b5f5f5f5f5f5f5f60e0888a03121561136f575f5ffd5b6113788861126f565b96506113866020890161126f565b95506040880135945060608801359350608088013560ff811681146113a9575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156113d7575f5ffd5b6113e08361126f565b91506113ee6020840161126f565b90509250929050565b600181811c9082168061140b57607f821691505b60208210810361142957634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610415601d83018461142f565b6b3d9121b932b0ba37b9111d1160a11b81525f611497600c83018461142f565b601160f91b81526001019392505050565b5f6114b3828561142f565b701610112232b9b1b934b83a34b7b7111d1160791b81526114d7601182018561142f565b601160f91b815260010195945050505050565b5f6114f5828561142f565b6c1610112bb2b139b4ba32911d1160991b81526114d7600d82018561142f565b5f611520828561142f565b6a16101124b6b0b3b2911d1160a91b81526114d7600b82018561142f565b5f611549828461142f565b607d60f81b81526001019392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f816115905761159061156e565b505f190190565b80820281158282048414176103465761034661156e565b634e487b7160e01b5f52604160045260245ffd5b5f600182016115d3576115d361156e565b5060010190565b808201808211156103465761034661156e565b5f8261160757634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0xd", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1376eab", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe62cda122ca2adcf828362a33347dd80c850e79603dd17b933c83b2fb85c5650", + "transactionIndex": "0x74", + "blockHash": "0xbb43400266884b548db73722f685b2de57e57ad3b1be930ff97906b2903709a3", + "blockNumber": "0x7fb84e", + "gasUsed": "0x241a84", + "effectiveGasPrice": "0x124ffc", + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1747774105, + "chain": 11155111, + "commit": "5addf85" +} \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/1301/run-1747773832.json b/broadcast/Deploy-all.s.sol/1301/run-1747773832.json new file mode 100644 index 00000000..9b90e64f --- /dev/null +++ b/broadcast/Deploy-all.s.sol/1301/run-1747773832.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0x170028b613a6daf839e60de54b8dcc7e230909a6eed67d3e444324ec063c3d6a", + "transactionType": "CREATE2", + "contractName": "UERC20SuperchainFactory", + "contractAddress": "0x43414b3556b6dfbb1278670871b11c73c22c93f3", + "function": null, + "arguments": null, + "transaction": { + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b50612d7f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806312e5f742146100435780632c0cf94714610073578063a5ea11da14610086575b5f5ffd5b61005661005136600461094f565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109db565b610130565b61008e610409565b60405161006a9190610b54565b5f5f86868686866040516020016100b6959493929190610bde565b6040516020818303038152906040528051906020012090505f604051806020016100df9061078b565b601f1982820381018352601f9091011660408190526101019190602001610c2c565b604051602081830303815290604052805190602001209050610124828230610759565b98975050505050505050565b5f808061013f84860186610c42565b91509150814614801561015c575080516001600160a01b03163314155b1561019557805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b80516040515f916101b0918d918d918d918891602001610bde565b604051602081830303815290604052805190602001209050824614610207575f8083526040805160208082018352838252808601919091528151808201835283815282860152815190810190915290815260608301525b6040805160e0810182528c8152602081018c9052908101899052606081018490526001600160a01b038816608082015260ff8a1660a082015260c081018390525f806102538e82610da1565b50602082015160018201906102689082610da1565b506040820151600282015560608201516003820155608082015160048201805460a085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560c08301518051600584018054919093166001600160a01b031991909116178255602081015190919060068401906102e99082610da1565b50604082015160028201906102fe9082610da1565b50606082015160038201906103139082610da1565b505050905050806040516103269061078b565b8190604051809103905ff5905080158015610343573d5f5f3e3d5ffd5b5093505f806103528180610798565b61035f600183015f610798565b5f60028301819055600383018190556004830180546001600160a81b03191690556005830180546001600160a01b0319168155906103a06006850182610798565b6103ad600283015f610798565b6103ba600383015f610798565b50506040516001600160a01b03871681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505050979650505050505050565b6104116107d2565b5f6040518060e00160405290815f8201805461042c90610d1d565b80601f016020809104026020016040519081016040528092919081815260200182805461045890610d1d565b80156104a35780601f1061047a576101008083540402835291602001916104a3565b820191905f5260205f20905b81548152906001019060200180831161048657829003601f168201915b505050505081526020016001820180546104bc90610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546104e890610d1d565b80156105335780601f1061050a57610100808354040283529160200191610533565b820191905f5260205f20905b81548152906001019060200180831161051657829003601f168201915b50505091835250506002820154602080830191909152600383015460408084019190915260048401546001600160a01b038082166060860152600160a01b90910460ff166080808601919091528251908101909252600585018054909116825260068501805460a09095019492939192918401916105b090610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546105dc90610d1d565b80156106275780601f106105fe57610100808354040283529160200191610627565b820191905f5260205f20905b81548152906001019060200180831161060a57829003601f168201915b5050505050815260200160028201805461064090610d1d565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90610d1d565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016003820180546106d090610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90610d1d565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611f1780610e5c83390190565b5080546107a490610d1d565b5f825580601f106107b3575050565b601f0160209004905f5260205f20908101906107cf9190610847565b50565b6040518060e0016040528060608152602001606081526020015f81526020015f81526020015f6001600160a01b031681526020015f60ff16815260200161084260405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b8082111561085b575f8155600101610848565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156108955761089561085f565b60405290565b5f82601f8301126108aa575f5ffd5b81356001600160401b038111156108c3576108c361085f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156108f1576108f161085f565b604052818152838201602001851015610908575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610934575f5ffd5b919050565b80356001600160a01b0381168114610934575f5ffd5b5f5f5f5f5f60a08688031215610963575f5ffd5b85356001600160401b03811115610978575f5ffd5b6109848882890161089b565b95505060208601356001600160401b0381111561099f575f5ffd5b6109ab8882890161089b565b9450506109ba60408701610924565b9250606086013591506109cf60808701610939565b90509295509295909350565b5f5f5f5f5f5f5f60c0888a0312156109f1575f5ffd5b87356001600160401b03811115610a06575f5ffd5b610a128a828b0161089b565b97505060208801356001600160401b03811115610a2d575f5ffd5b610a398a828b0161089b565b965050610a4860408901610924565b945060608801359350610a5d60808901610939565b925060a08801356001600160401b03811115610a77575f5ffd5b8801601f81018a13610a87575f5ffd5b80356001600160401b03811115610a9c575f5ffd5b8a6020828401011115610aad575f5ffd5b602082019350809250505092959891949750929550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b0381511682525f602082015160806020850152610b186080850182610ac4565b905060408301518482036040860152610b318282610ac4565b91505060608301518482036060860152610b4b8282610ac4565b95945050505050565b602081525f825160e06020840152610b70610100840182610ac4565b90506020840151601f19848303016040850152610b8d8282610ac4565b915050604084015160608401526060840151608084015260018060a01b0360808501511660a084015260ff60a08501511660c084015260c0840151601f198483030160e0850152610b4b8282610af2565b60a081525f610bf060a0830188610ac4565b8281036020840152610c028188610ac4565b60ff969096166040840152505060608101929092526001600160a01b031660809091015292915050565b5f82518060208501845e5f920191825250919050565b5f5f60408385031215610c53575f5ffd5b8235915060208301356001600160401b03811115610c6f575f5ffd5b830160808186031215610c80575f5ffd5b610c88610873565b610c9182610939565b815260208201356001600160401b03811115610cab575f5ffd5b610cb78782850161089b565b60208301525060408201356001600160401b03811115610cd5575f5ffd5b610ce18782850161089b565b60408301525060608201356001600160401b03811115610cff575f5ffd5b610d0b8782850161089b565b60608301525080925050509250929050565b600181811c90821680610d3157607f821691505b602082108103610d4f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d9c57805f5260205f20601f840160051c81016020851015610d7a5750805b601f840160051c820191505b81811015610d99575f8155600101610d86565b50505b505050565b81516001600160401b03811115610dba57610dba61085f565b610dce81610dc88454610d1d565b84610d55565b6020601f821160018114610e00575f8315610de95750848201515b5f19600385901b1c1916600184901b178455610d99565b5f84815260208120601f198516915b82811015610e2f5787850151825560209485019460019092019101610e0f565b5084821015610e4c57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe60c060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100739190810190610375565b606081015160a05280519091505f9061008c90826104ec565b50602081015160019061009f90826104ec565b5060a081015160ff1660805260c08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100e390826104ec565b50604082015160028201906100f890826104ec565b506060820151600382019061010d90826104ec565b50505060608101514603610133576101338160800151826040015161013960201b60201c565b506105a6565b6805345cdf77eb68f44c548181018181101561015c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101f0576101f06101ba565b60405290565b60405160e081016001600160401b03811182821017156101f0576101f06101ba565b5f82601f830112610227575f5ffd5b81516001600160401b03811115610240576102406101ba565b604051601f8201601f19908116603f011681016001600160401b038111828210171561026e5761026e6101ba565b604052818152838201602001851015610285575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102b7575f5ffd5b919050565b805160ff811681146102b7575f5ffd5b5f608082840312156102dc575f5ffd5b6102e46101ce565b90506102ef826102a1565b815260208201516001600160401b03811115610309575f5ffd5b61031584828501610218565b60208301525060408201516001600160401b03811115610333575f5ffd5b61033f84828501610218565b60408301525060608201516001600160401b0381111561035d575f5ffd5b61036984828501610218565b60608301525092915050565b5f60208284031215610385575f5ffd5b81516001600160401b0381111561039a575f5ffd5b820160e081850312156103ab575f5ffd5b6103b36101f6565b81516001600160401b038111156103c8575f5ffd5b6103d486828501610218565b82525060208201516001600160401b038111156103ef575f5ffd5b6103fb86828501610218565b6020830152506040828101519082015260608083015190820152610421608083016102a1565b608082015261043260a083016102bc565b60a082015260c08201516001600160401b0381111561044f575f5ffd5b61045b868285016102cc565b60c083015250949350505050565b600181811c9082168061047d57607f821691505b60208210810361049b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b557805f5260205f20601f840160051c810160208510156104c65750805b601f840160051c820191505b818110156104e5575f81556001016104d2565b5050505050565b81516001600160401b03811115610505576105056101ba565b610519816105138454610469565b846104a1565b6020601f82116001811461054b575f83156105345750848201515b5f19600385901b1c1916600184901b1784556104e5565b5f84815260208120601f198516915b8281101561057a578785015182556020948501946001909201910161055a565b508482101561059757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a0516119506105c75f395f6102ae01525f6101cc01526119505ff3fe608060405234801561000f575f5ffd5b506004361061011c575f3560e01c8063392f37e9116100a9578063a9059cbb1161006e578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610296578063ef126967146102a9578063ef31f2cd146102d0575f5ffd5b8063392f37e9146101fe5780633c130d901461021657806370a082311461021e5780637ecebe001461024357806395d89b4114610268575f5ffd5b806318bf5077116100ef57806318bf50771461018a57806323b872dd1461019f5780632b8c49e3146101b2578063313ce567146101c55780633644e515146101f6575f5ffd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b5f5ffd5b61013361012e3660046114df565b6102f6565b60405190151581526020015b60405180910390f35b610150610347565b60405161013f9190611534565b61013361016b366004611561565b6103d6565b6805345cdf77eb68f44c545b60405190815260200161013f565b61019d610198366004611561565b610455565b005b6101336101ad366004611589565b6104df565b61019d6101c0366004611561565b61059c565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161013f565b61017c610619565b610206610695565b60405161013f94939291906115c3565b61015061084c565b61017c61022c366004611617565b6387a211a2600c9081525f91909152602090205490565b61017c610251366004611617565b6338377508600c9081525f91909152602090205490565b610150610a2e565b61013361027e366004611561565b610a3d565b61019d610291366004611630565b610aa1565b61017c6102a436600461169d565b610c55565b61017c7f000000000000000000000000000000000000000000000000000000000000000081565b6102de6028602160991b0181565b6040516001600160a01b03909116815260200161013f565b5f6001600160e01b03198216630cccc66560e21b148061032657506001600160e01b031982166336372b0760e01b145b8061034157506001600160e01b031982166301ffc9a760e01b145b92915050565b60605f8054610355906116ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610381906116ce565b80156103cc5780601f106103a3576101008083540402835291602001916103cc565b820191905f5260205f20905b8154815290600101906020018083116103af57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761040757633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b011461049057604051632e0d831f60e01b81523360048201526028602160991b0160248201526044015b60405180910390fd5b61049a8282610c99565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105345733602052637f5e9f208117600c526034600c208054801915610531578085111561052b576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c2080548085111561055a5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f5160206119245f395f51905f52602080a3505060015b9392505050565b336028602160991b01146105d257604051632e0d831f60e01b81523360048201526028602160991b016024820152604401610487565b6105dc8282610d02565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd4906020016104d3565b5f80610623610347565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916106b3906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546106df906116ce565b801561072a5780601f106107015761010080835404028352916020019161072a565b820191905f5260205f20905b81548152906001019060200180831161070d57829003601f168201915b50505050509080600201805461073f906116ce565b80601f016020809104026020016040519081016040528092919081815260200182805461076b906116ce565b80156107b65780601f1061078d576101008083540402835291602001916107b6565b820191905f5260205f20905b81548152906001019060200180831161079957829003601f168201915b5050505050908060030180546107cb906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546107f7906116ce565b80156108425780601f1061081957610100808354040283529160200191610842565b820191905f5260205f20905b81548152906001019060200180831161082557829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b0316825260038054606093610a299390929091602084019190610884906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546108b0906116ce565b80156108fb5780601f106108d2576101008083540402835291602001916108fb565b820191905f5260205f20905b8154815290600101906020018083116108de57829003601f168201915b50505050508152602001600282018054610914906116ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610940906116ce565b801561098b5780601f106109625761010080835404028352916020019161098b565b820191905f5260205f20905b81548152906001019060200180831161096e57829003601f168201915b505050505081526020016003820180546109a4906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546109d0906116ce565b8015610a1b5780601f106109f257610100808354040283529160200191610a1b565b820191905f5260205f20905b8154815290600101906020018083116109fe57829003601f168201915b505050505081525050610d63565b905090565b606060018054610355906116ce565b5f6387a211a2600c52335f526020600c20805480841115610a655763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f5160206119245f395f51905f52602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba31885191517610ad157633f68539a5f526004601cfd5b5f610ada610347565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b1957631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610c015763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610c7e57505f19610341565b50602052637f5e9f20600c9081525f91909152603490205490565b6805345cdf77eb68f44c5481810181811015610cbc5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f5160206119245f395f51905f52602080a35050565b6387a211a2600c52815f526020600c20805480831115610d295763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f5160206119245f395f51905f52602083a35050565b6060610d76610d7183610d9c565b610eb3565b604051602001610d86919061171d565b6040516020818303038152906040529050919050565b60605f610db4835f01516001600160a01b0316610ed9565b604051602001610dc4919061174e565b60405160208183030381529060405290505f8360200151511115610e135780610df08460200151610f87565b604051602001610e0192919061177f565b60405160208183030381529060405290505b60408301515115610e4f5780610e2c8460400151610f87565b604051602001610e3d9291906117c1565b60405160208183030381529060405290505b60608301515115610e8b5780610e688460600151610f87565b604051602001610e799291906117ec565b60405160208183030381529060405290505b80604051602001610e9c9190611815565b604051602081830303815290604052915050919050565b6060610341826040518060600160405280604081526020016118e46040913960016111d9565b60605f610ee583611354565b6028602282012090915060601c60295b6001811115610f7e57600782600f16118015610f2a57506060838281518110610f2057610f20611831565b016020015160f81c115b15610f6757602060f81b838281518110610f4657610f46611831565b0160200180516001600160f81b0319908116909218909116905f82901a9053505b60049190911c90610f7781611859565b9050610ef5565b50909392505050565b805160609082905f90610f9b90600261186e565b67ffffffffffffffff811115610fb357610fb3611885565b6040519080825280601f01601f191660200182016040528015610fdd576020820181803683370190505b5090505f805b83518110156111c2575f610ffa8583016020015190565b90506b100000000000000400003700600160f883901c1b161561118457601760fa1b848461102781611899565b95508151811061103957611039611831565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b036110a157603160f91b848461107481611899565b95508151811061108657611086611831565b60200101906001600160f81b03191690815f1a9053506111b9565b6001600160f81b03198116600960f81b036110c657601d60fa1b848461107481611899565b6001600160f81b03198116600560f91b036110eb57603760f91b848461107481611899565b6001600160f81b03198116600360fa1b0361111057603360f91b848461107481611899565b6001600160f81b03198116600d60f81b0361113557603960f91b848461107481611899565b6001600160f81b03198116601760fa1b0361115a57601760fa1b848461107481611899565b6001600160f81b03198116601160f91b0361117f57601160f91b848461107481611899565b6111b9565b80848461119081611899565b9550815181106111a2576111a2611831565b60200101906001600160f81b03191690815f1a9053505b50600101610fe3565b50808252603f01601f191681016040529392505050565b606083515f036111f7575060408051602081019091525f8152610595565b5f826112275760038551600461120d919061186e565b6112189060026118b1565b61122291906118c4565b61124c565b60038551600261123791906118b1565b61124191906118c4565b61124c90600461186e565b90505f8167ffffffffffffffff81111561126857611268611885565b6040519080825280601f01601f191660200182016040528015611292576020820181803683370190505b509050600185016020820187885189016020810180515f82525b82841015611307576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506112ac565b9052505085156113485760038851066001811461132b576002811461133e57611346565b603d6001830353603d6002830353611346565b603d60018303535b505b50909695505050505050565b60606103416001600160a01b03831660146060825f61137484600261186e565b61137f9060026118b1565b67ffffffffffffffff81111561139757611397611885565b6040519080825280601f01601f1916602001820160405280156113c1576020820181803683370190505b509050600360fc1b815f815181106113db576113db611831565b60200101906001600160f81b03191690815f1a905350600f60fb1b8160018151811061140957611409611831565b60200101906001600160f81b03191690815f1a9053505f61142b85600261186e565b6114369060016118b1565b90505b60018111156114ad576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061146a5761146a611831565b1a60f81b82828151811061148057611480611831565b60200101906001600160f81b03191690815f1a90535060049290921c916114a681611859565b9050611439565b5081156114d75760405163e22e27eb60e01b81526004810186905260248101859052604401610487565b949350505050565b5f602082840312156114ef575f5ffd5b81356001600160e01b031981168114610595575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105956020830184611506565b80356001600160a01b038116811461155c575f5ffd5b919050565b5f5f60408385031215611572575f5ffd5b61157b83611546565b946020939093013593505050565b5f5f5f6060848603121561159b575f5ffd5b6115a484611546565b92506115b260208501611546565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f906115e690830186611506565b82810360408401526115f88186611506565b9050828103606084015261160c8185611506565b979650505050505050565b5f60208284031215611627575f5ffd5b61059582611546565b5f5f5f5f5f5f5f60e0888a031215611646575f5ffd5b61164f88611546565b965061165d60208901611546565b95506040880135945060608801359350608088013560ff81168114611680575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156116ae575f5ffd5b6116b783611546565b91506116c560208401611546565b90509250929050565b600181811c908216806116e257607f821691505b60208210810361170057634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610595601d830184611706565b6b3d9121b932b0ba37b9111d1160a11b81525f61176e600c830184611706565b601160f91b81526001019392505050565b5f61178a8285611706565b701610112232b9b1b934b83a34b7b7111d1160791b81526117ae6011820185611706565b601160f91b815260010195945050505050565b5f6117cc8285611706565b6c1610112bb2b139b4ba32911d1160991b81526117ae600d820185611706565b5f6117f78285611706565b6a16101124b6b0b3b2911d1160a91b81526117ae600b820185611706565b5f6118208284611706565b607d60f81b81526001019392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8161186757611867611845565b505f190190565b808202811582820484141761034157610341611845565b634e487b7160e01b5f52604160045260245ffd5b5f600182016118aa576118aa611845565b5060010190565b8082018082111561034157610341611845565b5f826118de57634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0xb", + "chainId": "0x515" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x5947c6", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x170028b613a6daf839e60de54b8dcc7e230909a6eed67d3e444324ec063c3d6a", + "transactionIndex": "0x46", + "blockHash": "0x9a23b4ad37e3c6d056b48ad67f0d089d53fb83989d5c55494cc9c11c03524b2e", + "blockNumber": "0x13f3c3b", + "gasUsed": "0x274da6", + "effectiveGasPrice": "0x2faf080", + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "l1BaseFeeScalar": "0x7d0", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xdbba0", + "l1Fee": "0x7c7d", + "l1GasPrice": "0x88", + "l1GasUsed": "0x17b40" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1747773832, + "chain": 1301, + "commit": "5addf85" +} \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/1301/run-latest.json b/broadcast/Deploy-all.s.sol/1301/run-latest.json index af3b0788..9b90e64f 100644 --- a/broadcast/Deploy-all.s.sol/1301/run-latest.json +++ b/broadcast/Deploy-all.s.sol/1301/run-latest.json @@ -1,1212 +1,52 @@ { "transactions": [ { - "hash": "0xf5f1e527c5ecd1701a79367f003162686402f0e05b0667a99d733ec184740118", - "transactionType": "CREATE", - "contractName": "UniswapV2Factory", - "contractAddress": "0x216d3b49e8c5140d2499da346ab5335a75f655d8", - "function": null, - "arguments": [ - "0x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A04" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b506040516136863803806136868339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613623806100636000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af6146100fd578063c9c6539614610132578063e6a439051461016d578063f46901ed146101a857610088565b8063017e7e581461008d578063094b7415146100be5780631e3dd18b146100c6578063574f2ba3146100e3575b600080fd5b6100956101db565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100956101f7565b610095600480360360208110156100dc57600080fd5b5035610213565b6100eb610247565b60408051918252519081900360200190f35b6101306004803603602081101561011357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661024d565b005b6100956004803603604081101561014857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661031a565b6100956004803603604081101561018357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076d565b610130600480360360208110156101be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107a0565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061022057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106103f45783856103f7565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff821661047e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561051f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b6060604051806020016105319061086d565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f5604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152868116602483015291519297509087169163485cc9559160448082019260009290919082900301818387803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461082657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612d748061087b8339019056fe60806040526001600c5534801561001557600080fd5b506040514690806052612d228239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612c1d806101056000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a723158207dca18479e58487606bf70c79e44d8dee62353c9ee6d01f9a9d70885b8765f2264736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a265627a7a723158202760f92d7fa1db6f5aa16307bad65df4ebcc8550c4b1f03755ab8dfd830c178f64736f6c6343000510003200000000000000000000000007d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "nonce": "0x0", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x41283e07dd1b8bdf71e42dbeddb46ae5c99f527a025b6a532e5fc11d6b37713a", - "transactionType": "CREATE", - "contractName": "UniswapV2Router02", - "contractAddress": "0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed", - "function": null, - "arguments": [ - "0x216d3b49e8c5140D2499dA346AB5335A75f655d8", - "0x4200000000000000000000000000000000000006" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b506040516200571538038062005715833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c61558e62000187600039806101ac5280610e5d5280610e985280610fd5528061129852806116f252806118d65280611e1e5280611fa252806120725280612179528061232c52806123c15280612673528061271a52806127ef52806128f452806129dc5280612a5d52806130ec5280613422528061347852806134ac528061352d528061374752806138f7528061398c5250806110c752806111c5528061136b52806113a4528061154f52806117e452806118b45280611aa1528061225f528061240052806125a95280612a9c5280612ddf5280613071528061309a52806130ca52806132a75280613456528061382d52806139cb528061444a528061448d52806147ed52806149ce5280614f49528061502a52806150aa525061558e6000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4c565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611364945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139a565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114d8565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611669565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ac565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119fe565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d97565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612105565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612525565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612532565b34801561096057600080fd5b50610969612671565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612695565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a2565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612882565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d65565b348015610b3157600080fd5b5061096961306f565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613093945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c0565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135613218565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a7565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d3565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d65565b9093509150610e96898685613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613cff565b50965096945050505050565b6000610f44848484613e3c565b949350505050565b60608142811015610fbe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111207f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b9150868260018451038151811061113357fe5b60200260200101511015611192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b611257868660008181106111a257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123d7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c6565b8560008151811061124a57fe5b60200260200101516141b1565b61129682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614381915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e257fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132057600080fd5b505af1158015611334573d6000803e3d6000fd5b50505050611359848360018551038151811061134c57fe5b6020026020010151613cff565b509695505050505050565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484614608565b90505b92915050565b60008060006113ca7f00000000000000000000000000000000000000000000000000000000000000008f8f6140c6565b90506000876113d9578c6113fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149757600080fd5b505af11580156114ab573d6000803e3d6000fd5b505050506114be8f8f8f8f8f8f8f612d65565b809450819550505050509b509b9950505050505050505050565b6060814281101561154a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115a87f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106115bb57fe5b6020026020010151101561161a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b61162a868660008181106111a257fe5b61135982878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b606081428110156116db57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117df57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183d7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061184d57fe5b60200260200101511115611192576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b6000806118fa7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140c6565b9050600086611909578b61192b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c757600080fd5b505af11580156119db573d6000803e3d6000fd5b505050506119ed8d8d8d8d8d8d6126a2565b9d9c50505050505050505050505050565b8042811015611a6e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611afd85856000818110611a7e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121b57fe5b8a6141b1565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc657600080fd5b505afa158015611bda573d6000803e3d6000fd5b505050506040513d6020811015611bf057600080fd5b50516040805160208881028281018201909352888252929350611c32929091899189918291850190849080828437600092019190915250889250614796915050565b86611d368288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b505afa158015611d12573d6000803e3d6000fd5b505050506040513d6020811015611d2857600080fd5b50519063ffffffff614b2916565b1015611d8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6c57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1b85856000818110611a7e57fe5b611f59858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250614796915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611fe957600080fd5b505afa158015611ffd573d6000803e3d6000fd5b505050506040513d602081101561201357600080fd5b5051905086811015612070576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e357600080fd5b505af11580156120f7573d6000803e3d6000fd5b50505050611d8d8482613cff565b6060814281101561217757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bb57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122b87f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6092505050565b915086826001845103815181106122cb57fe5b6020026020010151101561232a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615508602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237357fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a657600080fd5b505af11580156123ba573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242c7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b8460008151811061243957fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124aa57600080fd5b505af11580156124be573d6000803e3d6000fd5b505050506040513d60208110156124d457600080fd5b50516124dc57fe5b61251b82878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b5095945050505050565b6000610f44848484614b9b565b606081428110156125a457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126027f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150868260008151811061261257fe5b6020026020010151111561161a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614cbf565b6000814281101561271457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612743887f00000000000000000000000000000000000000000000000000000000000000008989893089612d65565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ed92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127bc57600080fd5b505afa1580156127d0573d6000803e3d6000fd5b505050506040513d60208110156127e657600080fd5b5051613b22565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286057600080fd5b505af1158015612874573d6000803e3d6000fd5b505050506113598483613cff565b80428110156128f257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4257600080fd5b505af1158015612a56573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612ac87f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3257600080fd5b505af1158015612b46573d6000803e3d6000fd5b505050506040513d6020811015612b5c57600080fd5b5051612b6457fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2d57600080fd5b505afa158015612c41573d6000803e3d6000fd5b505050506040513d6020811015612c5757600080fd5b50516040805160208981028281018201909352898252929350612c999290918a918a918291850190849080828437600092019190915250899250614796915050565b87611d368289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612ccc57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b6000808242811015612dd857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e057f00000000000000000000000000000000000000000000000000000000000000008c8c6140c6565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8657600080fd5b505af1158015612e9a573d6000803e3d6000fd5b505050506040513d6020811015612eb057600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2357600080fd5b505af1158015612f37573d6000803e3d6000fd5b505050506040513d6040811015612f4d57600080fd5b50805160209091015190925090506000612f678e8e614d9f565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa4578183612fa7565b82825b90975095508a871015613005576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b8986101561305e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113917f00000000000000000000000000000000000000000000000000000000000000008484613f60565b60008060006131107f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140c6565b905060008761311f578c613141565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131dd57600080fd5b505af11580156131f1573d6000803e3d6000fd5b505050506132038e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329b8c8c8c8c8c8c614ef2565b909450925060006132cd7f00000000000000000000000000000000000000000000000000000000000000008e8e6140c6565b90506132db8d3383886141b1565b6132e78c3383876141b1565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336657600080fd5b505af115801561337a573d6000803e3d6000fd5b505050506040513d602081101561339057600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344a8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614ef2565b9094509250600061349c7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140c6565b90506134aa8b3383886141b1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351257600080fd5b505af1158015613526573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d257600080fd5b505af11580156135e6573d6000803e3d6000fd5b505050506040513d60208110156135fc57600080fd5b505161360457fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368357600080fd5b505af1158015613697573d6000803e3d6000fd5b505050506040513d60208110156136ad57600080fd5b50519250348410156136c5576136c533853403613cff565b505096509650969350505050565b6060814281101561374557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138867f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061460892505050565b9150348260008151811061389657fe5b602002602001015111156138f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154986027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061393e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397157600080fd5b505af1158015613985573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f77f000000000000000000000000000000000000000000000000000000000000000089896000818110611acd57fe5b84600081518110613a0457fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7557600080fd5b505af1158015613a89573d6000803e3d6000fd5b505050506040513d6020811015613a9f57600080fd5b5051613aa757fe5b613ae682878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250614381915050565b81600081518110613af357fe5b602002602001015134111561251b5761251b3383600081518110613b1357fe5b60200260200101513403613cff565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bf857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5a576040519150601f19603f3d011682016040523d82523d6000602084013e613c5f565b606091505b5091509150818015613c8d575080511580613c8d5750808060200190516020811015613c8a57600080fd5b50515b613cf857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d39565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dd8576040519150601f19603f3d011682016040523d82523d6000602084013e613ddd565b606091505b5050905080613e37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806154e56023913960400191505060405180910390fd5b505050565b6000808411613e96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615557602b913960400191505060405180910390fd5b600083118015613ea65750600082115b613efb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000613f0f856103e563ffffffff6151f316565b90506000613f23828563ffffffff6151f316565b90506000613f4983613f3d886103e863ffffffff6151f316565b9063ffffffff61527916565b9050808281613f5457fe5b04979650505050505050565b6060600282511015613fd357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613feb57600080fd5b50604051908082528060200260200182016040528015614015578160200160208202803683370190505b509050828160008151811061402657fe5b60200260200101818152505060005b60018351038110156140be576000806140788786858151811061405457fe5b602002602001015187866001018151811061406b57fe5b60200260200101516152eb565b9150915061409a84848151811061408b57fe5b60200260200101518383613e3c565b8484600101815181106140a957fe5b60209081029190910101525050600101614035565b509392505050565b60008060006140d58585614d9f565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061428f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614252565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142f1576040519150601f19603f3d011682016040523d82523d6000602084013e6142f6565b606091505b5091509150818015614324575080511580614324575080806020019051602081101561432157600080fd5b50515b614379576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806155336024913960400191505060405180910390fd5b505050505050565b60005b60018351038110156146025760008084838151811061439f57fe5b60200260200101518584600101815181106143b657fe5b60200260200101519150915060006143ce8383614d9f565b50905060008785600101815181106143e257fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461442a5782600061442e565b6000835b91509150600060028a510388106144455788614486565b6144867f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061447957fe5b60200260200101516140c6565b90506144b37f000000000000000000000000000000000000000000000000000000000000000088886140c6565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f1916602001820160405280156144fd576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614588578181015183820152602001614570565b50505050905090810190601f1680156145b55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1580156145d757600080fd5b505af11580156145eb573d6000803e3d6000fd5b505060019099019850614384975050505050505050565b50505050565b606060028251101561467b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff8111801561469357600080fd5b506040519080825280602002602001820160405280156146bd578160200160208202803683370190505b50905082816001835103815181106146d157fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140be576000806147318786600186038151811061471d57fe5b602002602001015187868151811061406b57fe5b9150915061475384848151811061474457fe5b60200260200101518383614b9b565b84600185038151811061476257fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614701565b60005b6001835103811015613e37576000808483815181106147b457fe5b60200260200101518584600101815181106147cb57fe5b60200260200101519150915060006147e38383614d9f565b50905060006148137f000000000000000000000000000000000000000000000000000000000000000085856140c6565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561486157600080fd5b505afa158015614875573d6000803e3d6000fd5b505050506040513d606081101561488b57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a8116908916146148d55782846148d8565b83835b9150915061495d828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cfe57600080fd5b955061496a868383613e3c565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ae578260006149b2565b6000835b91509150600060028c51038a106149c9578a6149fd565b6149fd7f0000000000000000000000000000000000000000000000000000000000000000898e8d6002018151811061447957fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aad578181015183820152602001614a95565b50505050905090810190601f168015614ada5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614afc57600080fd5b505af1158015614b10573d6000803e3d6000fd5b50506001909b019a506147999950505050505050505050565b8082038281111561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614bf5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806153d4602c913960400191505060405180910390fd5b600083118015614c055750600082115b614c5a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b6000614c7e6103e8614c72868863ffffffff6151f316565b9063ffffffff6151f316565b90506000614c986103e5614c72868963ffffffff614b2916565b9050614cb56001828481614ca857fe5b049063ffffffff61527916565b9695505050505050565b6000808411614d19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154736025913960400191505060405180910390fd5b600083118015614d295750600082115b614d7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061544b6028913960400191505060405180910390fd5b82614d8f858463ffffffff6151f316565b81614d9657fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154006025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614e61578284614e64565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614eeb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614f9257600080fd5b505afa158015614fa6573d6000803e3d6000fd5b505050506040513d6020811015614fbc57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150a257604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b15801561507557600080fd5b505af1158015615089573d6000803e3d6000fd5b505050506040513d602081101561509f57600080fd5b50505b6000806150d07f00000000000000000000000000000000000000000000000000000000000000008b8b6152eb565b915091508160001480156150e2575080155b156150f2578793508692506151e6565b60006150ff898484614cbf565b905087811161516c5785811015615161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154256026913960400191505060405180910390fd5b8894509250826151e4565b6000615179898486614cbf565b90508981111561518557fe5b878110156151de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154bf6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061520e5750508082028282828161520b57fe5b04145b61139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b60008060006152fa8585614d9f565b50905060008061530b8888886140c6565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561535057600080fd5b505afa158015615364573d6000803e3d6000fd5b505050506040513d606081101561537a57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff878116908416146153c15780826153c4565b81815b9099909850965050505050505056fe556e697377617056324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056324c6962726172793a204944454e544943414c5f414444524553534553556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54556e697377617056324c6962726172793a20494e53554646494349454e545f4c4951554944495459556e697377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544556e697377617056324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54a164736f6c6343000606000a000000000000000000000000216d3b49e8c5140d2499da346ab5335a75f655d80000000000000000000000004200000000000000000000000000000000000006", - "nonce": "0x1", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083", - "transactionType": "CREATE", - "contractName": "UniswapV3Factory", - "contractAddress": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "function": null, - "arguments": null, - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x60a060405234801561001057600080fd5b503060601b608052600380546001600160a01b031916339081179091556040516000907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c908290a36101f4600081815260046020527ffb8cf1d12598d1a039dd1d106665851a96aadf67d0d9ed76fceea282119208b7805462ffffff1916600a90811790915560405190929160008051602061614b83398151915291a3610bb8600081815260046020527f72dffa9b822156d9cf4b0090fa0b656bcb9cc2b2c60eb6acfc20a34f54b31743805462ffffff1916603c90811790915560405190929160008051602061614b83398151915291a3612710600081815260046020527f8cc740d51daa94ff54f33bd779c2d20149f524c340519b49181be5a08615f829805462ffffff191660c890811790915560405190929160008051602061614b83398151915291a360805160601c615fd7610174600039806105515250615fd76000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063890357301161005b578063890357301461013b5780638a7c195f146101855780638da5cb5b146101b0578063a1671295146101b85761007d565b806313af4035146100825780631698ee82146100aa57806322afcccb14610102575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166101f4565b005b6100e6600480360360608110156100c057600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff16610267565b604080516001600160a01b039092168252519081900360200190f35b6101246004803603602081101561011857600080fd5b503562ffffff16610293565b6040805160029290920b8252519081900360200190f35b6101436102a8565b604080516001600160a01b0396871681529486166020860152929094168383015262ffffff16606083015260029290920b608082015290519081900360a00190f35b6100a86004803603604081101561019b57600080fd5b5062ffffff813516906020013560020b6102de565b6100e66103a1565b6100e6600480360360608110156101ce57600080fd5b5080356001600160a01b03908116916020810135909116906040013562ffffff166103b0565b6003546001600160a01b0316331461020b57600080fd5b6003546040516001600160a01b038084169216907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c90600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b60056020908152600093845260408085208252928452828420905282529020546001600160a01b031681565b60046020526000908152604090205460020b81565b600054600154600280546001600160a01b03938416939283169281169162ffffff600160a01b83041691600160b81b9004900b85565b6003546001600160a01b031633146102f557600080fd5b620f42408262ffffff161061030957600080fd5b60008160020b13801561032057506140008160020b125b61032957600080fd5b62ffffff8216600090815260046020526040902054600290810b900b1561034f57600080fd5b62ffffff828116600081815260046020526040808220805462ffffff1916600287900b958616179055517fc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc9190a35050565b6003546001600160a01b031681565b60006103ba610546565b826001600160a01b0316846001600160a01b031614156103d957600080fd5b600080846001600160a01b0316866001600160a01b0316106103fc5784866103ff565b85855b90925090506001600160a01b03821661041757600080fd5b62ffffff8416600090815260046020526040902054600290810b9081900b61043e57600080fd5b6001600160a01b0383811660009081526005602090815260408083208685168452825280832062ffffff8a168452909152902054161561047d57600080fd5b61048a308484888561057d565b6001600160a01b03808516600081815260056020818152604080842089871680865290835281852062ffffff8e168087529084528286208054988a166001600160a01b0319998a1681179091558287529484528286208787528452828620818752845294829020805490971684179096558051600289900b815291820192909252815195995091947f783cca1c0412dd0d695e784568c96da2e9c22ff989357a2e8b1d9b2b4e6b71189281900390910190a45050509392505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057b57600080fd5b565b6040805160a0810182526001600160a01b03878116808352878216602080850182905292881684860181905262ffffff888116606080880182905260028a810b6080998a01819052600080546001600160a01b03199081169099178155600180548a1689179055825490981686177fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff16600160a01b8502177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b91830b9095160293909317909255875180870194909452838801929092528281019190915285518083039091018152930193849052825192909101919091209091610686906106f5565b8190604051809103906000f59050801580156106a6573d6000803e3d6000fd5b50600080546001600160a01b0319908116909155600180549091169055600280547fffffffffffff00000000000000000000000000000000000000000000000000001690559695505050505050565b6158c8806107038339019056fe6101606040523480156200001257600080fd5b503060601b60805260408051630890357360e41b81529051600091339163890357309160048082019260a092909190829003018186803b1580156200005657600080fd5b505afa1580156200006b573d6000803e3d6000fd5b505050506040513d60a08110156200008257600080fd5b508051602080830151604084015160608086015160809096015160e896871b6001600160e81b0319166101005291811b6001600160601b031990811660e05292811b831660c0529390931b1660a052600282810b900b90921b610120529150620000f79082906200010f811b62002b8417901c565b60801b6001600160801b03191661014052506200017d565b60008082600281900b620d89e719816200012557fe5b05029050600083600281900b620d89e8816200013d57fe5b0502905060008460020b83830360020b816200015557fe5b0560010190508062ffffff166001600160801b038016816200017357fe5b0495945050505050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160e81c6101405160801c61567e6200024a60003980611fee5280614b5f5280614b96525080610c0052806128fd5280614bca5280614bfc525080610cef52806119cb5280611a0252806129455250806111c75280611a855280611ef4528061244452806129215280613e6b5250806108d252806112f55280611a545280611e8e52806123be5280613d2252508061207b528061227d52806128d9525080612bfb525061567e6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806370cf754a116100ee578063c45a015511610097578063ddca3f4311610071578063ddca3f4314610800578063f305839914610820578063f30dba9314610828578063f637731d146108aa576101ae565b8063c45a0155146107d1578063d0c93a7c146107d9578063d21220a7146107f8576101ae565b8063883bdbfd116100c8578063883bdbfd14610633578063a34123a71461073c578063a38807f214610776576101ae565b806370cf754a146105c65780638206a4d1146105ce57806385b66729146105f6576101ae565b80633850c7bd1161015b578063490e6cbc11610135578063490e6cbc146104705780634f1eb3d8146104fc578063514ea4bf1461054d5780635339c296146105a6576101ae565b80633850c7bd1461035b5780633c8a7d8d146103b45780634614131914610456576101ae565b80631ad8b03b1161018c5780631ad8b03b146102aa578063252c09d7146102e157806332148f6714610338576101ae565b80630dfe1681146101b3578063128acb08146101d75780631a68650214610286575b600080fd5b6101bb6108d0565b604080516001600160a01b039092168252519081900360200190f35b61026d600480360360a08110156101ed57600080fd5b6001600160a01b0382358116926020810135151592604082013592606083013516919081019060a08101608082013564010000000081111561022e57600080fd5b82018360208201111561024057600080fd5b8035906020019184600183028401116401000000008311171561026257600080fd5b5090925090506108f4565b6040805192835260208301919091528051918290030190f35b61028e6114ad565b604080516001600160801b039092168252519081900360200190f35b6102b26114bc565b60405180836001600160801b03168152602001826001600160801b031681526020019250505060405180910390f35b6102fe600480360360208110156102f757600080fd5b50356114d6565b6040805163ffffffff909516855260069390930b60208501526001600160a01b039091168383015215156060830152519081900360800190f35b6103596004803603602081101561034e57600080fd5b503561ffff1661151c565b005b610363611616565b604080516001600160a01b03909816885260029690960b602088015261ffff9485168787015292841660608701529216608085015260ff90911660a0840152151560c0830152519081900360e00190f35b61026d600480360360a08110156103ca57600080fd5b6001600160a01b03823516916020810135600290810b92604083013590910b916001600160801b036060820135169181019060a08101608082013564010000000081111561041757600080fd5b82018360208201111561042957600080fd5b8035906020019184600183028401116401000000008311171561044b57600080fd5b509092509050611666565b61045e611922565b60408051918252519081900360200190f35b6103596004803603608081101561048657600080fd5b6001600160a01b0382351691602081013591604082013591908101906080810160608201356401000000008111156104bd57600080fd5b8201836020820111156104cf57600080fd5b803590602001918460018302840111640100000000831117156104f157600080fd5b509092509050611928565b6102b2600480360360a081101561051257600080fd5b506001600160a01b03813516906020810135600290810b91604081013590910b906001600160801b0360608201358116916080013516611d83565b61056a6004803603602081101561056357600080fd5b5035611f9d565b604080516001600160801b0396871681526020810195909552848101939093529084166060840152909216608082015290519081900360a00190f35b61045e600480360360208110156105bc57600080fd5b503560010b611fda565b61028e611fec565b610359600480360360408110156105e457600080fd5b5060ff81358116916020013516612010565b6102b26004803603606081101561060c57600080fd5b506001600160a01b03813516906001600160801b036020820135811691604001351661220f565b6106a36004803603602081101561064957600080fd5b81019060208101813564010000000081111561066457600080fd5b82018360208201111561067657600080fd5b8035906020019184602083028401116401000000008311171561069857600080fd5b5090925090506124dc565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156106e75781810151838201526020016106cf565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561072657818101518382015260200161070e565b5050505090500194505050505060405180910390f35b61026d6004803603606081101561075257600080fd5b508035600290810b91602081013590910b90604001356001600160801b0316612569565b6107a06004803603604081101561078c57600080fd5b508035600290810b9160200135900b6126e0565b6040805160069490940b84526001600160a01b03909216602084015263ffffffff1682820152519081900360600190f35b6101bb6128d7565b6107e16128fb565b6040805160029290920b8252519081900360200190f35b6101bb61291f565b610808612943565b6040805162ffffff9092168252519081900360200190f35b61045e612967565b6108486004803603602081101561083e57600080fd5b503560020b61296d565b604080516001600160801b039099168952600f9790970b602089015287870195909552606087019390935260069190910b60808601526001600160a01b031660a085015263ffffffff1660c0840152151560e083015251908190036101000190f35b610359600480360360208110156108c057600080fd5b50356001600160a01b03166129db565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806108ff612bf0565b85610936576040805162461bcd60e51b8152602060048201526002602482015261415360f01b604482015290519081900360640190fd5b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602083015261ffff600160b81b8204811693830193909352600160c81b810483166060830152600160d81b8104909216608082015260ff600160e81b8304811660a0830152600160f01b909204909116151560c082018190526109ef576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b87610a3a5780600001516001600160a01b0316866001600160a01b0316118015610a35575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038716105b610a6c565b80600001516001600160a01b0316866001600160a01b0316108015610a6c57506401000276a36001600160a01b038716115b610aa3576040805162461bcd60e51b815260206004820152600360248201526214d41360ea1b604482015290519081900360640190fd5b6000805460ff60f01b191681556040805160c08101909152808a610ad25760048460a0015160ff16901c610ae5565b60108460a0015160ff1681610ae357fe5b065b60ff1681526004546001600160801b03166020820152604001610b06612c27565b63ffffffff168152602001600060060b815260200160006001600160a01b031681526020016000151581525090506000808913905060006040518060e001604052808b81526020016000815260200185600001516001600160a01b03168152602001856020015160020b81526020018c610b8257600254610b86565b6001545b815260200160006001600160801b0316815260200184602001516001600160801b031681525090505b805115801590610bd55750886001600160a01b031681604001516001600160a01b031614155b15610f9f57610be261560e565b60408201516001600160a01b031681526060820151610c25906006907f00000000000000000000000000000000000000000000000000000000000000008f612c2b565b15156040830152600290810b810b60208301819052620d89e719910b1215610c5657620d89e7196020820152610c75565b6020810151620d89e860029190910b1315610c7557620d89e860208201525b610c828160200151612d6d565b6001600160a01b031660608201526040820151610d13908d610cbc578b6001600160a01b031683606001516001600160a01b031611610cd6565b8b6001600160a01b031683606001516001600160a01b0316105b610ce4578260600151610ce6565b8b5b60c085015185517f000000000000000000000000000000000000000000000000000000000000000061309f565b60c085015260a084015260808301526001600160a01b031660408301528215610d7557610d498160c00151826080015101613291565b825103825260a0810151610d6b90610d6090613291565b6020840151906132a7565b6020830152610db0565b610d828160a00151613291565b825101825260c08101516080820151610daa91610d9f9101613291565b6020840151906132c3565b60208301525b835160ff1615610df6576000846000015160ff168260c0015181610dd057fe5b60c0840180519290910491829003905260a0840180519091016001600160801b03169052505b60c08201516001600160801b031615610e3557610e298160c00151600160801b8460c001516001600160801b03166132d9565b60808301805190910190525b80606001516001600160a01b031682604001516001600160a01b03161415610f5e57806040015115610f35578360a00151610ebf57610e9d846040015160008760200151886040015188602001518a606001516008613389909695949392919063ffffffff16565b6001600160a01b03166080860152600690810b900b6060850152600160a08501525b6000610f0b82602001518e610ed657600154610edc565b84608001515b8f610eeb578560800151610eef565b6002545b608089015160608a015160408b0151600595949392919061351c565b90508c15610f17576000035b610f258360c00151826135ef565b6001600160801b031660c0840152505b8b610f44578060200151610f4d565b60018160200151035b600290810b900b6060830152610f99565b80600001516001600160a01b031682604001516001600160a01b031614610f9957610f8c82604001516136a5565b600290810b900b60608301525b50610baf565b836020015160020b816060015160020b1461107a57600080610fed86604001518660400151886020015188602001518a606001518b6080015160086139d1909695949392919063ffffffff16565b604085015160608601516000805461ffff60c81b1916600160c81b61ffff958616021761ffff60b81b1916600160b81b95909416949094029290921762ffffff60a01b1916600160a01b62ffffff60029490940b93909316929092029190911773ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909116179055506110ac9050565b60408101516000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790555b8060c001516001600160801b031683602001516001600160801b0316146110f25760c0810151600480546001600160801b0319166001600160801b039092169190911790555b8a1561114257608081015160015560a08101516001600160801b03161561113d5760a0810151600380546001600160801b031981166001600160801b03918216909301169190911790555b611188565b608081015160025560a08101516001600160801b0316156111885760a0810151600380546001600160801b03808216600160801b92839004821690940116029190911790555b8115158b1515146111a157602081015181518b036111ae565b80600001518a0381602001515b90965094508a156112e75760008512156111f0576111f07f00000000000000000000000000000000000000000000000000000000000000008d87600003613b86565b60006111fa613cd4565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b15801561127e57600080fd5b505af1158015611292573d6000803e3d6000fd5b5050505061129e613cd4565b6112a88289613e0d565b11156112e1576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b50611411565b600086121561131e5761131e7f00000000000000000000000000000000000000000000000000000000000000008d88600003613b86565b6000611328613e1d565b9050336001600160a01b031663fa461e3388888c8c6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156113ac57600080fd5b505af11580156113c0573d6000803e3d6000fd5b505050506113cc613e1d565b6113d68288613e0d565b111561140f576040805162461bcd60e51b815260206004820152600360248201526249494160e81b604482015290519081900360640190fd5b505b60408082015160c083015160608085015184518b8152602081018b90526001600160a01b03948516818701526001600160801b039093169183019190915260020b60808201529151908e169133917fc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca679181900360a00190a350506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b6004546001600160801b031681565b6003546001600160801b0380821691600160801b90041682565b60088161ffff81106114e757600080fd5b015463ffffffff81169150640100000000810460060b90600160581b81046001600160a01b031690600160f81b900460ff1684565b600054600160f01b900460ff16611560576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611575612bf0565b60008054600160d81b900461ffff169061159160088385613eb5565b6000805461ffff808416600160d81b810261ffff60d81b19909316929092179092559192508316146115fe576040805161ffff80851682528316602082015281517fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a929181900390910190a15b50506000805460ff60f01b1916600160f01b17905550565b6000546001600160a01b03811690600160a01b810460020b9061ffff600160b81b8204811691600160c81b8104821691600160d81b8204169060ff600160e81b8204811691600160f01b90041687565b600080548190600160f01b900460ff166116ad576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b191690556001600160801b0385166116cd57600080fd5b60008061171b60405180608001604052808c6001600160a01b031681526020018b60020b81526020018a60020b81526020016117118a6001600160801b0316613f58565b600f0b9052613f69565b9250925050819350809250600080600086111561173d5761173a613cd4565b91505b841561174e5761174b613e1d565b90505b336001600160a01b031663d348799787878b8b6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b1580156117d057600080fd5b505af11580156117e4573d6000803e3d6000fd5b50505050600086111561183b576117f9613cd4565b6118038388613e0d565b111561183b576040805162461bcd60e51b815260206004820152600260248201526104d360f41b604482015290519081900360640190fd5b841561188b57611849613e1d565b6118538287613e0d565b111561188b576040805162461bcd60e51b81526020600482015260026024820152614d3160f01b604482015290519081900360640190fd5b8960020b8b60020b8d6001600160a01b03167f7a53080ba414158be7ec69b987b5fb7d07dee101fe85488f0853ae16239d0bde338d8b8b60405180856001600160a01b03168152602001846001600160801b0316815260200183815260200182815260200194505050505060405180910390a450506000805460ff60f01b1916600160f01b17905550919890975095505050505050565b60025481565b600054600160f01b900460ff1661196c576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19169055611981612bf0565b6004546001600160801b0316806119c3576040805162461bcd60e51b81526020600482015260016024820152601360fa1b604482015290519081900360640190fd5b60006119f8867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406141a9565b90506000611a2f867f000000000000000000000000000000000000000000000000000000000000000062ffffff16620f42406141a9565b90506000611a3b613cd4565b90506000611a47613e1d565b90508815611a7a57611a7a7f00000000000000000000000000000000000000000000000000000000000000008b8b613b86565b8715611aab57611aab7f00000000000000000000000000000000000000000000000000000000000000008b8a613b86565b336001600160a01b031663e9cbafb085858a8a6040518563ffffffff1660e01b815260040180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015611b2d57600080fd5b505af1158015611b41573d6000803e3d6000fd5b505050506000611b4f613cd4565b90506000611b5b613e1d565b905081611b688588613e0d565b1115611ba0576040805162461bcd60e51b8152602060048201526002602482015261046360f41b604482015290519081900360640190fd5b80611bab8487613e0d565b1115611be3576040805162461bcd60e51b8152602060048201526002602482015261463160f01b604482015290519081900360640190fd5b8382038382038115611c725760008054600160e81b9004600f16908115611c16578160ff168481611c1057fe5b04611c19565b60005b90506001600160801b03811615611c4c57600380546001600160801b038082168401166001600160801b03199091161790555b611c66818503600160801b8d6001600160801b03166132d9565b60018054909101905550505b8015611cfd5760008054600160e81b900460041c600f16908115611ca2578160ff168381611c9c57fe5b04611ca5565b60005b90506001600160801b03811615611cd757600380546001600160801b03600160801b8083048216850182160291161790555b611cf1818403600160801b8d6001600160801b03166132d9565b60028054909101905550505b8d6001600160a01b0316336001600160a01b03167fbdbdb71d7860376ba52b25a5028beea23581364a40522f6bcfb86bb1f2dca6338f8f86866040518085815260200184815260200183815260200182815260200194505050505060405180910390a350506000805460ff60f01b1916600160f01b179055505050505050505050505050565b600080548190600160f01b900460ff16611dca576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b19168155611de460073389896141e3565b60038101549091506001600160801b0390811690861611611e055784611e14565b60038101546001600160801b03165b60038201549093506001600160801b03600160801b909104811690851611611e3c5783611e52565b6003810154600160801b90046001600160801b03165b91506001600160801b03831615611eb7576003810180546001600160801b031981166001600160801b03918216869003821617909155611eb7907f0000000000000000000000000000000000000000000000000000000000000000908a908616613b86565b6001600160801b03821615611f1d576003810180546001600160801b03600160801b808304821686900382160291811691909117909155611f1d907f0000000000000000000000000000000000000000000000000000000000000000908a908516613b86565b604080516001600160a01b038a1681526001600160801b0380861660208301528416818301529051600288810b92908a900b9133917f70935338e69775456a85ddef226c395fb668b63fa0115f5f20610b388e6ca9c0919081900360600190a4506000805460ff60f01b1916600160f01b17905590969095509350505050565b60076020526000908152604090208054600182015460028301546003909301546001600160801b0392831693919281811691600160801b90041685565b60066020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600054600160f01b900460ff16612054576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b1580156120c157600080fd5b505afa1580156120d5573d6000803e3d6000fd5b505050506040513d60208110156120eb57600080fd5b50516001600160a01b0316331461210157600080fd5b60ff82161580612124575060048260ff16101580156121245750600a8260ff1611155b801561214e575060ff8116158061214e575060048160ff161015801561214e5750600a8160ff1611155b61215757600080fd5b60008054610ff0600484901b16840160ff908116600160e81b9081027fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841617909355919004167f973d8d92bb299f4af6ce49b52a8adb85ae46b9f214c4c4fc06ac77401237b1336010826040805160ff9390920683168252600f600486901c16602083015286831682820152918516606082015290519081900360800190a150506000805460ff60f01b1916600160f01b17905550565b600080548190600160f01b900460ff16612256576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916905560408051638da5cb5b60e01b815290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691638da5cb5b916004808301926020929190829003018186803b1580156122c357600080fd5b505afa1580156122d7573d6000803e3d6000fd5b505050506040513d60208110156122ed57600080fd5b50516001600160a01b0316331461230357600080fd5b6003546001600160801b039081169085161161231f578361232c565b6003546001600160801b03165b6003549092506001600160801b03600160801b9091048116908416116123525782612366565b600354600160801b90046001600160801b03165b90506001600160801b038216156123e7576003546001600160801b038381169116141561239557600019909101905b600380546001600160801b031981166001600160801b039182168590038216179091556123e7907f00000000000000000000000000000000000000000000000000000000000000009087908516613b86565b6001600160801b0381161561246d576003546001600160801b03828116600160801b90920416141561241857600019015b600380546001600160801b03600160801b80830482168590038216029181169190911790915561246d907f00000000000000000000000000000000000000000000000000000000000000009087908416613b86565b604080516001600160801b0380851682528316602082015281516001600160a01b0388169233927f596b573906218d3411850b26a6b437d6c4522fdb43d2d2386263f86d50b8b151929081900390910190a36000805460ff60f01b1916600160f01b1790559094909350915050565b6060806124e7612bf0565b61255e6124f2612c27565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092018290525054600454600896959450600160a01b820460020b935061ffff600160b81b8304811693506001600160801b0390911691600160c81b900416614247565b915091509250929050565b600080548190600160f01b900460ff166125b0576040805162461bcd60e51b81526020600482015260036024820152624c4f4b60e81b604482015290519081900360640190fd5b6000805460ff60f01b1916815560408051608081018252338152600288810b602083015287900b918101919091528190819061260990606081016125fc6001600160801b038a16613f58565b600003600f0b9052613f69565b925092509250816000039450806000039350600085118061262a5750600084115b15612669576003830180546001600160801b038082168089018216600160801b93849004831689019092169092029091176001600160801b0319161790555b604080516001600160801b0388168152602081018790528082018690529051600289810b92908b900b9133917f0c396cd989a39f4459b5fa1aed6a9a8dcdbc45908acfd67e028cd568da98982c919081900360600190a450506000805460ff60f01b1916600160f01b179055509094909350915050565b60008060006126ed612bf0565b6126f785856143a1565b600285810b810b60009081526005602052604080822087840b90930b825281206003830154600681900b9367010000000000000082046001600160a01b0316928492600160d81b810463ffffffff169284929091600160f81b900460ff168061275f57600080fd5b6003820154600681900b985067010000000000000081046001600160a01b03169650600160d81b810463ffffffff169450600160f81b900460ff16806127a457600080fd5b50506040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b810b6020840181905261ffff600160b81b8404811695850195909552600160c81b830485166060850152600160d81b8304909416608084015260ff600160e81b8304811660a0850152600160f01b909204909116151560c08301529093508e810b91900b1215905061284d575093909403965090039350900390506128d0565b8a60020b816020015160020b12156128c1576000612869612c27565b602083015160408401516004546060860151939450600093849361289f936008938893879392916001600160801b031690613389565b9a9003989098039b5050949096039290920396509091030392506128d0915050565b50949093039650039350900390505b9250925092565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b60056020526000908152604090208054600182015460028301546003909301546001600160801b03831693600160801b909304600f0b9290600681900b9067010000000000000081046001600160a01b031690600160d81b810463ffffffff1690600160f81b900460ff1688565b6000546001600160a01b031615612a1e576040805162461bcd60e51b8152602060048201526002602482015261414960f01b604482015290519081900360640190fd5b6000612a29826136a5565b9050600080612a41612a39612c27565b60089061446a565b6040805160e0810182526001600160a01b038816808252600288810b6020808501829052600085870181905261ffff898116606088018190529089166080880181905260a08801839052600160c0909801979097528154600160f01b73ffffffffffffffffffffffffffffffffffffffff19909116871762ffffff60a01b1916600160a01b62ffffff9787900b9790971696909602959095177fffffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffff16600160c81b9091021761ffff60d81b1916600160d81b909602959095177fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1692909217909355835191825281019190915281519395509193507f98636036cb66a9c19a37435efc1e90142190214e8abeb821bdba3f2990dd4c9592918290030190a150505050565b60008082600281900b620d89e71981612b9957fe5b05029050600083600281900b620d89e881612bb057fe5b0502905060008460020b83830360020b81612bc757fe5b0560010190508062ffffff166001600160801b03801681612be457fe5b0493505050505b919050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612c2557600080fd5b565b4290565b60008060008460020b8660020b81612c3f57fe5b05905060008660020b128015612c6657508460020b8660020b81612c5f57fe5b0760020b15155b15612c7057600019015b8315612ce557600080612c82836144b6565b600182810b810b600090815260208d9052604090205460ff83169190911b80016000190190811680151597509294509092509085612cc757888360ff16860302612cda565b88612cd1826144c8565b840360ff168603025b965050505050612d63565b600080612cf4836001016144b6565b91509150600060018260ff166001901b031990506000818b60008660010b60010b8152602001908152602001600020541690508060001415955085612d4657888360ff0360ff16866001010102612d5c565b8883612d5183614568565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b12612d84578260020b612d8c565b8260020b6000035b9050620d89e8811115612dca576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b600060018216612dde57600160801b612df0565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615612e24576ffff97272373d413259a46990580e213a0260801c5b6004821615612e43576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e62576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e81576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612ea0576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ebf576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612ede576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612efe576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f1e576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f3e576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f5e576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f7e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612f9e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fbe576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fde576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615612fff576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561301f576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561303e576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561305b576b048a170391f7dc42444e8fa20260801c5b60008460020b131561307657806000198161307257fe5b0490505b64010000000081061561308a57600161308d565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906131245760006130d88989620f42400362ffffff16620f42406132d9565b9050826130f1576130ec8c8c8c6001614652565b6130fe565b6130fe8b8d8c60016146cd565b955085811061310f578a965061311e565b61311b8c8b838661478a565b96505b5061316e565b8161313b576131368b8b8b60006146cd565b613148565b6131488a8c8b6000614652565b935083886000031061315c5789955061316e565b61316b8b8a8a600003856147d6565b95505b6001600160a01b038a81169087161482156131d15780801561318d5750815b6131a35761319e878d8c60016146cd565b6131a5565b855b95508080156131b2575081155b6131c8576131c3878d8c6000614652565b6131ca565b845b945061321b565b8080156131db5750815b6131f1576131ec8c888c6001614652565b6131f3565b855b9550808015613200575081155b613216576132118c888c60006146cd565b613218565b845b94505b8115801561322b57508860000385115b15613237578860000394505b81801561325657508a6001600160a01b0316876001600160a01b031614155b15613265578589039350613282565b61327f868962ffffff168a620f42400362ffffff166141a9565b93505b50505095509550955095915050565b6000600160ff1b82106132a357600080fd5b5090565b808203828113156000831215146132bd57600080fd5b92915050565b818101828112156000831215146132bd57600080fd5b600080806000198587098686029250828110908390030390508061330f576000841161330457600080fd5b508290049050613382565b80841161331b57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b60008063ffffffff8716613430576000898661ffff1661ffff81106133aa57fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff16151560608301529092508a161461341c57613419818a8988614822565b90505b806020015181604001519250925050613510565b8688036000806134458c8c858c8c8c8c6148d2565b91509150816000015163ffffffff168363ffffffff161415613477578160200151826040015194509450505050613510565b805163ffffffff8481169116141561349f578060200151816040015194509450505050613510565b8151815160208085015190840151918390039286039163ffffffff80841692908516910360060b816134cd57fe5b05028460200151018263ffffffff168263ffffffff1686604001518660400151036001600160a01b031602816134ff57fe5b048560400151019650965050505050505b97509795505050505050565b600295860b860b60009081526020979097526040909620600181018054909503909455938301805490920390915560038201805463ffffffff600160d81b6001600160a01b036701000000000000008085048216909603169094027fffffffffff0000000000000000000000000000000000000000ffffffffffffff90921691909117600681810b90960390950b66ffffffffffffff1666ffffffffffffff199095169490941782810485169095039093160263ffffffff60d81b1990931692909217905554600160801b9004600f0b90565b60008082600f0b121561365457826001600160801b03168260000384039150816001600160801b03161061364f576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b6132bd565b826001600160801b03168284019150816001600160801b031610156132bd576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b038316108015906136e1575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b613716576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c979088119617909417909217179091171717608081106137b757607f810383901c91506137c1565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b146139c257886001600160a01b03166139a682612d6d565b6001600160a01b031611156139bb57816139bd565b805b6139c4565b815b9998505050505050505050565b6000806000898961ffff1661ffff81106139e757fe5b60408051608081018252919092015463ffffffff8082168084526401000000008304600690810b810b900b6020850152600160581b83046001600160a01b031694840194909452600160f81b90910460ff161515606083015290925089161415613a575788859250925050613510565b8461ffff168461ffff16118015613a7857506001850361ffff168961ffff16145b15613a8557839150613a89565b8491505b8161ffff168960010161ffff1681613a9d57fe5b069250613aac81898989614822565b8a8461ffff1661ffff8110613abd57fe5b825191018054602084015160408501516060909501511515600160f81b027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6001600160a01b03909616600160581b027fff0000000000000000000000000000000000000000ffffffffffffffffffffff60069390930b66ffffffffffffff16640100000000026affffffffffffff000000001963ffffffff90971663ffffffff199095169490941795909516929092171692909217929092161790555097509795505050505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b60208310613c025780518252601f199092019160209182019101613be3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c64576040519150601f19603f3d011682016040523d82523d6000602084013e613c69565b606091505b5091509150818015613c97575080511580613c975750808060200190516020811015613c9457600080fd5b50515b613ccd576040805162461bcd60e51b81526020600482015260026024820152612a2360f11b604482015290519081900360640190fd5b5050505050565b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693919290918291908083835b60208310613d6d5780518252601f199092019160209182019101613d4e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613dcd576040519150601f19603f3d011682016040523d82523d6000602084013e613dd2565b606091505b5091509150818015613de657506020815110155b613def57600080fd5b808060200190516020811015613e0457600080fd5b50519250505090565b808201828110156132bd57600080fd5b604080513060248083019190915282518083039091018152604490910182526020810180516001600160e01b03166370a0823160e01b17815291518151600093849384936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016939192909182919080838360208310613d6d5780518252601f199092019160209182019101613d4e565b6000808361ffff1611613ef3576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b8261ffff168261ffff1611613f09575081613382565b825b8261ffff168161ffff161015613f4f576001858261ffff1661ffff8110613f2e57fe5b01805463ffffffff191663ffffffff92909216919091179055600101613f0b565b50909392505050565b80600f81900b8114612beb57600080fd5b6000806000613f76612bf0565b613f88846020015185604001516143a1565b6040805160e0810182526000546001600160a01b0381168252600160a01b8104600290810b810b900b602080840182905261ffff600160b81b8404811685870152600160c81b84048116606080870191909152600160d81b8504909116608086015260ff600160e81b8504811660a0870152600160f01b909404909316151560c08501528851908901519489015192890151939461402c9491939092909190614acf565b93508460600151600f0b6000146141a157846020015160020b816020015160020b12156140815761407a6140638660200151612d6d565b6140708760400151612d6d565b8760600151614c84565b92506141a1565b846040015160020b816020015160020b12156141775760045460408201516001600160801b03909116906140d3906140b7612c27565b60208501516060860151608087015160089493929187916139d1565b6000805461ffff60c81b1916600160c81b61ffff938416021761ffff60b81b1916600160b81b939092169290920217905581516040870151614123919061411990612d6d565b8860600151614c84565b93506141416141358760200151612d6d565b83516060890151614cc8565b92506141518187606001516135ef565b600480546001600160801b0319166001600160801b0392909216919091179055506141a1565b61419e6141878660200151612d6d565b6141948760400151612d6d565b8760600151614cc8565b91505b509193909250565b60006141b68484846132d9565b9050600082806141c257fe5b84860911156133825760001981106141d957600080fd5b6001019392505050565b6040805160609490941b6bffffffffffffffffffffffff1916602080860191909152600293840b60e890811b60348701529290930b90911b60378401528051808403601a018152603a90930181528251928201929092206000908152929052902090565b60608060008361ffff1611614287576040805162461bcd60e51b81526020600482015260016024820152604960f81b604482015290519081900360640190fd5b865167ffffffffffffffff8111801561429f57600080fd5b506040519080825280602002602001820160405280156142c9578160200160208202803683370190505b509150865167ffffffffffffffff811180156142e457600080fd5b5060405190808252806020026020018201604052801561430e578160200160208202803683370190505b50905060005b87518110156143945761433f8a8a8a848151811061432e57fe5b60200260200101518a8a8a8a613389565b84838151811061434b57fe5b6020026020010184848151811061435e57fe5b60200260200101826001600160a01b03166001600160a01b03168152508260060b60060b81525050508080600101915050614314565b5097509795505050505050565b8060020b8260020b126143e1576040805162461bcd60e51b8152602060048201526003602482015262544c5560e81b604482015290519081900360640190fd5b620d89e719600283900b1215614424576040805162461bcd60e51b8152602060048201526003602482015262544c4d60e81b604482015290519081900360640190fd5b620d89e8600282900b1315614466576040805162461bcd60e51b815260206004820152600360248201526254554d60e81b604482015290519081900360640190fd5b5050565b6040805160808101825263ffffffff9283168082526000602083018190529282019290925260016060909101819052835463ffffffff1916909117909116600160f81b17909155908190565b60020b600881901d9161010090910790565b60008082116144d657600080fd5b600160801b82106144e957608091821c91015b68010000000000000000821061450157604091821c91015b640100000000821061451557602091821c91015b62010000821061452757601091821c91015b610100821061453857600891821c91015b6010821061454857600491821c91015b6004821061455857600291821c91015b60028210612beb57600101919050565b600080821161457657600080fd5b5060ff6001600160801b0382161561459157607f1901614599565b608082901c91505b67ffffffffffffffff8216156145b257603f19016145ba565b604082901c91505b63ffffffff8216156145cf57601f19016145d7565b602082901c91505b61ffff8216156145ea57600f19016145f2565b601082901c91505b60ff821615614604576007190161460c565b600882901c91505b600f82161561461e5760031901614626565b600482901c91505b60038216156146385760011901614640565b600282901c91505b6001821615612beb5760001901919050565b6000836001600160a01b0316856001600160a01b03161115614672579293925b8161469f5761469a836001600160801b03168686036001600160a01b0316600160601b6132d9565b6146c2565b6146c2836001600160801b03168686036001600160a01b0316600160601b6141a9565b90505b949350505050565b6000836001600160a01b0316856001600160a01b031611156146ed579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b03868603811690871661472957600080fd5b8361475957866001600160a01b031661474c8383896001600160a01b03166132d9565b8161475357fe5b0461477f565b61477f6147708383896001600160a01b03166141a9565b886001600160a01b0316614cf7565b979650505050505050565b600080856001600160a01b0316116147a157600080fd5b6000846001600160801b0316116147b757600080fd5b816147c95761469a8585856001614d02565b6146c28585856001614de3565b600080856001600160a01b0316116147ed57600080fd5b6000846001600160801b03161161480357600080fd5b816148155761469a8585856000614de3565b6146c28585856000614d02565b61482a61564a565b600085600001518503905060405180608001604052808663ffffffff1681526020018263ffffffff168660020b0288602001510160060b81526020016000856001600160801b03161161487e576001614880565b845b6001600160801b031673ffffffff00000000000000000000000000000000608085901b16816148ab57fe5b048860400151016001600160a01b0316815260200160011515815250915050949350505050565b6148da61564a565b6148e261564a565b888561ffff1661ffff81106148f357fe5b60408051608081018252919092015463ffffffff81168083526401000000008204600690810b810b900b6020840152600160581b82046001600160a01b031693830193909352600160f81b900460ff1615156060820152925061495890899089614ed8565b15614990578663ffffffff16826000015163ffffffff16141561497a57613510565b8161498783898988614822565b91509150613510565b888361ffff168660010161ffff16816149a557fe5b0661ffff1661ffff81106149b557fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b90910416151560608201819052909250614a6c57604080516080810182528a5463ffffffff811682526401000000008104600690810b810b900b6020830152600160581b81046001600160a01b031692820192909252600160f81b90910460ff161515606082015291505b614a7b88836000015189614ed8565b614ab2576040805162461bcd60e51b815260206004820152600360248201526213d31160ea1b604482015290519081900360640190fd5b614abf8989898887614f9b565b9150915097509795505050505050565b6000614ade60078787876141e3565b60015460025491925090600080600f87900b15614c24576000614aff612c27565b6000805460045492935090918291614b499160089186918591600160a01b810460020b9161ffff600160b81b83048116926001600160801b0390921691600160c81b900416613389565b9092509050614b8360058d8b8d8b8b87898b60007f000000000000000000000000000000000000000000000000000000000000000061513b565b9450614bba60058c8b8d8b8b87898b60017f000000000000000000000000000000000000000000000000000000000000000061513b565b93508415614bee57614bee60068d7f0000000000000000000000000000000000000000000000000000000000000000615325565b8315614c2057614c2060068c7f0000000000000000000000000000000000000000000000000000000000000000615325565b5050505b600080614c3660058c8c8b8a8a61538b565b9092509050614c47878a8484615437565b600089600f0b1215614c75578315614c6457614c6460058c6155cc565b8215614c7557614c7560058b6155cc565b50505050505095945050505050565b60008082600f0b12614caa57614ca5614ca085858560016146cd565b613291565b6146c5565b614cbd614ca085858560000360006146cd565b600003949350505050565b60008082600f0b12614ce457614ca5614ca08585856001614652565b614cbd614ca08585856000036000614652565b808204910615150190565b60008115614d755760006001600160a01b03841115614d3857614d3384600160601b876001600160801b03166132d9565b614d50565b6001600160801b038516606085901b81614d4e57fe5b045b9050614d6d614d686001600160a01b03881683613e0d565b6155f8565b9150506146c5565b60006001600160a01b03841115614da357614d9e84600160601b876001600160801b03166141a9565b614dba565b614dba606085901b6001600160801b038716614cf7565b905080866001600160a01b031611614dd157600080fd5b6001600160a01b0386160390506146c5565b600082614df15750836146c5565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b168215614e91576001600160a01b03861684810290858281614e3157fe5b041415614e6257818101828110614e6057614e5683896001600160a01b0316836141a9565b93505050506146c5565b505b614e8882614e83878a6001600160a01b03168681614e7c57fe5b0490613e0d565b614cf7565b925050506146c5565b6001600160a01b03861684810290858281614ea857fe5b04148015614eb557508082115b614ebe57600080fd5b808203614e56614d68846001600160a01b038b16846141a9565b60008363ffffffff168363ffffffff1611158015614f0257508363ffffffff168263ffffffff1611155b15614f1e578163ffffffff168363ffffffff1611159050613382565b60008463ffffffff168463ffffffff1611614f46578363ffffffff1664010000000001614f4e565b8363ffffffff165b64ffffffffff16905060008563ffffffff168463ffffffff1611614f7f578363ffffffff1664010000000001614f87565b8363ffffffff165b64ffffffffff169091111595945050505050565b614fa361564a565b614fab61564a565b60008361ffff168560010161ffff1681614fc157fe5b0661ffff169050600060018561ffff16830103905060005b506002818301048961ffff87168281614fee57fe5b0661ffff8110614ffa57fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b9091041615156060820181905290955061506557806001019250614fd9565b898661ffff16826001018161507657fe5b0661ffff811061508257fe5b60408051608081018252929091015463ffffffff811683526401000000008104600690810b810b900b60208401526001600160a01b03600160581b8204169183019190915260ff600160f81b909104161515606082015285519094506000906150ed908b908b614ed8565b905080801561510657506151068a8a8760000151614ed8565b15615111575061512e565b8061512157600182039250615128565b8160010193505b50614fd9565b5050509550959350505050565b60028a810b900b600090815260208c90526040812080546001600160801b031682615166828d6135ef565b9050846001600160801b0316816001600160801b031611156151b4576040805162461bcd60e51b81526020600482015260026024820152614c4f60f01b604482015290519081900360640190fd5b6001600160801b03828116159082161581141594501561528a578c60020b8e60020b1361525a57600183018b9055600283018a90556003830180547fffffffffff0000000000000000000000000000000000000000ffffffffffffff166701000000000000006001600160a01b038c16021766ffffffffffffff191666ffffffffffffff60068b900b161763ffffffff60d81b1916600160d81b63ffffffff8a16021790555b6003830180547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b1790555b82546001600160801b0319166001600160801b038216178355856152d35782546152ce906152c990600160801b9004600f90810b810b908f900b6132c3565b613f58565b6152f4565b82546152f4906152c990600160801b9004600f90810b810b908f900b6132a7565b8354600f9190910b6001600160801b03908116600160801b0291161790925550909c9b505050505050505050505050565b8060020b8260020b8161533457fe5b0760020b1561534257600080fd5b60008061535d8360020b8560020b8161535757fe5b056144b6565b600191820b820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600285810b80820b60009081526020899052604080822088850b850b83529082209193849391929184918291908a900b126153d1575050600182015460028301546153e4565b8360010154880391508360020154870390505b6000808b60020b8b60020b121561540657505060018301546002840154615419565b84600101548a0391508460020154890390505b92909803979097039b96909503949094039850939650505050505050565b6040805160a08101825285546001600160801b0390811682526001870154602083015260028701549282019290925260038601548083166060830152600160801b900490911660808201526000600f85900b6154d65781516001600160801b03166154ce576040805162461bcd60e51b815260206004820152600260248201526104e560f41b604482015290519081900360640190fd5b5080516154e5565b81516154e290866135ef565b90505b60006155098360200151860384600001516001600160801b0316600160801b6132d9565b9050600061552f8460400151860385600001516001600160801b0316600160801b6132d9565b905086600f0b6000146155565787546001600160801b0319166001600160801b0384161788555b60018801869055600288018590556001600160801b03821615158061558457506000816001600160801b0316115b156155c2576003880180546001600160801b031981166001600160801b039182168501821617808216600160801b9182900483168501909216021790555b5050505050505050565b600290810b810b6000908152602092909252604082208281556001810183905590810182905560030155565b806001600160a01b0381168114612beb57600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b6040805160808101825260008082526020820181905291810182905260608101919091529056fea164736f6c6343000706000aa164736f6c6343000706000ac66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc", - "nonce": "0x2", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x7fa9041d354d4f40e97e7534ec4d0adb6f054bcfed887baead47134ac338f37e", - "transactionType": "CALL", - "contractName": "UniswapV3Factory", - "contractAddress": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "function": "enableFeeAmount(uint24,int24)", - "arguments": [ - "100", - "1" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "value": "0x0", - "input": "0x8a7c195f00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000001", - "nonce": "0x3", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xd665fa250323cf3019f7218dd47d893152a51c7d9469511b61f89bf6811783f9", - "transactionType": "CALL", - "contractName": "UniswapV3Factory", - "contractAddress": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "function": "setOwner(address)", - "arguments": [ - "0x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A04" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "value": "0x0", - "input": "0x13af403500000000000000000000000007d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "nonce": "0x4", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xdbba5f58a37aef8302e125c1efd65e1b9df6af1c595709d52a946fc5273b299a", - "transactionType": "CREATE", - "contractName": "UniswapInterfaceMulticall", - "contractAddress": "0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9", - "function": null, - "arguments": null, - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50610567806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80630f28c97d146100465780631749e1e3146100645780634d2301cc14610085575b600080fd5b61004e610098565b60405161005b919061041f565b60405180910390f35b6100776100723660046102a7565b61009c565b60405161005b929190610428565b61004e610093366004610286565b610220565b4290565b8051439060609067ffffffffffffffff811180156100b957600080fd5b506040519080825280602002602001820160405280156100f357816020015b6100e061023a565b8152602001906001900390816100d85790505b50905060005b835181101561021a57600080600086848151811061011357fe5b60200260200101516000015187858151811061012b57fe5b60200260200101516020015188868151811061014357fe5b60200260200101516040015192509250925060005a90506000808573ffffffffffffffffffffffffffffffffffffffff1685856040516101839190610403565b60006040518083038160008787f1925050503d80600081146101c1576040519150601f19603f3d011682016040523d82523d6000602084013e6101c6565b606091505b509150915060005a8403905060405180606001604052808415158152602001828152602001838152508989815181106101fb57fe5b60200260200101819052505050505050505080806001019150506100f9565b50915091565b73ffffffffffffffffffffffffffffffffffffffff163190565b604051806060016040528060001515815260200160008152602001606081525090565b803573ffffffffffffffffffffffffffffffffffffffff8116811461028157600080fd5b919050565b600060208284031215610297578081fd5b6102a08261025d565b9392505050565b600060208083850312156102b9578182fd5b823567ffffffffffffffff808211156102d0578384fd5b818501915085601f8301126102e3578384fd5b8135818111156102ef57fe5b6102fc8485830201610506565b81815284810190848601875b848110156103f457813587017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0606081838f03011215610346578a8bfd5b60408051606081018181108b8211171561035c57fe5b8252610369848d0161025d565b8152818401358c82015260608401358a811115610384578d8efd5b8085019450508e603f850112610398578c8dfd5b8b8401358a8111156103a657fe5b6103b68d85601f84011601610506565b93508084528f838287010111156103cb578d8efd5b808386018e86013783018c018d9052908101919091528552509287019290870190600101610308565b50909998505050505050505050565b6000825161041581846020870161052a565b9190910192915050565b90815260200190565b600060408083018584526020828186015281865180845260609350838701915083838202880101838901875b838110156104f6578983037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa001855281518051151584528681015187850152880151888401889052805188850181905260806104b582828801858c0161052a565b96880196601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01694909401909301925090850190600101610454565b50909a9950505050505050505050565b60405181810167ffffffffffffffff8111828210171561052257fe5b604052919050565b60005b8381101561054557818101518382015260200161052d565b83811115610554576000848401525b5050505056fea164736f6c6343000706000a", - "nonce": "0x5", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x42feb903896a21a0a834bc7c93d8ce84536d215d20700bf251e3945d2f9c18cc", - "transactionType": "CREATE", - "contractName": "QuoterV2", - "contractAddress": "0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c", - "function": null, - "arguments": [ - "0x780E96775371e1C4F4cD1524a578B8f1b12ECE58", - "0x4200000000000000000000000000000000000006" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x60c06040523480156200001157600080fd5b506040516200212c3803806200212c833981016040819052620000349162000070565b6001600160601b0319606092831b8116608052911b1660a052620000a7565b80516001600160a01b03811681146200006b57600080fd5b919050565b6000806040838503121562000083578182fd5b6200008e8362000053565b91506200009e6020840162000053565b90509250929050565b60805160601c60a05160601c612051620000db60003980610321525080610577528061095d5280610b9252506120516000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063c45a01551161005b578063c45a0155146100e6578063c6a5026a146100ee578063cdca175314610101578063fa461e33146101145761007d565b80632f80bb1d146100825780634aa4a4fc146100ae578063bd21704a146100c3575b600080fd5b610095610090366004611b2b565b610129565b6040516100a59493929190611eac565b60405180910390f35b6100b661031f565b6040516100a59190611def565b6100d66100d1366004611c49565b610343565b6040516100a59493929190611f54565b6100b6610575565b6100d66100fc366004611c49565b610599565b61009561010f366004611b2b565b610754565b610127610122366004611b91565b61092c565b005b6000606080600061013986610ae8565b67ffffffffffffffff8111801561014f57600080fd5b50604051908082528060200260200182016040528015610179578160200160208202803683370190505b50925061018586610ae8565b67ffffffffffffffff8111801561019b57600080fd5b506040519080825280602002602001820160405280156101c5578160200160208202803683370190505b50915060005b60008060006101d98a610b17565b92509250925060008060008061025c6040518060a001604052808873ffffffffffffffffffffffffffffffffffffffff1681526020018973ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250610343565b9350935093509350828b898151811061027157fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a89815181106102b857fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926102e58e610b48565b156102fa576102f38e610b50565b9d5061030a565b8c9b505050505050505050610316565b505050505050506101cb565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff808216908416109284926103819290610b8b565b9050866080015173ffffffffffffffffffffffffffffffffffffffff16600014156103af5760408701516000555b60005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856103df8c60400151610bc9565b6000038c6080015173ffffffffffffffffffffffffffffffffffffffff1660001461040e578c60800151610434565b8761042d5773fffd8963efd1fc6a506488495d951d5263988d25610434565b6401000276a45b8d602001518e606001518f6000015160405160200161045593929190611d89565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610484959493929190611e10565b6040805180830381600087803b15801561049d57600080fd5b505af19250505080156104eb575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526104e891810190611b6e565b60015b610568573d808015610519576040519150601f19603f3d011682016040523d82523d6000602084013e61051e565b606091505b505a82039450886080015173ffffffffffffffffffffffffffffffffffffffff166000141561054c57600080555b610557818487610bfb565b97509750975097505050505061056e565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b60208101518151606083015160009283928392839273ffffffffffffffffffffffffffffffffffffffff808216908416109284926105d79290610b8b565b905060005a90508173ffffffffffffffffffffffffffffffffffffffff1663128acb0830856106098c60400151610bc9565b60808d015173ffffffffffffffffffffffffffffffffffffffff1615610633578c60800151610659565b876106525773fffd8963efd1fc6a506488495d951d5263988d25610659565b6401000276a45b8d600001518e606001518f6020015160405160200161067a93929190611d89565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016106a9959493929190611e10565b6040805180830381600087803b1580156106c257600080fd5b505af1925050508015610710575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261070d91810190611b6e565b60015b610568573d80801561073e576040519150601f19603f3d011682016040523d82523d6000602084013e610743565b606091505b505a82039450610557818487610bfb565b6000606080600061076486610ae8565b67ffffffffffffffff8111801561077a57600080fd5b506040519080825280602002602001820160405280156107a4578160200160208202803683370190505b5092506107b086610ae8565b67ffffffffffffffff811180156107c657600080fd5b506040519080825280602002602001820160405280156107f0578160200160208202803683370190505b50915060005b60008060006108048a610b17565b9250925092506000806000806108876040518060a001604052808973ffffffffffffffffffffffffffffffffffffffff1681526020018873ffffffffffffffffffffffffffffffffffffffff1681526020018f81526020018762ffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815250610599565b9350935093509350828b898151811061089c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818a89815181106108e357fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926109108e610b48565b156102fa5761091e8e610b50565b9d50505050505050506107f6565b600083138061093b5750600082135b61094457600080fd5b600080600061095284610b17565b9250925092506109847f0000000000000000000000000000000000000000000000000000000000000000848484610ccf565b5060008060008089136109ca578573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610888a6000036109ff565b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161089896000035b9250925092506000610a12878787610b8b565b90506000808273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610a5d57600080fd5b505afa158015610a71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a959190611c6b565b5050505050915091508515610abb57604051848152826020820152816040820152606081fd5b60005415610ad1576000548414610ad157600080fd5b604051858152826020820152816040820152606081fd5b805160177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec909101045b919050565b60008080610b258482610cee565b9250610b32846014610dee565b9050610b3f846017610cee565b91509193909250565b516042111590565b8051606090610b859083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901610ede565b92915050565b6000610bc17f0000000000000000000000000000000000000000000000000000000000000000610bbc8686866110c5565b611142565b949350505050565b60007f80000000000000000000000000000000000000000000000000000000000000008210610bf757600080fd5b5090565b6000806000806000808773ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610c4a57600080fd5b505afa158015610c5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c829190611c6b565b50939650610c9794508d935061127892505050565b91975095509050610cbf73ffffffffffffffffffffffffffffffffffffffff89168383611339565b9350869250505093509350935093565b6000610ce585610ce08686866110c5565b611991565b95945050505050565b600081826014011015610d6257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015610dd557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015610e6257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610ed557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b60608182601f011015610f5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b828284011015610fc357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b8183018451101561103557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b60608215801561105457604051915060008252602082016040526110bc565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561108d578051835260209283019201611075565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6110cd6119fa565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115611105579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061118457600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b60008060008351606014611318576044845110156112cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c290611e75565b60405180910390fd5b600484019350838060200190518101906112e59190611bdf565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c29190611e62565b8380602001905181019061132c9190611d02565b9250925092509193909250565b60008060008060008060008060088b73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561138d57600080fd5b505afa1580156113a1573d6000803e3d6000fd5b505050506040513d60208110156113b757600080fd5b5051600290810b908c900b816113c957fe5b0560020b901d905060006101008c73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561141c57600080fd5b505afa158015611430573d6000803e3d6000fd5b505050506040513d602081101561144657600080fd5b5051600290810b908d900b8161145857fe5b0560020b8161146357fe5b079050600060088d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114b057600080fd5b505afa1580156114c4573d6000803e3d6000fd5b505050506040513d60208110156114da57600080fd5b5051600290810b908d900b816114ec57fe5b0560020b901d905060006101008e73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561153f57600080fd5b505afa158015611553573d6000803e3d6000fd5b505050506040513d602081101561156957600080fd5b5051600290810b908e900b8161157b57fe5b0560020b8161158657fe5b07905060008160ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156115e757600080fd5b505afa1580156115fb573d6000803e3d6000fd5b505050506040513d602081101561161157600080fd5b5051161180156116a457508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561166257600080fd5b505afa158015611676573d6000803e3d6000fd5b505050506040513d602081101561168c57600080fd5b5051600290810b908d900b8161169e57fe5b0760020b155b80156116b557508b60020b8d60020b135b945060008360ff166001901b8f73ffffffffffffffffffffffffffffffffffffffff16635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561171557600080fd5b505afa158015611729573d6000803e3d6000fd5b505050506040513d602081101561173f57600080fd5b5051161180156117d257508d73ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561179057600080fd5b505afa1580156117a4573d6000803e3d6000fd5b505050506040513d60208110156117ba57600080fd5b5051600290810b908e900b816117cc57fe5b0760020b155b80156117e357508b60020b8d60020b125b95508160010b8460010b128061180f57508160010b8460010b14801561180f57508060ff168360ff1611155b1561182557839950829750819850809650611832565b8199508097508398508296505b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff87161b9150505b8560010b8760010b13611969578560010b8760010b14156118a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff858103161c165b6000818c73ffffffffffffffffffffffffffffffffffffffff16635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b1580156118fa57600080fd5b505afa15801561190e573d6000803e3d6000fd5b505050506040513d602081101561192457600080fd5b5051169050611932816119c1565b61ffff16989098019750506001909501947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61185e565b8115611976576001880397505b8215611983576001880397505b505050505050509392505050565b600061199d8383611142565b90503373ffffffffffffffffffffffffffffffffffffffff821614610b8557600080fd5b6000805b8215610b85577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301909216916001016119c5565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112611a2a578081fd5b8135611a3d611a3882611faf565b611f8b565b818152846020838601011115611a51578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b8114610b1257600080fd5b600060a08284031215611a8e578081fd5b60405160a0810181811067ffffffffffffffff82111715611aab57fe5b6040529050808235611abc8161201f565b81526020830135611acc8161201f565b602082015260408381013590820152606083013562ffffff81168114611af157600080fd5b6060820152611b0260808401611b0e565b60808201525092915050565b8035610b128161201f565b805161ffff81168114610b1257600080fd5b60008060408385031215611b3d578182fd5b823567ffffffffffffffff811115611b53578283fd5b611b5f85828601611a1a565b95602094909401359450505050565b60008060408385031215611b80578182fd5b505080516020909101519092909150565b600080600060608486031215611ba5578081fd5b8335925060208401359150604084013567ffffffffffffffff811115611bc9578182fd5b611bd586828701611a1a565b9150509250925092565b600060208284031215611bf0578081fd5b815167ffffffffffffffff811115611c06578182fd5b8201601f81018413611c16578182fd5b8051611c24611a3882611faf565b818152856020838501011115611c38578384fd5b610ce5826020830160208601611fef565b600060a08284031215611c5a578081fd5b611c648383611a7d565b9392505050565b600080600080600080600060e0888a031215611c85578283fd5b8751611c908161201f565b9650611c9e60208901611a6b565b9550611cac60408901611b19565b9450611cba60608901611b19565b9350611cc860808901611b19565b925060a088015160ff81168114611cdd578283fd5b60c08901519092508015158114611cf2578182fd5b8091505092959891949750929550565b600080600060608486031215611d16578081fd5b835192506020840151611d288161201f565b9150611d3660408501611a6b565b90509250925092565b60008151808452611d57816020860160208601611fef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152611e5760a0830184611d3f565b979650505050505050565b600060208252611c646020830184611d3f565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611f0257845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101611ed0565b505084810360408601528651808252908201925081870190845b81811015611f3e57825163ffffffff1685529383019391830191600101611f1c565b5050505060609290920192909252949350505050565b93845273ffffffffffffffffffffffffffffffffffffffff92909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611fa757fe5b604052919050565b600067ffffffffffffffff821115611fc357fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b8381101561200a578181015183820152602001611ff2565b83811115612019576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461204157600080fd5b5056fea164736f6c6343000706000a000000000000000000000000780e96775371e1c4f4cd1524a578b8f1b12ece580000000000000000000000004200000000000000000000000000000000000006", - "nonce": "0x6", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x292818c36fae4db0af323455839cc579f71ffd348a9ecfe5ce00a68cc5bdf6fe", - "transactionType": "CREATE", - "contractName": "TickLens", - "contractAddress": "0xa2705406f5f6deeff977edc4eb52617e06b9e7ff", - "function": null, - "arguments": null, - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x608060405234801561001057600080fd5b50610569806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063351fb47814610030575b600080fd5b61004361003e36600461037c565b610059565b60405161005091906104aa565b60405180910390f35b606060008373ffffffffffffffffffffffffffffffffffffffff16635339c296846040518263ffffffff1660e01b8152600401610096919061051b565b60206040518083038186803b1580156100ae57600080fd5b505afa1580156100c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e69190610492565b90506000805b610100811015610110576001811b831615610108576001909101905b6001016100ec565b5060008573ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561015957600080fd5b505afa15801561016d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019191906103ba565b90508167ffffffffffffffff811180156101aa57600080fd5b506040519080825280602002602001820160405280156101e457816020015b6101d1610328565b8152602001906001900390816101c95790505b50935060005b61010081101561031e576001811b841615610316576040517ff30dba93000000000000000000000000000000000000000000000000000000008152600187900b60020b60081b8201830290600090819073ffffffffffffffffffffffffffffffffffffffff8b169063f30dba9390610266908690600401610529565b6101006040518083038186803b15801561027f57600080fd5b505afa158015610293573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b791906103e2565b5050505050509150915060405180606001604052808460020b815260200182600f0b8152602001836fffffffffffffffffffffffffffffffff168152508887600190039750878151811061030757fe5b60200260200101819052505050505b6001016101ea565b5050505092915050565b604080516060810182526000808252602082018190529181019190915290565b8051801515811461035857600080fd5b919050565b805161035881610537565b805163ffffffff8116811461035857600080fd5b6000806040838503121561038e578182fd5b823561039981610537565b91506020830135600181900b81146103af578182fd5b809150509250929050565b6000602082840312156103cb578081fd5b81518060020b81146103db578182fd5b9392505050565b600080600080600080600080610100898b0312156103fe578384fd5b88516fffffffffffffffffffffffffffffffff8116811461041d578485fd5b80985050602089015180600f0b8114610434578485fd5b80975050604089015195506060890151945060808901518060060b8114610459578485fd5b935061046760a08a0161035d565b925061047560c08a01610368565b915061048360e08a01610348565b90509295985092959890939650565b6000602082840312156104a3578081fd5b5051919050565b602080825282518282018190526000919060409081850190868401855b8281101561050e578151805160020b855286810151600f0b878601528501516fffffffffffffffffffffffffffffffff1685850152606090930192908501906001016104c7565b5091979650505050505050565b60019190910b815260200190565b60029190910b815260200190565b73ffffffffffffffffffffffffffffffffffffffff8116811461055957600080fd5b5056fea164736f6c6343000706000a", - "nonce": "0x7", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4c6469b634c0bf639d5378f34b3921036ebfc8325b2f7ea72035b989baa645c4", + "hash": "0x170028b613a6daf839e60de54b8dcc7e230909a6eed67d3e444324ec063c3d6a", "transactionType": "CREATE2", - "contractName": "NFTDescriptor", - "contractAddress": "0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed", + "contractName": "UERC20SuperchainFactory", + "contractAddress": "0x43414b3556b6dfbb1278670871b11c73c22c93f3", "function": null, "arguments": null, "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "value": "0x0", - "input": "0x0000000000000000000000000000000000000000000000000000000000000000615fdb610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063c49917d71461003a575b600080fd5b61004d610048366004613f06565b610063565b60405161005a9190614648565b60405180910390f35b6060600061007e83610079856101800151610170565b6103d1565b905060006100b2610092856060015161048c565b61009f866080015161048c565b6100ad876101a00151610644565b61065a565b905060006101006100c6866000015161068c565b6100d3876080015161048c565b6100e08860200151610644565b6100ed8960400151610644565b6100fb8a6101800151610170565b610767565b905060006101156101108761079d565b6109d8565b90506101458484848460405160200161013194939291906142c3565b6040516020818303038152906040526109d8565b6040516020016101559190614603565b6040516020818303038152906040529450505050505b919050565b606062ffffff82166101b6575060408051808201909152600281527f3025000000000000000000000000000000000000000000000000000000000000602082015261016b565b816000805b62ffffff8316156102065760ff8116156101d7576001016101f0565b600a62ffffff84160662ffffff166000146101f0576001015b600190910190600a62ffffff84160492506101bb565b61020e613e00565b60006005841061030357600060046102298660ff8716610b5b565b1015610236576001610239565b60005b60ff908116915061024d9085166001610b5b565b610258866005610b5b565b106102845761027f61026e60ff86166001610b5b565b610279876005610b5b565b90610b5b565b610287565b60005b60ff8516608085018190529092506102a6906001906102799085610bb8565b60ff90811660a085015260808401516102cd9183916102c791166001610b5b565b90610bb8565b60ff90811660408501526102f59082906102c7906102ee9088166001610bb8565b8590610bb8565b60ff16602084015250610373565b61030e600585610b5b565b60026080840181905290915061032c90600190610279908490610bb8565b60ff90811660a084015261034e906103479085166002610bb8565b8290610bb8565b60ff1660208301819052610363906002610b5b565b60ff166040830152600160c08301525b6103926103838560ff8616610b5b565b62ffffff891690600a0a610c12565b8252600160e0830152600484116103aa5760006103b5565b6103b5846004610b5b565b60ff1660608301526103c682610c79565b979650505050505050565b6060816103e1846060015161048c565b6103ee856080015161048c565b6104278660e00151156104065786610120015161040d565b8661010001515b8761016001518860c001518960a001518a60e00151610ea5565b6104608760e001511561043f57876101000151610446565b8761012001515b8861016001518960c001518a60a001518b60e00151610ea5565b6040516020016104749594939291906143ea565b60405160208183030381529060405290505b92915050565b6060816000805b82518160ff1610156104f057828160ff16815181106104ae57fe5b6020910101517fff0000000000000000000000000000000000000000000000000000000000000016601160f91b14156104e8576001909101905b600101610493565b5060ff81161561063c5760008160ff1683510167ffffffffffffffff8111801561051957600080fd5b506040519080825280601f01601f191660200182016040528015610544576020820181803683370190505b5090506000805b84518160ff16101561062f57848160ff168151811061056657fe5b6020910101517fff0000000000000000000000000000000000000000000000000000000000000016601160f91b14156105e4577f5c000000000000000000000000000000000000000000000000000000000000008383806001019450815181106105cc57fe5b60200101906001600160f81b031916908160001a9053505b848160ff16815181106105f357fe5b602001015160f81c60f81b83838060010194508151811061061057fe5b60200101906001600160f81b031916908160001a90535060010161054b565b508194505050505061016b565b509192915050565b60606104866001600160a01b0383166014610fcf565b6060838383866040516020016106739493929190614177565b60405160208183030381529060405290505b9392505050565b6060816106b157506040805180820190915260018152600360fc1b602082015261016b565b8160005b81156106c957600101600a820491506106b5565b60008167ffffffffffffffff811180156106e257600080fd5b506040519080825280601f01601f19166020018201604052801561070d576020820181803683370190505b50859350905060001982015b831561075e57600a840660300160f81b8282806001900393508151811061073c57fe5b60200101906001600160f81b031916908160001a905350600a84049350610719565b50949350505050565b606083858484896040516020016107829594939291906144eb565b60405160208183030381529060405290505b95945050505050565b60606000604051806102a001604052806107ba8560200151610644565b81526020016107cc8560400151610644565b8152602001846101a001516001600160a01b031681526020018460600151815260200184608001518152602001610807856101800151610170565b815260200184610100015160020b815260200184610120015160020b815260200184610160015160020b8152602001610850856101000151866101200151876101400151611157565b60000b81526020018460000151815260200161087a85602001516001600160a01b0316608861118e565b815260200161089785604001516001600160a01b0316608861118e565b81526020016108b485602001516001600160a01b0316600061118e565b81526020016108d185604001516001600160a01b0316600061118e565b81526020016109046108f686602001516001600160a01b03166010886000015161119d565b600060ff60106101126111bd565b815260200161093761092986604001516001600160a01b03166010886000015161119d565b600060ff60646101e46111bd565b815260200161095c6108f686602001516001600160a01b03166020886000015161119d565b815260200161098161092986604001516001600160a01b03166020886000015161119d565b81526020016109a66108f686602001516001600160a01b03166030886000015161119d565b81526020016109cb61092986604001516001600160a01b03166030886000015161119d565b9052905061068581611205565b60608151600014156109f9575060408051602081019091526000815261016b565b600060405180606001604052806040815260200161526960409139905060006003845160020181610a2657fe5b04600402905060008160200167ffffffffffffffff81118015610a4857600080fd5b506040519080825280601f01601f191660200182016040528015610a73576020820181803683370190505b509050818152600183018586518101602084015b81831015610adf576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f8116850151825350600101610a87565b600389510660018114610af95760028114610b2557610b4d565b7f3d3d000000000000000000000000000000000000000000000000000000000000600119830152610b4d565b7f3d000000000000000000000000000000000000000000000000000000000000006000198301525b509398975050505050505050565b600082821115610bb2576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610685576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000808211610c68576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381610c7157fe5b049392505050565b60606000826020015160ff1667ffffffffffffffff81118015610c9b57600080fd5b506040519080825280601f01601f191660200182016040528015610cc6576020820181803683370190505b5090508260e0015115610d1c577f250000000000000000000000000000000000000000000000000000000000000081600183510381518110610d0457fe5b60200101906001600160f81b031916908160001a9053505b8260c0015115610d7957600360fc1b81600081518110610d3857fe5b60200101906001600160f81b031916908160001a905350601760f91b81600181518110610d6157fe5b60200101906001600160f81b031916908160001a9053505b608083015160ff165b60a0840151610d959060ff166001610bb8565b811015610dcc57603060f81b828281518110610dad57fe5b60200101906001600160f81b031916908160001a905350600101610d82565b505b825115610486576000836060015160ff16118015610df95750826060015160ff16836040015160ff16145b15610e3c5760408301805160ff600019820181169092528251601760f91b92849216908110610e2457fe5b60200101906001600160f81b031916908160001a9053505b8251610e4e90603090600a9006610bb8565b60f81b818460400180518091906001900360ff1660ff1681525060ff1681518110610e7557fe5b60200101906001600160f81b031916908160001a905350600a8360000181815181610e9c57fe5b04905250610dce565b606084600281900b620d89e71981610eb957fe5b050260020b8660020b1415610f13578115610eef576040518060400160405280600381526020016209a82b60eb1b815250610f0c565b6040518060400160405280600381526020016226a4a760e91b8152505b9050610794565b84600281900b620d89e881610f2457fe5b050260020b8660020b1415610f7a578115610f5a576040518060400160405280600381526020016226a4a760e91b815250610f0c565b5060408051808201909152600381526209a82b60eb1b6020820152610794565b6000610f8587611494565b90508215610fbc57610fb978010000000000000000000000000000000000000000000000006001600160a01b038316610c12565b90505b610fc78186866117e2565b915050610794565b606060008260020260020167ffffffffffffffff81118015610ff057600080fd5b506040519080825280601f01601f19166020018201604052801561101b576020820181803683370190505b509050600360fc1b8160008151811061103057fe5b60200101906001600160f81b031916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061107557fe5b60200101906001600160f81b031916908160001a905350600160028402015b6001811115611103577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106110cc57fe5b1a60f81b8282815181106110dc57fe5b60200101906001600160f81b031916908160001a90535060049490941c9360001901611094565b508315610685576040805162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015290519081900360640190fd5b60008360020b8260020b12156111705750600019610685565b8260020b8260020b131561118657506001610685565b506000610685565b606061068583831c60036119b0565b600060ff826111ac8686611a77565b02816111b457fe5b06949350505050565b60606111fb6111f6846102c76111d3888a610b5b565b6111f06111e0888a610b5b565b6111ea8d8d610b5b565b90611a7e565b90610c12565b61068c565b9695505050505050565b606061121082611ad7565b61122c836000015184602001518560600151866080015161218b565b611243846060015185608001518660a001516124b6565b6112618560c001518660e00151876101000151886101200151612606565b61128161127287610140015161068c565b8760c001518860e00151612959565b6112948761014001518860400151612d8a565b6040516020018087805190602001908083835b602083106112c65780518252601f1990920191602091820191016112a7565b51815160209384036101000a600019018019909216911617905289519190930192890191508083835b6020831061130e5780518252601f1990920191602091820191016112ef565b51815160209384036101000a600019018019909216911617905288519190930192880191508083835b602083106113565780518252601f199092019160209182019101611337565b51815160209384036101000a600019018019909216911617905287519190930192870191508083835b6020831061139e5780518252601f19909201916020918201910161137f565b51815160209384036101000a600019018019909216911617905286519190930192860191508083835b602083106113e65780518252601f1990920191602091820191016113c7565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b6020831061142e5780518252601f19909201916020918201910161140f565b5181516020939093036101000a60001901801990911692169190911790527f3c2f7376673e000000000000000000000000000000000000000000000000000092019182525060408051808303601919018152600690920190529998505050505050505050565b60008060008360020b126114ab578260020b6114b3565b8260020b6000035b9050620d89e881111561150d576040805162461bcd60e51b815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006001821661152157600160801b611533565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611567576ffff97272373d413259a46990580e213a0260801c5b6004821615611586576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156115a5576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156115c4576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156115e3576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611602576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611621576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611641576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611661576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611681576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156116a1576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156116c1576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156116e1576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611701576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611721576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611742576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611762576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611781576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561179e576b048a170391f7dc42444e8fa20260801c5b60008460020b13156117b95780600019816117b557fe5b0490505b6401000000008106156117cd5760016117d0565b60005b60ff16602082901c0192505050919050565b606060006117f1858585612e02565b90506000611809828368010000000000000000612f04565b90506c010000000000000000000000008210801561184a576118438272047bf19673df52e37f2410011d100000000000600160801b612f04565b915061185f565b61185c82620186a0600160801b612f04565b91505b8160005b811561187757600101600a82049150611863565b600019016000806118888684612fb3565b915091508015611899576001909201915b6118a1613e00565b851561190e576118c06118b8602b60ff8716610b5b565b600790610bb8565b60ff9081166020830152600260808301526118e6906001906102c790602b908816610b5b565b60ff90811660a0830152602082015161190191166001610b5b565b60ff166040820152611985565b60098460ff16106119575761192760ff85166004610b5b565b60ff166020820181905260056080830152611943906001610b5b565b60ff1660a082015260046040820152611985565b6006602082015260056040820181905261197c906001906102c79060ff881690610b5b565b60ff1660608201525b82815285151560c0820152600060e08201526119a081610c79565b9c9b505050505050505050505050565b606060008260020267ffffffffffffffff811180156119ce57600080fd5b506040519080825280601f01601f1916602001820160405280156119f9576020820181803683370190505b5080519091505b8015611a6f577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611a3557fe5b1a60f81b826001830381518110611a4857fe5b60200101906001600160f81b031916908160001a90535060049490941c9360001901611a00565b509392505050565b1c60ff1690565b600082611a8d57506000610486565b82820282848281611a9a57fe5b04146106855760405162461bcd60e51b81526004018080602001828103825260218152602001806154886021913960400191505060405180910390fd5b6060611b6c82610160015160405160200180806150426081913960810182805190602001908083835b60208310611b1f5780518252601f199092019160209182019101611b00565b6001836020036101000a038019825116818451168082178552505050505050905001806813979f1e17b9bb339f60b91b8152506009019150506040516020818303038152906040526109d8565b611cd8836101e001518461020001518561018001516040516020018080614b7f6063913960630184805190602001908083835b60208310611bbe5780518252601f199092019160209182019101611b9f565b51815160209384036101000a600019018019909216911617905265272063793d2760d01b919093019081528551600690910192860191508083835b60208310611c185780518252601f199092019160209182019101611bf9565b51815160209384036101000a60001901801990921691161790527f2720723d273132307078272066696c6c3d272300000000000000000000000000919093019081528451601390910192850191508083835b60208310611c895780518252601f199092019160209182019101611c6a565b6001836020036101000a038019825116818451168082178552505050505050905001806813979f1e17b9bb339f60b91b81525060090193505050506040516020818303038152906040526109d8565b611d29846102200151856102400151866101a001516040516020018080614b7f60639139606301848051906020019080838360208310611bbe5780518252601f199092019160209182019101611b9f565b611e48856102600151866102800151876101c001516040516020018080614b7f6063913960630184805190602001908083835b60208310611d7b5780518252601f199092019160209182019101611d5c565b51815160209384036101000a600019018019909216911617905265272063793d2760d01b919093019081528551600690910192860191508083835b60208310611dd55780518252601f199092019160209182019101611db6565b51815160001960209485036101000a019081169019919091161790527f2720723d273130307078272066696c6c3d272300000000000000000000000000939091019283528451601390930192908501915080838360208310611c895780518252601f199092019160209182019101611c6a565b6101608601516040516020018060566148fa8239605601602c6152a982397f3c646566733e0000000000000000000000000000000000000000000000000000602c820152603201604b614ff78239604b0186805190602001908083835b60208310611ec45780518252601f199092019160209182019101611ea5565b6001836020036101000a03801982511681845116808217855250505050505090500180615b2f603e9139603e0185805190602001908083835b60208310611f1c5780518252601f199092019160209182019101611efd565b6001836020036101000a038019825116818451168082178552505050505050905001806150c3603e9139603e0184805190602001908083835b60208310611f745780518252601f199092019160209182019101611f55565b5181516020939093036101000a60001901801990911692169190911790527f22202f3e00000000000000000000000000000000000000000000000000000000920191825250600401603b6147f28239603b0183805190602001908083835b60208310611ff15780518252601f199092019160209182019101611fd2565b6001836020036101000a03801982511681845116808217855250505050505090500180614c3f60999139609901607f6156e08239607f016088615aa782396088016041614cd88239604101605d615c678239605d01607261578c8239607201604961475b823960490160be614f39823960be016071614a0b8239607101607561562382396075016066614d19823960660160a46152d5823960a4016085615b6d82397f3c6720636c69702d706174683d2275726c2823636f726e65727329223e00000060858201527f3c726563742066696c6c3d22000000000000000000000000000000000000000060a2820152825160ae9091019060208401908083835b6020831061210f5780518252601f1990920191602091820191016120f0565b6001836020036101000a03801982511681845116808217855250505050505090500180614d7f60319139603101604e6147a48239604e01605d614be28239605d0160416152288239604101605261510182396052016075615bf28239607501955050505050506040516020818303038152906040529050919050565b60608382858488878a896040516020018080615d4a60259139602501607d614ebc8239607d0189805190602001908083835b602083106121dc5780518252601f1990920191602091820191016121bd565b51815160209384036101000a600019018019909216911617905264010714051160dd1b919093019081528a516005909101928b0191508083835b602083106122355780518252601f199092019160209182019101612216565b6001836020036101000a03801982511681845116808217855250505050505090500180614db0607991396079016086615cc4823960860187805190602001908083835b602083106122975780518252601f199092019160209182019101612278565b51815160209384036101000a600019018019909216911617905264010714051160dd1b919093019081528851600590910192890191508083835b602083106122f05780518252601f1990920191602091820191016122d1565b6001836020036101000a0380198251168184511680821785525050505050509050018061498660859139608501607b6159158239607b0185805190602001908083835b602083106123525780518252601f199092019160209182019101612333565b51815160209384036101000a600019018019909216911617905264010714051160dd1b919093019081528651600590910192870191508083835b602083106123ab5780518252601f19909201916020918201910161238c565b6001836020036101000a03801982511681845116808217855250505050505090500180614ad0605d9139605d0160a3615580823960a30183805190602001908083835b6020831061240d5780518252601f1990920191602091820191016123ee565b51815160209384036101000a600019018019909216911617905264010714051160dd1b919093019081528451600590910192850191508083835b602083106124665780518252601f199092019160209182019101612447565b6001836020036101000a038019825116818451168082178552505050505050905001806146d0608b9139608b01985050505050505050506040516020818303038152906040529050949350505050565b6060838383604051602001808061482d60cd913960cd0184805190602001908083835b602083106124f85780518252601f1990920191602091820191016124d9565b6001836020036101000a03801982511681845116808217855250505050505090500180602f60f81b81525060010183805190602001908083835b602083106125515780518252601f199092019160209182019101612532565b6001836020036101000a03801982511681845116808217855250505050505090500180615ef36077913960770182805190602001908083835b602083106125a95780518252601f19909201916020918201910161258a565b5181516020939093036101000a60001901801990911692169190911790526a1e17ba32bc3a1f1e17b39f60a91b920191825250600b016073615d938239607301935050505060405160208183030381529060405290509392505050565b606060008260000b600114612698578260000b6000191461265c576040518060400160405280600581526020017f236e6f6e65000000000000000000000000000000000000000000000000000000815250612693565b6040518060400160405280600a81526020017f23666164652d646f776e000000000000000000000000000000000000000000008152505b6126cf565b6040518060400160405280600881526020017f23666164652d75700000000000000000000000000000000000000000000000008152505b905060006126de878787613024565b9050818183836126ed88613272565b60405160200180807f3c67206d61736b3d2275726c2800000000000000000000000000000000000000815250600d0186805190602001908083835b602083106127475780518252601f199092019160209182019101612728565b5181516020939093036101000a600019018019909116921691909117905261149160f11b9201918252506002016077615379823960770185805190602001908083835b602083106127a95780518252601f19909201916020918201910161278a565b6001836020036101000a03801982511681845116808217855250505050505090500180614a7c60549139605401807f3c2f673e3c67206d61736b3d2275726c2800000000000000000000000000000081525060110184805190602001908083835b602083106128295780518252601f19909201916020918201910161280a565b5181516020939093036101000a600019018019909116921691909117905261149160f11b92019182525060020160296153f0823960290160456154438239604501807f3c7061746820643d22000000000000000000000000000000000000000000000081525060090183805190602001908083835b602083106128bd5780518252601f19909201916020918201910161289e565b6001836020036101000a038019825116818451168082178552505050505050905001806156986048913960480182805190602001908083835b602083106129155780518252601f1990920191602091820191016128f6565b6001836020036101000a0380198251168184511680821785525050505050509050019550505050505060405160208183030381529060405292505050949350505050565b6060600061296684613746565b9050600061297384613746565b865183518251929350600490910191600a91820191016000806129968a8a613850565b915091506129a98560040160070261068c565b8b6129b98660040160070261068c565b896129c98760040160070261068c565b8a8787604051602001808061575f602d9139602d01806c1e3932b1ba103bb4b23a341e9160991b815250600d0189805190602001908083835b60208310612a215780518252601f199092019160209182019101612a02565b6001836020036101000a03801982511681845116808217855250505050505090500180615153603d9139603d01608d615e068239608d0188805190602001908083835b60208310612a835780518252601f199092019160209182019101612a64565b5181516020939093036101000a60001901801990911692169190911790526a1e17ba32bc3a1f1e17b39f60a91b920191825250600b01602d615fa28239602d01806c1e3932b1ba103bb4b23a341e9160991b815250600d0187805190602001908083835b60208310612b065780518252601f199092019160209182019101612ae7565b6001836020036101000a03801982511681845116808217855250505050505090500180615153603d9139603d016093614e29823960930186805190602001908083835b60208310612b685780518252601f199092019160209182019101612b49565b5181516020939093036101000a60001901801990911692169190911790526a1e17ba32bc3a1f1e17b39f60a91b920191825250600b01602d614b2d8239602d01806c1e3932b1ba103bb4b23a341e9160991b815250600d0185805190602001908083835b60208310612beb5780518252601f199092019160209182019101612bcc565b6001836020036101000a03801982511681845116808217855250505050505090500180615153603d9139603d016093615990823960930184805190602001908083835b60208310612c4d5780518252601f199092019160209182019101612c2e565b6001836020036101000a03801982511681845116808217855250505050505090500180615f6a603891396038016060615e938239606001606461551c82396064016025614b5a823960250183805190602001908083835b60208310612cc35780518252601f199092019160209182019101612ca4565b51815160209384036101000a60001901801990921691161790527f70782c2000000000000000000000000000000000000000000000000000000000919093019081528451600490910192850191508083835b60208310612d345780518252601f199092019160209182019101612d15565b6001836020036101000a0380198251168184511680821785525050505050509050018061495060369139603601985050505050505050506040516020818303038152906040529750505050505050509392505050565b6060612d968383613c81565b15612dec5760405160200180608d6158888239608d0160736154a9823960730160716151b78239607101608a6157fe8239608a016084615a23823960840190506040516020818303038152906040529050610486565b5060408051602081019091526000815292915050565b600080612e1d612e1860ff868116908616613ce4565b613d49565b9050600081118015612e30575060128111155b15612ef1578260ff168460ff161115612e9a57612e64612e51826002610c12565b6001600160a01b03871690600a0a611a7e565b91506002810660011415612e9557612e92827003298b075b4b6a5240945790619b37fd4a600160801b612f04565b91505b612eec565b612ebb612ea8826002610c12565b6001600160a01b03871690600a0a610c12565b91506002810660011415612eec57612ee982600160801b7003298b075b4b6a5240945790619b37fd4a612f04565b91505b611a6f565b50506001600160a01b0390921692915050565b6000808060001985870986860292508281109083900303905080612f3a5760008411612f2f57600080fd5b508290049050610685565b808411612f4657600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600080600060058460ff161115612fdb57612fd88560ff600419870116600a0a610c12565b94505b60006004600a8706119050612ff186600a610c12565b95508015613000578560010195505b85620186a0141561301657600a86049550600191505b5084925090505b9250929050565b606060008260020b85850360020b8161303957fe5b05905060048160020b13613084576040518060400160405280601a81526020017f4d312031433431203431203130352031303520313435203134350000000000008152509150611a6f565b60088160020b136130cc576040518060400160405280601981526020017f4d312031433333203439203937203131332031343520313435000000000000008152509150611a6f565b60108160020b13613114576040518060400160405280601981526020017f4d312031433333203537203839203131332031343520313435000000000000008152509150611a6f565b60208160020b1361315c576040518060400160405280601981526020017f4d312031433235203635203831203132312031343520313435000000000000008152509150611a6f565b60408160020b136131a4576040518060400160405280601981526020017f4d312031433137203733203733203132392031343520313435000000000000008152509150611a6f565b60808160020b136131ec576040518060400160405280601881526020017f4d312031433920383120363520313337203134352031343500000000000000008152509150611a6f565b6101008160020b13613235576040518060400160405280601a81526020017f4d31203143312038392035372e352031343520313435203134350000000000008152509150611a6f565b505060408051808201909152601881527f4d3120314331203937203439203134352031343520313435000000000000000060208201529392505050565b604080518082018252600281527f37330000000000000000000000000000000000000000000000000000000000006020808301919091528251808401845260038082527f313930000000000000000000000000000000000000000000000000000000000082840152845180860186528181527f32313700000000000000000000000000000000000000000000000000000000008185015285518087019096529085527f3333340000000000000000000000000000000000000000000000000000000000928501929092526060939091906001600087900b148061335957508560000b600019145b15613550578560000b600019146133705781613372565b835b8660000b600019146133845781613386565b835b8760000b60001914613398578361339a565b855b8860000b600019146133ac57836133ae565b855b60405160200180806b1e31b4b931b6329031bc1e9160a11b815250600c0185805190602001908083835b602083106133f75780518252601f1990920191602091820191016133d8565b51815160209384036101000a600019018019909216911617905267383c111031bc9e9160c11b919093019081528651600890910192870191508083835b602083106134535780518252601f199092019160209182019101613434565b6001836020036101000a038019825116818451168082178552505050505050905001806151906027913960270183805190602001908083835b602083106134ab5780518252601f19909201916020918201910161348c565b51815160209384036101000a600019018019909216911617905267383c111031bc9e9160c11b919093019081528451600890910192850191508083835b602083106135075780518252601f1990920191602091820191016134e8565b6001836020036101000a03801982511681845116808217855250505050505090500180615419602a9139602a01945050505050604051602081830303815290604052945061373d565b8383838360405160200180806b1e31b4b931b6329031bc1e9160a11b815250600c0185805190602001908083835b6020831061359d5780518252601f19909201916020918201910161357e565b51815160209384036101000a600019018019909216911617905267383c111031bc9e9160c11b919093019081528651600890910192870191508083835b602083106135f95780518252601f1990920191602091820191016135da565b51815160209384036101000a60001901801990921691161790527f70782220723d22347078222066696c6c3d22776869746522202f3e0000000000919093019081526b1e31b4b931b6329031bc1e9160a11b601b8201528551602790910192860191508083835b6020831061367f5780518252601f199092019160209182019101613660565b51815160209384036101000a600019018019909216911617905267383c111031bc9e9160c11b919093019081528451600890910192850191508083835b602083106136db5780518252601f1990920191602091820191016136bc565b6001836020036101000a038019825116818451168082178552505050505050905001807f70782220723d22347078222066696c6c3d22776869746522202f3e0000000000815250601b0194505050505060405160208183030381529060405294505b50505050919050565b6060600060405180602001604052806000815250905060008360020b121561378c5782600019029250604051806040016040528060018152602001602d60f81b81525090505b806137998460020b61068c565b6040516020018083805190602001908083835b602083106137cb5780518252601f1990920191602091820191016137ac565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b602083106138135780518252601f1990920191602091820191016137f4565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052915050919050565b60608060006002858501810b0590506201e847198160020b12156138c857604051806040016040528060018152602001600760fb1b8152506040518060400160405280600181526020017f3700000000000000000000000000000000000000000000000000000000000000815250925092505061301d565b620124f7198160020b121561393157604051806040016040528060018152602001600760fb1b8152506040518060400160405280600481526020017f31302e3500000000000000000000000000000000000000000000000000000000815250925092505061301d565b6161a7198160020b121561399957604051806040016040528060018152602001600760fb1b8152506040518060400160405280600581526020017f31342e3235000000000000000000000000000000000000000000000000000000815250925092505061301d565b611387198160020b1215613a02576040518060400160405280600281526020017f313000000000000000000000000000000000000000000000000000000000000081525060405180604001604052806002815260200161062760f31b815250925092505061301d565b60008160020b1215613a69576040518060400160405280600281526020017f313100000000000000000000000000000000000000000000000000000000000081525060405180604001604052806002815260200161323160f01b815250925092505061301d565b6113888160020b1215613aec576040518060400160405280600281526020017f31330000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f3233000000000000000000000000000000000000000000000000000000000000815250925092505061301d565b6161a88160020b1215613b6f576040518060400160405280600281526020017f31350000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600281526020017f3235000000000000000000000000000000000000000000000000000000000000815250925092505061301d565b620124f88160020b1215613bd85760405180604001604052806002815260200161062760f31b8152506040518060400160405280600281526020017f3236000000000000000000000000000000000000000000000000000000000000815250925092505061301d565b6201e8488160020b1215613c265760405180604001604052806002815260200161323160f01b81525060405180604001604052806002815260200161323760f01b815250925092505061301d565b6040518060400160405280600281526020017f323400000000000000000000000000000000000000000000000000000000000081525060405180604001604052806002815260200161323760f01b815250925092505061301d565b6040805160208082018590526bffffffffffffffffffffffff19606085901b16828401528251603481840301815260549092019092528051910120600090613cc884613d60565b60020260010160ff1660001981613cdb57fe5b04119392505050565b6000818303818312801590613cf95750838113155b80613d0e5750600083128015613d0e57508381135b6106855760405162461bcd60e51b8152600401808060200182810382526024815260200180615d6f6024913960400191505060405180910390fd5b600080821215613d5c5781600003610486565b5090565b6000808211613d6e57600080fd5b600160801b8210613d8157608091821c91015b680100000000000000008210613d9957604091821c91015b6401000000008210613dad57602091821c91015b620100008210613dbf57601091821c91015b6101008210613dd057600891821c91015b60108210613de057600491821c91015b60048210613df057600291821c91015b6002821061016b57600101919050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b80356001600160a01b038116811461016b57600080fd5b8035801515811461016b57600080fd5b8035600281900b811461016b57600080fd5b600082601f830112613e8d578081fd5b813567ffffffffffffffff811115613ea157fe5b613eb4601f8201601f191660200161467b565b818152846020838601011115613ec8578283fd5b816020850160208301379081016020019190915292915050565b803562ffffff8116811461016b57600080fd5b803560ff8116811461016b57600080fd5b600060208284031215613f17578081fd5b813567ffffffffffffffff80821115613f2e578283fd5b81840191506101c0808387031215613f44578384fd5b613f4d8161467b565b905082358152613f5f60208401613e44565b6020820152613f7060408401613e44565b6040820152606083013582811115613f86578485fd5b613f9287828601613e7d565b606083015250608083013582811115613fa9578485fd5b613fb587828601613e7d565b608083015250613fc760a08401613ef5565b60a0820152613fd860c08401613ef5565b60c0820152613fe960e08401613e5b565b60e08201526101009150613ffe828401613e6b565b828201526101209150614012828401613e6b565b828201526101409150614026828401613e6b565b82820152610160915061403a828401613e6b565b82820152610180915061404e828401613ee2565b828201526101a09150614062828401613e44565b91810191909152949350505050565b6000815161408381856020860161469f565b9290920192915050565b7fe29aa0efb88f20444953434c41494d45523a204475652064696c6967656e636581527f20697320696d7065726174697665207768656e20617373657373696e6720746860208201527f6973204e46542e204d616b65207375726520746f6b656e20616464726573736560408201527f73206d617463682074686520657870656374656420746f6b656e732c2061732060608201527f746f6b656e2073796d626f6c73206d617920626520696d6974617465642e00006080820152609e0190565b7f5c6e5c6e00000000000000000000000000000000000000000000000000000000815260040190565b60007f54686973204e465420726570726573656e74732061206c69717569646974792082527f706f736974696f6e20696e206120556e69737761702056332000000000000000602083015285516141d5816039850160208a0161469f565b602d60f81b60399184019182015285516141f681603a840160208a0161469f565b7f20706f6f6c2e2000000000000000000000000000000000000000000000000000603a92909101918201527f546865206f776e6572206f662074686973204e46542063616e206d6f6469667960418201527f206f722072656465656d2074686520706f736974696f6e2e5c6e00000000000060618201527f5c6e506f6f6c20416464726573733a2000000000000000000000000000000000607b82015284516142a681608b84016020890161469f565b612e3760f11b608b92909101918201526103c6608d820185614071565b60007f7b226e616d65223a220000000000000000000000000000000000000000000000825285516142fb816009850160208a0161469f565b7f222c20226465736372697074696f6e223a220000000000000000000000000000600991840191820152855161433881601b840160208a0161469f565b855191019061434e81601b84016020890161469f565b7f222c2022696d616765223a202200000000000000000000000000000000000000601b92909101918201527f646174613a696d6167652f7376672b786d6c3b6261736536342c000000000000602882015283516143b281604284016020880161469f565b7f227d000000000000000000000000000000000000000000000000000000000000604292909101918201526044019695505050505050565b60007f556e6973776170202d20000000000000000000000000000000000000000000008252865161442281600a850160208b0161469f565b80830190507f202d20000000000000000000000000000000000000000000000000000000000080600a830152875161446181600d850160208c0161469f565b602f60f81b600d9390910192830152865161448381600e850160208b0161469f565b600e920191820152845161449e81601184016020890161469f565b7f3c3e0000000000000000000000000000000000000000000000000000000000006011929091019182015283516144dc81601384016020880161469f565b01601301979650505050505050565b60007f20416464726573733a2000000000000000000000000000000000000000000000808352875161452481600a860160208c0161469f565b612e3760f11b600a91850191820152875161454681600c840160208c0161469f565b01600c810191909152855190614563826016830160208a0161469f565b8181019150507f5c6e46656520546965723a200000000000000000000000000000000000000000601682015284516145a281602284016020890161469f565b7f5c6e546f6b656e2049443a2000000000000000000000000000000000000000006022929091019182015283516145e081602e84016020880161469f565b6145f66145f1602e8385010161414e565b61408d565b9998505050505050505050565b60007f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c0000008252825161463b81601d85016020870161469f565b91909101601d0192915050565b600060208252825180602084015261466781604085016020870161469f565b601f01601f19169190910160400192915050565b60405181810167ffffffffffffffff8111828210171561469757fe5b604052919050565b60005b838110156146ba5781810151838201526020016146a2565b838111156146c9576000848401525b5050505056fe203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d223330732220726570656174436f756e743d22696e646566696e69746522202f3e3c2f74657874506174683e3c2f746578743e3c73746f70206f66667365743d222e39222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223022202f3e3c2f6c696e6561724772616469656e743e3c72656374207374796c653d2266696c7465723a2075726c28236631292220783d223070782220793d22307078222077696474683d22323930707822206865696768743d22353030707822202f3e3c6665496d61676520726573756c743d2270332220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c3c67206d61736b3d2275726c2823666164652d73796d626f6c29223e3c726563742066696c6c3d226e6f6e652220783d223070782220793d22307078222077696474683d22323930707822206865696768743d22323030707822202f3e203c7465787420793d22373070782220783d2233327078222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d7765696768743d223230302220666f6e742d73697a653d2233367078223e3c7376672077696474683d2232393022206865696768743d22353030222076696577426f783d2230203020323930203530302220786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f7376672270782c2030707829222063783d22307078222063793d223070782220723d22347078222066696c6c3d227768697465222f3e3c2f673e203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d223330732220726570656174436f756e743d22696e646566696e69746522202f3e203c2f74657874506174683e3c6d61736b2069643d22666164652d757022206d61736b436f6e74656e74556e6974733d226f626a656374426f756e64696e67426f78223e3c726563742077696474683d223122206865696768743d2231222066696c6c3d2275726c2823677261642d75702922202f3e3c2f6d61736b3e22207374726f6b653d227267626128302c302c302c302e332922207374726f6b652d77696474683d2233327078222066696c6c3d226e6f6e6522207374726f6b652d6c696e656361703d22726f756e6422202f3e203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d2233307322203c67207374796c653d227472616e73666f726d3a7472616e736c61746528323970782c20343434707829223e3c636972636c65207374796c653d227472616e73666f726d3a7472616e736c6174653364283c7376672077696474683d2732393027206865696768743d27353030272076696577426f783d2730203020323930203530302720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f737667273e3c636972636c652063783d27203c67207374796c653d2266696c7465723a75726c2823746f702d726567696f6e2d626c7572293b207472616e73666f726d3a7363616c6528312e35293b207472616e73666f726d2d6f726967696e3a63656e74657220746f703b223e22202f3e3c6665426c656e64206d6f64653d226f7665726c61792220696e3d2270302220696e323d22703122202f3e3c6665426c656e64206d6f64653d226578636c7573696f6e2220696e323d22703222202f3e3c6665426c656e64206d6f64653d226f7665726c61792220696e323d2270332220726573756c743d22626c656e644f757422202f3e3c6665476175737369616e426c7572203c706174682069643d226d696e696d61702220643d224d3233342034343443323334203435372e393439203234322e323120343633203235332034363322202f3e3c6d61736b2069643d226e6f6e6522206d61736b436f6e74656e74556e6974733d226f626a656374426f756e64696e67426f78223e3c726563742077696474683d223122206865696768743d2231222066696c6c3d22776869746522202f3e3c2f6d61736b3e2220783d223070782220793d22307078222077696474683d22323930707822206865696768743d22353030707822202f3e203c616e696d6174652061646469746976653d2273756d22206174747269627574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f3d22313030252220626567696e3d22307322206475723d223330732220726570656174436f756e743d22696e646566696e69746522202f3e3c7465787420783d22313270782220793d22313770782220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d2231327078222066696c6c3d227768697465223e3c747370616e2066696c6c3d2272676261283235352c3235352c3235352c302e3629223e4d696e205469636b3a203c2f747370616e3e3c74657874506174682073746172744f66667365743d222d31303025222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782220786c696e6b3a687265663d2223746578742d706174682d61223e3c6c696e6561724772616469656e742069643d22677261642d646f776e222078313d2230222078323d2231222079313d2230222079323d2231223e3c73746f70206f66667365743d22302e30222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223122202f3e3c73746f70206f66667365743d22302e39222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223022202f3e3c2f6c696e6561724772616469656e743e3c66696c7465722069643d226631223e3c6665496d61676520726573756c743d2270302220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c3c7376672077696474683d2732393027206865696768743d27353030272076696577426f783d2730203020323930203530302720786d6c6e733d27687474703a2f2f7777772e77332e6f72672f323030302f737667273e3c726563742077696474683d27323930707827206865696768743d273530307078272066696c6c3d2723222f3e3c6665496d61676520726573756c743d2270322220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c3c656c6c697073652063783d22353025222063793d22307078222072783d223138307078222072793d223132307078222066696c6c3d222330303022206f7061636974793d22302e383522202f3e3c2f673e707822206865696768743d2232367078222072783d22387078222072793d22387078222066696c6c3d227267626128302c302c302c302e362922202f3e70782220723d22347078222066696c6c3d22776869746522202f3e3c636972636c652063783d2231312e333437384c32342031324c31342e343334312031322e363532324c32322e333932332031384c31332e373831392031332e373831394c31382032322e333932334c31322e363532322031342e343334314c31322032344c31312e333437382031342e343334314c362032322e33393c726563742066696c6c3d226e6f6e652220783d223070782220793d22307078222077696474683d22323930707822206865696768743d22353030707822202f3e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f20786d6c6e733a786c696e6b3d27687474703a2f2f7777772e77332e6f72672f313939392f786c696e6b273e3c6c696e6561724772616469656e742069643d22677261642d73796d626f6c223e3c73746f70206f66667365743d22302e37222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223122202f3e3c73746f70206f66667365743d222e3935222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223022202f3e3c2f6c696e6561724772616469656e743e207374796c653d227472616e73666f726d3a7472616e736c61746528373270782c313839707829223e3c7265637420783d222d313670782220793d222d31367078222077696474683d22313830707822206865696768743d223138307078222066696c6c3d226e6f6e6522202f3e3c7061746820643d22207374796c653d227472616e73666f726d3a7472616e736c61746528373270782c313839707829223e70782220723d2232347078222066696c6c3d226e6f6e6522207374726f6b653d22776869746522202f3e3c7265637420783d222d313670782220793d222d31367078222077696474683d22313830707822206865696768743d223138307078222066696c6c3d226e6f6e6522202f3e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f773c673e3c70617468207374796c653d227472616e73666f726d3a7472616e736c617465283670782c367078292220643d224d313220304c31322e3635323220392e35363538374c313820312e363037374c31332e373831392031302e323138314c32322e3339323320364c31342e34333431203c70617468207374726f6b652d6c696e656361703d22726f756e642220643d224d38203943382e30303030342032322e393439342031362e32303939203238203237203238222066696c6c3d226e6f6e6522207374726f6b653d22776869746522202f3e20726570656174436f756e743d22696e646566696e69746522202f3e3c2f74657874506174683e3c74657874506174682073746172744f66667365743d222d353025222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782220786c696e6b3a687265663d2223746578742d706174682d61223e3c6d61736b2069643d22666164652d646f776e22206d61736b436f6e74656e74556e6974733d226f626a656374426f756e64696e67426f78223e3c726563742077696474683d223122206865696768743d2231222066696c6c3d2275726c2823677261642d646f776e2922202f3e3c2f6d61736b3e22207374726f6b653d2272676261283235352c3235352c3235352c3129222066696c6c3d226e6f6e6522207374726f6b652d6c696e656361703d22726f756e6422202f3e3c2f673e696e3d22626c656e644f75742220737464446576696174696f6e3d22343222202f3e3c2f66696c7465723e203c636c6970506174682069643d22636f726e657273223e3c726563742077696474683d2232393022206865696768743d22353030222072783d223432222072793d22343222202f3e3c2f636c6970506174683e203c67207374796c653d227472616e73666f726d3a7472616e736c61746528323970782c20333834707829223e3c6c696e6561724772616469656e742069643d22677261642d7570222078313d2231222078323d2230222079313d2231222079323d2230223e3c73746f70206f66667365743d22302e30222073746f702d636f6c6f723d227768697465222073746f702d6f7061636974793d223122202f3e32334c31302e323138312031332e373831394c312e363037372031384c392e35363538372031322e363532324c302031324c392e35363538372031312e333437384c312e3630373720364c31302e323138312031302e323138314c3620312e363037374c31312e3334373820392e35363538374c313220305a222066696c6c3d22776869746522202f3e3c67207374796c653d227472616e73666f726d3a7472616e736c6174652832323670782c20333932707829223e3c726563742077696474683d223336707822206865696768743d2233367078222072783d22387078222072793d22387078222066696c6c3d226e6f6e6522207374726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e3c74657874506174682073746172744f66667365743d22353025222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782220786c696e6b3a687265663d2223746578742d706174682d61223e3c7465787420783d22313270782220793d22313770782220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d2231327078222066696c6c3d227768697465223e3c747370616e2066696c6c3d2272676261283235352c3235352c3235352c302e3629223e4d6178205469636b3a203c2f747370616e3e3c616e696d6174655472616e73666f726d206174747269627574654e616d653d227472616e73666f726d2220747970653d22726f74617465222066726f6d3d22302031382031382220746f3d2233363020313820313822206475723d223130732220726570656174436f756e743d22696e646566696e697465222f3e3c2f673e3c2f673e3c706174682069643d22746578742d706174682d612220643d224d34302031322048323530204132382032382030203020312032373820343020563436302041323820323820302030203120323530203438382048343020413238203238203020302031203132203436302056343020413238203238203020302031203430203132207a22202f3e222f3e3c6665496d61676520726573756c743d2270312220786c696e6b3a687265663d22646174613a696d6167652f7376672b786d6c3b6261736536342c3c6d61736b2069643d22666164652d73796d626f6c22206d61736b436f6e74656e74556e6974733d227573657253706163654f6e557365223e3c726563742077696474683d22323930707822206865696768743d223230307078222066696c6c3d2275726c2823677261642d73796d626f6c2922202f3e3c2f6d61736b3e3c2f646566733e3c7265637420783d22302220793d2230222077696474683d2232393022206865696768743d22353030222072783d223432222072793d223432222066696c6c3d227267626128302c302c302c302922207374726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e3c2f673e3c66696c7465722069643d22746f702d726567696f6e2d626c7572223e3c6665476175737369616e426c757220696e3d22536f75726365477261706869632220737464446576696174696f6e3d22323422202f3e3c2f66696c7465723e3c2f74657874506174683e203c74657874506174682073746172744f66667365743d223025222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782220786c696e6b3a687265663d2223746578742d706174682d61223e3c7465787420746578742d72656e646572696e673d226f7074696d697a655370656564223e5369676e6564536166654d6174683a207375627472616374696f6e206f766572666c6f773c7265637420783d2231362220793d223136222077696474683d2232353822206865696768743d22343638222072783d223236222072793d223236222066696c6c3d227267626128302c302c302c302922207374726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e3c7465787420783d22313270782220793d22313770782220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d2231327078222066696c6c3d227768697465223e3c747370616e2066696c6c3d2272676261283235352c3235352c3235352c302e3629223e49443a203c2f747370616e3e3c726563742077696474683d223336707822206865696768743d2233367078222072783d22387078222072793d22387078222066696c6c3d226e6f6e6522207374726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e3c2f746578743e3c7465787420793d2231313570782220783d2233327078222066696c6c3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d7765696768743d223230302220666f6e742d73697a653d2233367078223e3c2f746578743e3c2f673e3c67207374796c653d227472616e73666f726d3a7472616e736c6174652832323670782c20343333707829223e203c67207374796c653d227472616e73666f726d3a7472616e736c61746528323970782c20343134707829223ea164736f6c6343000706000a", - "nonce": "0x8", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x4e51427044c31aa31d8283c69ab97d63d211cdd66924de4de9e14a9692222f91", - "transactionType": "CREATE", - "contractName": null, - "contractAddress": "0x420f4be1fc1710f7a1fbfdcaf5e29deaa9da446e", - "function": null, - "arguments": null, - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x60c060405234801561001057600080fd5b5060405161158038038061158083398101604081905261002f9161004a565b60609190911b6001600160601b03191660805260a052610082565b6000806040838503121561005c578182fd5b82516001600160a01b0381168114610072578283fd5b6020939093015192949293505050565b60805160601c60a0516114bf6100c16000398061028f52806102c35280610377525080610107528061014c528061061a528061066e52506114bf6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063a18246e211610050578063a18246e2146100d5578063b7af3cdc146100dd578063e9dc6375146100f257610072565b80634aa4a4fc146100775780637e5af771146100955780639d7b0ea8146100b5575b600080fd5b61007f610105565b60405161008c9190611311565b60405180910390f35b6100a86100a3366004611017565b610129565b60405161008c9190611325565b6100c86100c3366004611057565b610148565b60405161008c9190611330565b6100c861028d565b6100e56102b1565b60405161008c9190611339565b6100e5610100366004611057565b6103d7565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006101358383610148565b61013f8584610148565b13949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316141561018d5750606319610287565b8160011415610283576001600160a01b03831673a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4814156101c4575061012c610287565b6001600160a01b03831673dac17f958d2ee523a2206206994597c13d831ec714156101f1575060c8610287565b6001600160a01b038316736b175474e89094c44da98b954eedeac495271d0f141561021e57506064610287565b6001600160a01b038316738daebade922df735c38c80c7ebd708af50815faa141561024c575060c719610287565b6001600160a01b038316732260fac5e5542a773aa44fbcfedf7c193bc2c599141561027b575061012b19610287565b506000610287565b5060005b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b606060005b60208110801561031657507f000000000000000000000000000000000000000000000000000000000000000081602081106102ed57fe5b1a60f81b7fff000000000000000000000000000000000000000000000000000000000000001615155b15610323576001016102b6565b60008167ffffffffffffffff8111801561033c57600080fd5b506040519080825280601f01601f191660200182016040528015610367576020820181803683370190505b50905060005b828110156103d0577f000000000000000000000000000000000000000000000000000000000000000081602081106103a157fe5b1a60f81b8282815181106103b157fe5b60200101906001600160f81b031916908160001a90535060010161036d565b5091505090565b60606000806000806000876001600160a01b03166399fbab88886040518263ffffffff1660e01b815260040161040d9190611330565b6101806040518083038186803b15801561042657600080fd5b505afa15801561043a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045e91906111dc565b5050505050965096509650965096505050600061051c896001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156104ad57600080fd5b505afa1580156104c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104e59190610ff4565b6040518060600160405280896001600160a01b03168152602001886001600160a01b031681526020018762ffffff168152506108e7565b9050600061052d87876100a36109e3565b90506000811561053d578761053f565b865b90506000821561054f5787610551565b885b90506000846001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561058e57600080fd5b505afa1580156105a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c69190611133565b5050505050915050732e9d45bb7b30549f5216813ada9a6b7982c5b3ed63c49917d7604051806101c001604052808f8152602001866001600160a01b03168152602001856001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b03161461065f5761065a876109e7565b610667565b6106676102b1565b81526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b0316146106b3576106ae866109e7565b6106bb565b6106bb6102b1565b8152602001866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156106f957600080fd5b505afa15801561070d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073191906111c2565b60ff168152602001856001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561077257600080fd5b505afa158015610786573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107aa91906111c2565b60ff16815260200187151581526020018a60020b81526020018960020b81526020018460020b8152602001886001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561080e57600080fd5b505afa158015610822573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108469190611082565b60020b81526020018b62ffffff168152602001886001600160a01b03168152506040518263ffffffff1660e01b8152600401610882919061134c565b60006040518083038186803b15801561089a57600080fd5b505af41580156108ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526108d6919081019061109c565b9d9c50505050505050505050505050565b600081602001516001600160a01b031682600001516001600160a01b03161061090f57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b4690565b60606000610a15837f95d89b4100000000000000000000000000000000000000000000000000000000610a3a565b9050805160001415610a3257610a2a83610c8f565b915050610a35565b90505b919050565b60408051600481526024810182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000085161781529151815160609360009384936001600160a01b03891693919290918291908083835b60208310610ad35780518252601f199092019160209182019101610ab4565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610b33576040519150601f19603f3d011682016040523d82523d6000602084013e610b38565b606091505b5091509150811580610b4957508051155b15610b67576040518060200160405280600081525092505050610287565b805160201415610b9f576000818060200190516020811015610b8857600080fd5b50519050610b9581610c9c565b9350505050610287565b604081511115610c7757808060200190516020811015610bbe57600080fd5b8101908080516040519392919084640100000000821115610bde57600080fd5b908301906020820185811115610bf357600080fd5b8251640100000000811182820188101715610c0d57600080fd5b82525081516020918201929091019080838360005b83811015610c3a578181015183820152602001610c22565b50505050905090810190601f168015610c675780820380516001836020036101000a031916815260200191505b5060405250505092505050610287565b50506040805160208101909152600081529392505050565b6060610a32826006610ddc565b604080516020808252818301909252606091600091906020820181803683370190505090506000805b6020811015610d3e576000858260208110610cdc57fe5b1a60f81b90507fff00000000000000000000000000000000000000000000000000000000000000811615610d355780848481518110610d1757fe5b60200101906001600160f81b031916908160001a9053506001909201915b50600101610cc5565b5060008167ffffffffffffffff81118015610d5857600080fd5b506040519080825280601f01601f191660200182016040528015610d83576020820181803683370190505b50905060005b82811015610dd357838181518110610d9d57fe5b602001015160f81c60f81b828281518110610db457fe5b60200101906001600160f81b031916908160001a905350600101610d89565b50949350505050565b606060028206158015610def5750600082115b8015610dfc575060288211155b610e6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f41646472657373537472696e675574696c3a20494e56414c49445f4c454e0000604482015290519081900360640190fd5b60008267ffffffffffffffff81118015610e8057600080fd5b506040519080825280601f01601f191660200182016040528015610eab576020820181803683370190505b5090506001600160a01b03841660005b60028504811015610f4f57600860138290030282901c600f600482901c1660f082168203610ee882610f59565b868560020281518110610ef757fe5b60200101906001600160f81b031916908160001a905350610f1781610f59565b868560020260010181518110610f2957fe5b60200101906001600160f81b031916908160001a9053505060019092019150610ebb9050565b5090949350505050565b6000600a8260ff161015610f7457506030810160f81b610a35565b506037810160f81b610a35565b8051610a358161149a565b8051600281900b8114610a3557600080fd5b80516fffffffffffffffffffffffffffffffff81168114610a3557600080fd5b805161ffff81168114610a3557600080fd5b805162ffffff81168114610a3557600080fd5b805160ff81168114610a3557600080fd5b600060208284031215611005578081fd5b81516110108161149a565b9392505050565b60008060006060848603121561102b578182fd5b83356110368161149a565b925060208401356110468161149a565b929592945050506040919091013590565b60008060408385031215611069578182fd5b82356110748161149a565b946020939093013593505050565b600060208284031215611093578081fd5b61101082610f8c565b6000602082840312156110ad578081fd5b815167ffffffffffffffff808211156110c4578283fd5b818401915084601f8301126110d7578283fd5b8151818111156110e357fe5b604051601f8201601f19168101602001838111828210171561110157fe5b604052818152838201602001871015611118578485fd5b61112982602083016020870161146a565b9695505050505050565b600080600080600080600060e0888a03121561114d578283fd5b87516111588161149a565b965061116660208901610f8c565b955061117460408901610fbe565b945061118260608901610fbe565b935061119060808901610fbe565b925061119e60a08901610fe3565b915060c088015180151581146111b2578182fd5b8091505092959891949750929550565b6000602082840312156111d3578081fd5b61101082610fe3565b6000806000806000806000806000806000806101808d8f0312156111fe578485fd5b8c516bffffffffffffffffffffffff81168114611219578586fd5b9b5061122760208e01610f81565b9a5061123560408e01610f81565b995061124360608e01610f81565b985061125160808e01610fd0565b975061125f60a08e01610f8c565b965061126d60c08e01610f8c565b955061127b60e08e01610f9e565b94506101008d015193506101208d0151925061129a6101408e01610f9e565b91506112a96101608e01610f9e565b90509295989b509295989b509295989b565b6001600160a01b03169052565b15159052565b60020b9052565b600081518084526112ed81602086016020860161146a565b601f01601f19169290920160200192915050565b62ffffff169052565b60ff169052565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b60006020825261101060208301846112d5565b60006020825282516020830152602083015161136b60408401826112bb565b50604083015161137e60608401826112bb565b5060608301516101c080608085015261139b6101e08501836112d5565b91506080850151601f198584030160a08601526113b883826112d5565b92505060a08501516113cd60c086018261130a565b5060c08501516113e060e086018261130a565b5060e08501516101006113f5818701836112c8565b8601519050610120611409868201836112ce565b860151905061014061141d868201836112ce565b8601519050610160611431868201836112ce565b8601519050610180611445868201836112ce565b86015190506101a061145986820183611301565b8601519050610f4f858301826112bb565b60005b8381101561148557818101518382015260200161146d565b83811115611494576000848401525b50505050565b6001600160a01b03811681146114af57600080fd5b5056fea164736f6c6343000706000a00000000000000000000000042000000000000000000000000000000000000064554480000000000000000000000000000000000000000000000000000000000", - "nonce": "0x9", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xe5238180df540e174ac6085ee196d6921b278e80eb3a2a836fe8f45f9cdca358", - "transactionType": "CREATE", - "contractName": "TransparentUpgradeableProxy", - "contractAddress": "0x1872c8f792bb8321f9ef2f531e98e53572d3f293", - "function": null, - "arguments": [ - "0x420f4Be1FC1710f7a1FBfdcAF5E29DeAa9da446E", - "0x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A04", - "0x" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x60a0604052604051610d80380380610d808339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610d60833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610d608339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104c68061089a83390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516104326104685f395f601001526104325ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610206919061040f565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff811115610380575f80fd5b8301601f81018513610390575f80fd5b803567ffffffffffffffff8111156103aa576103aa61032a565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103d9576103d961032a565b6040528181528282016020018710156103f0575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea164736f6c634300081a000a608060405234801561000f575f80fd5b506040516104c63803806104c683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103d1806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f80fd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f80fd5b8401601f810186136102b8575f80fd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f80fd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea164736f6c634300081a000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000420f4be1fc1710f7a1fbfdcaf5e29deaa9da446e00000000000000000000000007d68837a1940cf2749ff0b3e6abed23ac6f9a0400000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0xa", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x1e18ec55902dcaac896d262b31ccf5658967e02f723034a9547bd1cbdd9e9546", - "transactionType": "CREATE", - "contractName": "NonfungiblePositionManager", - "contractAddress": "0x4801ed4f1b57559f9071413d9d99b607316fd1eb", - "function": null, - "arguments": [ - "0x780E96775371e1C4F4cD1524a578B8f1b12ECE58", - "0x4200000000000000000000000000000000000006", - "0x1872C8F792BB8321f9eF2F531e98e53572d3f293" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x610120604052600d80546001600160b01b0319166001176001600160b01b0316600160b01b1790553480156200003457600080fd5b50604051620062e9380380620062e98339810160408190526200005791620002db565b82826040518060400160405280601b81526020017f556e697377617020563320506f736974696f6e73204e46542d563100000000008152506040518060400160405280600a815260200169554e492d56332d504f5360b01b815250604051806040016040528060018152602001603160f81b8152508282620000e66301ffc9a760e01b6200018d60201b60201c565b8151620000fb90600690602085019062000212565b5080516200011190600790602084019062000212565b50620001246380ac58cd60e01b6200018d565b62000136635b5e139f60e01b6200018d565b6200014863780e9d6360e01b6200018d565b50508251602093840120608052805192019190912060a052506001600160601b0319606092831b811660c05290821b811660e05291901b166101005250620003249050565b6001600160e01b03198082161415620001ed576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826200024a576000855562000295565b82601f106200026557805160ff191683800117855562000295565b8280016001018555821562000295579182015b828111156200029557825182559160200191906001019062000278565b50620002a3929150620002a7565b5090565b5b80821115620002a35760008155600101620002a8565b80516001600160a01b0381168114620002d657600080fd5b919050565b600080600060608486031215620002f0578283fd5b620002fb84620002be565b92506200030b60208501620002be565b91506200031b60408501620002be565b90509250925092565b60805160a05160c05160601c60e05160601c6101005160601c615f40620003a960003980612a835250806102995280611718528061180e52806118965280613e5d5280613ea35280613f17525080610aa75280610dde5280610ea55280612a1d5280612b235280612e4452806136e15250806114ff5250806114de5250615f406000f3fe6080604052600436106102895760003560e01c80636352211e11610153578063ac9650d8116100cb578063d34879971161007f578063e985e9c511610064578063e985e9c5146106f5578063f3995c6714610715578063fc6f7865146107285761030d565b8063d3487997146106c2578063df2ab5bb146106e25761030d565b8063c2e3140a116100b0578063c2e3140a1461067a578063c45a01551461068d578063c87b56dd146106a25761030d565b8063ac9650d81461063a578063b88d4fde1461065a5761030d565b8063883164561161012257806399fbab881161010757806399fbab88146105cf578063a22cb46514610607578063a4a78f0c146106275761030d565b8063883164561461059757806395d89b41146105ba5761030d565b80636352211e1461052f5780636c0360eb1461054f57806370a08231146105645780637ac2ff7b146105845761030d565b806323b872dd1161020157806342966c68116101b557806349404b7c1161019a57806349404b7c146104e75780634aa4a4fc146104fa5780634f6ccce71461050f5761030d565b806342966c68146104c15780634659a494146104d45761030d565b806330adf81f116101e657806330adf81f146104775780633644e5151461048c57806342842e0e146104a15761030d565b806323b872dd146104375780632f745c59146104575761030d565b80630c49ccbe1161025857806313ead5621161023d57806313ead562146103e057806318160ddd146103f3578063219f5d17146104155761030d565b80630c49ccbe146103b757806312210e8a146103d85761030d565b806301ffc9a71461031257806306fdde0314610348578063081812fc1461036a578063095ea7b3146103975761030d565b3661030d57336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461030b576040805162461bcd60e51b815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b34801561031e57600080fd5b5061033261032d3660046153a6565b61073b565b60405161033f919061591e565b60405180910390f35b34801561035457600080fd5b5061035d610776565b60405161033f9190615971565b34801561037657600080fd5b5061038a6103853660046156b8565b61080c565b60405161033f91906157e2565b3480156103a357600080fd5b5061030b6103b2366004615270565b610868565b6103ca6103c5366004615483565b61093e565b60405161033f929190615b42565b61030b610daa565b61038a6103ee366004615103565b610dbc565b3480156103ff57600080fd5b506104086110c9565b60405161033f9190615929565b610428610423366004615494565b6110da565b60405161033f93929190615afd565b34801561044357600080fd5b5061030b61045236600461515c565b611413565b34801561046357600080fd5b50610408610472366004615270565b61146a565b34801561048357600080fd5b50610408611495565b34801561049857600080fd5b506104086114b9565b3480156104ad57600080fd5b5061030b6104bc36600461515c565b611577565b61030b6104cf3660046156b8565b611592565b61030b6104e23660046152dc565b611661565b61030b6104f53660046156d0565b611714565b34801561050657600080fd5b5061038a611894565b34801561051b57600080fd5b5061040861052a3660046156b8565b6118b8565b34801561053b57600080fd5b5061038a61054a3660046156b8565b6118ce565b34801561055b57600080fd5b5061035d6118f6565b34801561057057600080fd5b5061040861057f3660046150af565b6118fb565b61030b6105923660046152dc565b611963565b6105aa6105a5366004615550565b611e0f565b60405161033f9493929190615b1e565b3480156105c657600080fd5b5061035d612370565b3480156105db57600080fd5b506105ef6105ea3660046156b8565b6123d1565b60405161033f9c9b9a99989796959493929190615b50565b34801561061357600080fd5b5061030b610622366004615243565b612600565b61030b6106353660046152dc565b612723565b61064d610648366004615337565b6127d5565b60405161033f91906158a0565b34801561066657600080fd5b5061030b61067536600461519c565b612915565b61030b6106883660046152dc565b612973565b34801561069957600080fd5b5061038a612a1b565b3480156106ae57600080fd5b5061035d6106bd3660046156b8565b612a3f565b3480156106ce57600080fd5b5061030b6106dd366004615717565b612b0e565b61030b6106f036600461529b565b612b8c565b34801561070157600080fd5b506103326107103660046150cb565b612c6f565b61030b6107233660046152dc565b612c9d565b6103ca61073636600461546c565b612d28565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526020819052604090205460ff165b919050565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108025780601f106107d757610100808354040283529160200191610802565b820191906000526020600020905b8154815290600101906020018083116107e557829003601f168201915b5050505050905090565b600061081782613246565b61083c5760405162461bcd60e51b8152600401610833906159bb565b60405180910390fd5b506000908152600c60205260409020546c0100000000000000000000000090046001600160a01b031690565b6000610873826118ce565b9050806001600160a01b0316836001600160a01b031614156108c65760405162461bcd60e51b8152600401808060200182810382526021815260200180615ee26021913960400191505060405180910390fd5b806001600160a01b03166108d8613253565b6001600160a01b031614806108f457506108f481610710613253565b61092f5760405162461bcd60e51b8152600401808060200182810382526038815260200180615e0c6038913960400191505060405180910390fd5b6109398383613257565b505050565b600080823561094d33826132db565b6109695760405162461bcd60e51b815260040161083390615984565b836080013580610977613377565b11156109ca576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b60006109dc6040870160208801615562565b6001600160801b0316116109ef57600080fd5b84356000908152600c602090815260409182902060018101549092600160801b9091046001600160801b031691610a2a918901908901615562565b6001600160801b0316816001600160801b03161015610a4857600080fd5b60018281015469ffffffffffffffffffff166000908152600b60209081526040808320815160608101835281546001600160a01b039081168252919095015490811692850192909252600160a01b90910462ffffff1690830152610acc7f00000000000000000000000000000000000000000000000000000000000000008361337b565b60018501549091506001600160a01b0382169063a34123a7906a01000000000000000000008104600290810b91600160681b9004900b610b1260408e0160208f01615562565b6040518463ffffffff1660e01b8152600401610b309392919061594b565b6040805180830381600087803b158015610b4957600080fd5b505af1158015610b5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8191906156f4565b909850965060408901358810801590610b9e575088606001358710155b610bba5760405162461bcd60e51b815260040161083390615a18565b6001840154600090610bea9030906a01000000000000000000008104600290810b91600160681b9004900b613477565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b8152600401610c1b9190615929565b60a06040518083038186803b158015610c3357600080fd5b505afa158015610c47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c6b91906155ac565b50509250925050610c9087600201548303876001600160801b0316600160801b6134d1565b6004880180546fffffffffffffffffffffffffffffffff198116928e016001600160801b039182160181169290921790556003880154610cda91908303908816600160801b6134d1565b6004880180546001600160801b03808216938e01600160801b9283900482160116029190911790556002870182905560038701819055610d2060408d0160208e01615562565b86038760010160106101000a8154816001600160801b0302191690836001600160801b031602179055508b600001357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b48d6020016020810190610d839190615562565b8d8d604051610d9493929190615afd565b60405180910390a2505050505050505050915091565b4715610dba57610dba3347613580565b565b6000836001600160a01b0316856001600160a01b031610610ddc57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b158015610e6757600080fd5b505afa158015610e7b573d6000803e3d6000fd5b505050506040513d6020811015610e9157600080fd5b505190506001600160a01b038116610fe0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b158015610f3057600080fd5b505af1158015610f44573d6000803e3d6000fd5b505050506040513d6020811015610f5a57600080fd5b5051604080517ff637731d0000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b158015610fc357600080fd5b505af1158015610fd7573d6000803e3d6000fd5b505050506110c1565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561101b57600080fd5b505afa15801561102f573d6000803e3d6000fd5b505050506040513d60e081101561104557600080fd5b505190506001600160a01b0381166110bf57816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156110a657600080fd5b505af11580156110ba573d6000803e3d6000fd5b505050505b505b949350505050565b60006110d56002613689565b905090565b60008060008360a00135806110ed613377565b1115611140576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b84356000908152600c6020908152604080832060018082015469ffffffffffffffffffff81168652600b855283862084516060808201875282546001600160a01b039081168352929094015480831682890190815262ffffff600160a01b9092048216838901908152885161014081018a528451861681529151909416818a01529251168287015230828501526a01000000000000000000008304600290810b810b608080850191909152600160681b909404810b900b60a0830152958c013560c0820152938b013560e0850152908a0135610100840152890135610120830152929061122c90613694565b6001870154939a50919850965091506000906112669030906a01000000000000000000008104600290810b91600160681b9004900b613477565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b81526004016112979190615929565b60a06040518083038186803b1580156112af57600080fd5b505afa1580156112c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e791906155ac565b50509250925050611323866002015483038760010160109054906101000a90046001600160801b03166001600160801b0316600160801b6134d1565b6004870180546001600160801b0380821690930183166fffffffffffffffffffffffffffffffff19909116179055600387015460018801546113739291840391600160801b9182900416906134d1565b6004870180546001600160801b03600160801b80830482169094018116840291811691909117909155600288018490556003880183905560018801805483810483168e018316909302929091169190911790556040518b35907f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f906113fd908d908d908d90615afd565b60405180910390a2505050505050509193909250565b61142461141e613253565b826132db565b61145f5760405162461bcd60e51b8152600401808060200182810382526031815260200180615f036031913960400191505060405180910390fd5b6109398383836138cf565b6001600160a01b038216600090815260016020526040812061148c9083613a1b565b90505b92915050565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad81565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611526613a27565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b61093983838360405180602001604052806000815250612915565b8061159d33826132db565b6115b95760405162461bcd60e51b815260040161083390615984565b6000828152600c602052604090206001810154600160801b90046001600160801b03161580156115f4575060048101546001600160801b0316155b801561161257506004810154600160801b90046001600160801b0316155b61162e5760405162461bcd60e51b815260040161083390615a86565b6000838152600c602052604081208181556001810182905560028101829055600381018290556004015561093983613a2b565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156116f457600080fd5b505af1158015611708573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561178357600080fd5b505afa158015611797573d6000803e3d6000fd5b505050506040513d60208110156117ad57600080fd5b5051905082811015611806576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015610939577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561187257600080fd5b505af1158015611886573d6000803e3d6000fd5b505050506109398282613580565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806118c6600284613af8565b509392505050565b600061148f82604051806060016040528060298152602001615e6e6029913960029190613b16565b606090565b60006001600160a01b0382166119425760405162461bcd60e51b815260040180806020018281038252602a815260200180615e44602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061148f90613689565b8361196c613377565b11156119bf576040805162461bcd60e51b815260206004820152600e60248201527f5065726d69742065787069726564000000000000000000000000000000000000604482015290519081900360640190fd5b60006119c96114b9565b7f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad88886119f581613b23565b604080516020808201969096526001600160a01b03909416848201526060840192909252608083015260a08083018a90528151808403909101815260c0830182528051908401207f190100000000000000000000000000000000000000000000000000000000000060e084015260e283019490945261010280830194909452805180830390940184526101229091019052815191012090506000611a98876118ce565b9050806001600160a01b0316886001600160a01b03161415611aeb5760405162461bcd60e51b8152600401808060200182810382526027815260200180615d6f6027913960400191505060405180910390fd5b611af481613b62565b15611ccf576040805160208082018790528183018690527fff0000000000000000000000000000000000000000000000000000000000000060f889901b16606083015282516041818403018152606183018085527f1626ba7e0000000000000000000000000000000000000000000000000000000090526065830186815260858401948552815160a585015281516001600160a01b03871695631626ba7e958995919260c59091019185019080838360005b83811015611bbe578181015183820152602001611ba6565b50505050905090810190601f168015611beb5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b158015611c0957600080fd5b505afa158015611c1d573d6000803e3d6000fd5b505050506040513d6020811015611c3357600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014611cca576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b611dfb565b600060018387878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611d2b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611d93576040805162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e6174757265000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316816001600160a01b031614611df9576040805162461bcd60e51b815260206004820152600c60248201527f556e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b505b611e058888613257565b5050505050505050565b60008060008084610140013580611e24613377565b1115611e77576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b604080516101408101909152600090611f439080611e9860208b018b6150af565b6001600160a01b03168152602001896020016020810190611eb991906150af565b6001600160a01b03168152602001611ed760608b0160408c0161569e565b62ffffff168152306020820152604001611ef760808b0160608c016153e6565b60020b8152602001611f0f60a08b0160808c016153e6565b60020b81526020018960a0013581526020018960c0013581526020018960e001358152602001896101000135815250613694565b92975090955093509050611fb7611f6261014089016101208a016150af565b600d80547fffffffffffffffffffff000000000000000000000000000000000000000000008116600175ffffffffffffffffffffffffffffffffffffffffffff92831690810190921617909155975087613b68565b6000611fe230611fcd60808b0160608c016153e6565b611fdd60a08c0160808d016153e6565b613477565b9050600080836001600160a01b031663514ea4bf846040518263ffffffff1660e01b81526004016120139190615929565b60a06040518083038186803b15801561202b57600080fd5b505afa15801561203f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061206391906155ac565b5050925092505060006120dc8560405180606001604052808e600001602081019061208e91906150af565b6001600160a01b031681526020018e60200160208101906120af91906150af565b6001600160a01b031681526020018e60400160208101906120d0919061569e565b62ffffff169052613c96565b905060405180610140016040528060006bffffffffffffffffffffffff16815260200160006001600160a01b031681526020018269ffffffffffffffffffff1681526020018c606001602081019061213491906153e6565b60020b815260200161214c60a08e0160808f016153e6565b60020b81526020018a6001600160801b0316815260200184815260200183815260200160006001600160801b0316815260200160006001600160801b0316815250600c60008c815260200190815260200160002060008201518160000160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550602082015181600001600c6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060408201518160010160006101000a81548169ffffffffffffffffffff021916908369ffffffffffffffffffff160217905550606082015181600101600a6101000a81548162ffffff021916908360020b62ffffff160217905550608082015181600101600d6101000a81548162ffffff021916908360020b62ffffff16021790555060a08201518160010160106101000a8154816001600160801b0302191690836001600160801b0316021790555060c0820151816002015560e082015181600301556101008201518160040160006101000a8154816001600160801b0302191690836001600160801b031602179055506101208201518160040160106101000a8154816001600160801b0302191690836001600160801b03160217905550905050897f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f8a8a8a60405161235b93929190615afd565b60405180910390a25050505050509193509193565b60078054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108025780601f106107d757610100808354040283529160200191610802565b6000818152600c6020908152604080832081516101408101835281546bffffffffffffffffffffffff811682526001600160a01b036c010000000000000000000000009091041693810193909352600181015469ffffffffffffffffffff81169284018390526a01000000000000000000008104600290810b810b810b6060860152600160681b8204810b810b810b60808601526001600160801b03600160801b92839004811660a08701529083015460c0860152600383015460e0860152600490920154808316610100860152041661012083015282918291829182918291829182918291829182918291906124da5760405162461bcd60e51b815260040161083390615a4f565b6000600b6000836040015169ffffffffffffffffffff1669ffffffffffffffffffff1681526020019081526020016000206040518060600160405290816000820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020016001820160149054906101000a900462ffffff1662ffffff1662ffffff1681525050905081600001518260200151826000015183602001518460400151866060015187608001518860a001518960c001518a60e001518b61010001518c61012001519d509d509d509d509d509d509d509d509d509d509d509d50505091939597999b5091939597999b565b612608613253565b6001600160a01b0316826001600160a01b0316141561266e576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b806005600061267b613253565b6001600160a01b0390811682526020808301939093526040918201600090812091871680825291909352912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016921515929092179091556126dd613253565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561278d57600080fd5b505afa1580156127a1573d6000803e3d6000fd5b505050506040513d60208110156127b757600080fd5b505110156127cd576127cd868686868686611661565b505050505050565b60608167ffffffffffffffff811180156127ee57600080fd5b5060405190808252806020026020018201604052801561282257816020015b606081526020019060019003908161280d5790505b50905060005b8281101561290e576000803086868581811061284057fe5b90506020028101906128529190615bef565b6040516128609291906157d2565b600060405180830381855af49150503d806000811461289b576040519150601f19603f3d011682016040523d82523d6000602084013e6128a0565b606091505b5091509150816128ec576044815110156128b957600080fd5b600481019050808060200190518101906128d39190615402565b60405162461bcd60e51b81526004016108339190615971565b808484815181106128f957fe5b60209081029190910101525050600101612828565b5092915050565b612926612920613253565b836132db565b6129615760405162461bcd60e51b8152600401808060200182810382526031815260200180615f036031913960400191505060405180910390fd5b61296d84848484613de6565b50505050565b604080517fdd62ed3e000000000000000000000000000000000000000000000000000000008152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156129db57600080fd5b505afa1580156129ef573d6000803e3d6000fd5b505050506040513d6020811015612a0557600080fd5b505110156127cd576127cd868686868686612c9d565b7f000000000000000000000000000000000000000000000000000000000000000081565b6060612a4a82613246565b612a5357600080fd5b6040517fe9dc63750000000000000000000000000000000000000000000000000000000081526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e9dc637590612aba9030908690600401615932565b60006040518083038186803b158015612ad257600080fd5b505afa158015612ae6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261148f9190810190615402565b6000612b1c828401846154a5565b9050612b4c7f00000000000000000000000000000000000000000000000000000000000000008260000151613e38565b508415612b67578051516020820151612b6791903388613e5b565b8315612b8557612b8581600001516020015182602001513387613e5b565b5050505050565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015612bdb57600080fd5b505afa158015612bef573d6000803e3d6000fd5b505050506040513d6020811015612c0557600080fd5b5051905082811015612c5e576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b801561296d5761296d848383613feb565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156116f457600080fd5b6000808235612d3733826132db565b612d535760405162461bcd60e51b815260040161083390615984565b6000612d656060860160408701615562565b6001600160801b03161180612d9257506000612d876080860160608701615562565b6001600160801b0316115b612d9b57600080fd5b600080612dae60408701602088016150af565b6001600160a01b031614612dd157612dcc60408601602087016150af565b612dd3565b305b85356000908152600c6020908152604080832060018082015469ffffffffffffffffffff168552600b8452828520835160608101855281546001600160a01b039081168252919092015490811694820194909452600160a01b90930462ffffff169183019190915292935090612e697f00000000000000000000000000000000000000000000000000000000000000008361337b565b600484015460018501549192506001600160801b0380821692600160801b92839004821692900416156130865760018501546040517fa34123a70000000000000000000000000000000000000000000000000000000081526001600160a01b0385169163a34123a791612f00916a01000000000000000000008104600290810b92600160681b909204900b9060009060040161594b565b6040805180830381600087803b158015612f1957600080fd5b505af1158015612f2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f5191906156f4565b5050600185015460009081906001600160a01b0386169063514ea4bf90612f969030906a01000000000000000000008104600290810b91600160681b9004900b613477565b6040518263ffffffff1660e01b8152600401612fb29190615929565b60a06040518083038186803b158015612fca57600080fd5b505afa158015612fde573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061300291906155ac565b5050925092505061303e876002015483038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b6134d1565b84019350613077876003015482038860010160109054906101000a90046001600160801b03166001600160801b0316600160801b6134d1565b60028801929092556003870155015b6000806001600160801b0384166130a360608e0160408f01615562565b6001600160801b0316116130c6576130c160608d0160408e01615562565b6130c8565b835b836001600160801b03168d60600160208101906130e59190615562565b6001600160801b0316116131085761310360808e0160608f01615562565b61310a565b835b60018901546040517f4f1eb3d80000000000000000000000000000000000000000000000000000000081529294509092506001600160a01b03871691634f1eb3d89161317d918c916a01000000000000000000008104600290810b92600160681b909204900b9088908890600401615839565b6040805180830381600087803b15801561319657600080fd5b505af11580156131aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131ce919061557e565b6004890180546fffffffffffffffffffffffffffffffff196001600160801b03918216600160801b878a0384160217168689038216179091556040519281169d50169a508c35907f40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f0190610d94908b9086908690615876565b600061148f60028361417b565b3390565b6000818152600c6020526040902080546bffffffffffffffffffffffff166c010000000000000000000000006001600160a01b0385169081029190911790915581906132a2826118ce565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60006132e682613246565b6133215760405162461bcd60e51b815260040180806020018281038252602c815260200180615de0602c913960400191505060405180910390fd5b600061332c836118ce565b9050806001600160a01b0316846001600160a01b031614806133675750836001600160a01b031661335c8461080c565b6001600160a01b0316145b806110c157506110c18185612c6f565b4290565b600081602001516001600160a01b031682600001516001600160a01b0316106133a357600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516bffffffffffffffffffffffff19606086901b16602080830191909152600285810b60e890811b60348501529085900b901b60378301528251601a818403018152603a90920190925280519101205b9392505050565b600080806000198587098686029250828110908390030390508061350757600084116134fc57600080fd5b5082900490506134ca565b80841161351357600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106135cc5780518252601f1990920191602091820191016135ad565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461362e576040519150601f19603f3d011682016040523d82523d6000602084013e613633565b606091505b5050905080610939576040805162461bcd60e51b815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600061148f82614187565b6000806000806000604051806060016040528087600001516001600160a01b0316815260200187602001516001600160a01b03168152602001876040015162ffffff1681525090506137067f00000000000000000000000000000000000000000000000000000000000000008261337b565b91506000826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561374357600080fd5b505afa158015613757573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061377b919061560d565b50505050505090506000613792886080015161418b565b905060006137a38960a0015161418b565b90506137ba8383838c60c001518d60e001516144d9565b9750505050816001600160a01b0316633c8a7d8d876060015188608001518960a00151896040518060400160405280888152602001336001600160a01b031681525060405160200161380c9190615abd565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161383b9594939291906157f6565b6040805180830381600087803b15801561385457600080fd5b505af1158015613868573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061388c91906156f4565b610100880151919550935084108015906138ab57508561012001518310155b6138c75760405162461bcd60e51b815260040161083390615a18565b509193509193565b826001600160a01b03166138e2826118ce565b6001600160a01b0316146139275760405162461bcd60e51b8152600401808060200182810382526029815260200180615eb96029913960400191505060405180910390fd5b6001600160a01b03821661396c5760405162461bcd60e51b8152600401808060200182810382526024815260200180615d966024913960400191505060405180910390fd5b613977838383610939565b613982600082613257565b6001600160a01b03831660009081526001602052604090206139a4908261459d565b506001600160a01b03821660009081526001602052604090206139c790826145a9565b506139d4600282846145b5565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061148c83836145cb565b4690565b6000613a36826118ce565b9050613a4481600084610939565b613a4f600083613257565b6000828152600860205260409020546002600019610100600184161502019091160415613a8d576000828152600860205260408120613a8d9161501f565b6001600160a01b0381166000908152600160205260409020613aaf908361459d565b50613abb60028361462f565b5060405182906000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000808080613b07868661463b565b909450925050505b9250929050565b60006110c18484846146b6565b6000908152600c6020526040902080546bffffffffffffffffffffffff19811660016bffffffffffffffffffffffff9283169081019092161790915590565b3b151590565b6001600160a01b038216613bc3576040805162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b613bcc81613246565b15613c1e576040805162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b613c2a60008383610939565b6001600160a01b0382166000908152600160205260409020613c4c90826145a9565b50613c59600282846145b5565b5060405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160a01b0382166000908152600a602052604090205469ffffffffffffffffffff168061148f5750600d8054600169ffffffffffffffffffff76010000000000000000000000000000000000000000000080840482168381019092160275ffffffffffffffffffffffffffffffffffffffffffff909316929092179092556001600160a01b038085166000908152600a6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffff000000000000000000001686179055848352600b825291829020865181549085167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617825591870151950180549287015162ffffff16600160a01b027fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff969094169290911691909117939093161790915592915050565b613df18484846138cf565b613dfd84848484614780565b61296d5760405162461bcd60e51b8152600401808060200182810382526032815260200180615d3d6032913960400191505060405180910390fd5b6000613e44838361337b565b9050336001600160a01b0382161461148f57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316148015613e9c5750804710155b15613fbe577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613efc57600080fd5b505af1158015613f10573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015613f8c57600080fd5b505af1158015613fa0573d6000803e3d6000fd5b505050506040513d6020811015613fb657600080fd5b5061296d9050565b6001600160a01b038316301415613fdf57613fda848383613feb565b61296d565b61296d8484848461495c565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b602083106140955780518252601f199092019160209182019101614076565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146140f7576040519150601f19603f3d011682016040523d82523d6000602084013e6140fc565b606091505b509150915081801561412a57508051158061412a575080806020019051602081101561412757600080fd5b50515b612b85576040805162461bcd60e51b815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600061148c8383614af4565b5490565b60008060008360020b126141a2578260020b6141aa565b8260020b6000035b9050620d89e8811115614204576040805162461bcd60e51b815260206004820152600160248201527f5400000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006001821661421857600160801b61422a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff169050600282161561425e576ffff97272373d413259a46990580e213a0260801c5b600482161561427d576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561429c576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b60108216156142bb576fffcb9843d60f6159c9db58835c9266440260801c5b60208216156142da576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156142f9576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614318576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615614338576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614358576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614378576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614398576fe7159475a2c29b7443b29c7fa6e889d90260801c5b6110008216156143b8576fd097f3bdfd2022b8845ad8f792aa58250260801c5b6120008216156143d8576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156143f8576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614418576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614439576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614459576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614478576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614495576b048a170391f7dc42444e8fa20260801c5b60008460020b13156144b05780600019816144ac57fe5b0490505b6401000000008106156144c45760016144c7565b60005b60ff16602082901c0192505050919050565b6000836001600160a01b0316856001600160a01b031611156144f9579293925b846001600160a01b0316866001600160a01b0316116145245761451d858585614b0c565b9050614594565b836001600160a01b0316866001600160a01b0316101561458657600061454b878686614b0c565b9050600061455a878986614b78565b9050806001600160801b0316826001600160801b03161061457b578061457d565b815b92505050614594565b614591858584614b78565b90505b95945050505050565b600061148c8383614bbe565b600061148c8383614c84565b60006110c184846001600160a01b038516614cce565b8154600090821061460d5760405162461bcd60e51b8152600401808060200182810382526022815260200180615d1b6022913960400191505060405180910390fd5b82600001828154811061461c57fe5b9060005260206000200154905092915050565b600061148c8383614d65565b81546000908190831061467f5760405162461bcd60e51b8152600401808060200182810382526022815260200180615e976022913960400191505060405180910390fd5b600084600001848154811061469057fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b600082815260018401602052604081205482816147515760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156147165781810151838201526020016146fe565b50505050905090810190601f1680156147435780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061476457fe5b9060005260206000209060020201600101549150509392505050565b6000614794846001600160a01b0316613b62565b6147a0575060016110c1565b60006148f17f150b7a02000000000000000000000000000000000000000000000000000000006147ce613253565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561483557818101518382015260200161481d565b50505050905090810190601f1680156148625780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051806060016040528060328152602001615d3d603291396001600160a01b0388169190614e39565b9050600081806020019051602081101561490a57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001492505050949350505050565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b60208310614a0e5780518252601f1990920191602091820191016149ef565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614a70576040519150601f19603f3d011682016040523d82523d6000602084013e614a75565b606091505b5091509150818015614aa3575080511580614aa35750808060200190516020811015614aa057600080fd5b50515b6127cd576040805162461bcd60e51b815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60009081526001919091016020526040902054151590565b6000826001600160a01b0316846001600160a01b03161115614b2c579192915b6000614b58856001600160a01b0316856001600160a01b03166c010000000000000000000000006134d1565b9050614594614b7384838888036001600160a01b03166134d1565b614e48565b6000826001600160a01b0316846001600160a01b03161115614b98579192915b6110c1614b73836c010000000000000000000000008787036001600160a01b03166134d1565b60008181526001830160205260408120548015614c7a5783546000198083019190810190600090879083908110614bf157fe5b9060005260206000200154905080876000018481548110614c0e57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080614c3e57fe5b6001900381819060005260206000200160009055905586600101600087815260200190815260200160002060009055600194505050505061148f565b600091505061148f565b6000614c908383614af4565b614cc65750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561148f565b50600061148f565b600082815260018401602052604081205480614d335750506040805180820182528381526020808201848152865460018181018955600089815284812095516002909302909501918255915190820155865486845281880190925292909120556134ca565b82856000016001830381548110614d4657fe5b90600052602060002090600202016001018190555060009150506134ca565b60008181526001830160205260408120548015614c7a5783546000198083019190810190600090879083908110614d9857fe5b9060005260206000209060020201905080876000018481548110614db857fe5b600091825260208083208454600290930201918255600193840154918401919091558354825289830190526040902090840190558654879080614df757fe5b600082815260208082206002600019909401938402018281556001908101839055929093558881528982019092526040822091909155945061148f9350505050565b60606110c18484600085614e5e565b806001600160801b038116811461077157600080fd5b606082471015614e9f5760405162461bcd60e51b8152600401808060200182810382526026815260200180615dba6026913960400191505060405180910390fd5b614ea885613b62565b614ef9576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b60208310614f375780518252601f199092019160209182019101614f18565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114614f99576040519150601f19603f3d011682016040523d82523d6000602084013e614f9e565b606091505b5091509150614fae828286614fb9565b979650505050505050565b60608315614fc85750816134ca565b825115614fd85782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156147165781810151838201526020016146fe565b50805460018160011615610100020316600290046000825580601f106150455750615063565b601f0160209004906000526020600020908101906150639190615066565b50565b5b8082111561507b5760008155600101615067565b5090565b803561077181615cc4565b805161ffff8116811461077157600080fd5b803562ffffff8116811461077157600080fd5b6000602082840312156150c0578081fd5b81356134ca81615cc4565b600080604083850312156150dd578081fd5b82356150e881615cc4565b915060208301356150f881615cc4565b809150509250929050565b60008060008060808587031215615118578182fd5b843561512381615cc4565b9350602085013561513381615cc4565b92506151416040860161509c565b9150606085013561515181615cc4565b939692955090935050565b600080600060608486031215615170578081fd5b833561517b81615cc4565b9250602084013561518b81615cc4565b929592945050506040919091013590565b600080600080608085870312156151b1578182fd5b84356151bc81615cc4565b935060208501356151cc81615cc4565b925060408501359150606085013567ffffffffffffffff8111156151ee578182fd5b8501601f810187136151fe578182fd5b803561521161520c82615c76565b615c52565b818152886020838501011115615225578384fd5b81602084016020830137908101602001929092525092959194509250565b60008060408385031215615255578182fd5b823561526081615cc4565b915060208301356150f881615cd9565b60008060408385031215615282578182fd5b823561528d81615cc4565b946020939093013593505050565b6000806000606084860312156152af578081fd5b83356152ba81615cc4565b92506020840135915060408401356152d181615cc4565b809150509250925092565b60008060008060008060c087890312156152f4578384fd5b86356152ff81615cc4565b95506020870135945060408701359350606087013561531d81615d0b565b9598949750929560808101359460a0909101359350915050565b60008060208385031215615349578182fd5b823567ffffffffffffffff80821115615360578384fd5b818501915085601f830112615373578384fd5b813581811115615381578485fd5b8660208083028501011115615394578485fd5b60209290920196919550909350505050565b6000602082840312156153b7578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146134ca578182fd5b6000602082840312156153f7578081fd5b81356134ca81615ce7565b600060208284031215615413578081fd5b815167ffffffffffffffff811115615429578182fd5b8201601f81018413615439578182fd5b805161544761520c82615c76565b81815285602083850101111561545b578384fd5b614594826020830160208601615c98565b60006080828403121561547d578081fd5b50919050565b600060a0828403121561547d578081fd5b600060c0828403121561547d578081fd5b600081830360808112156154b7578182fd5b6040516040810167ffffffffffffffff82821081831117156154d557fe5b8160405260608412156154e6578485fd5b60a08301935081841081851117156154fa57fe5b50826040528435925061550c83615cc4565b91825260208401359161551e83615cc4565b8260608301526155306040860161509c565b608083015281526155436060850161507f565b6020820152949350505050565b6000610160828403121561547d578081fd5b600060208284031215615573578081fd5b81356134ca81615cf6565b60008060408385031215615590578182fd5b825161559b81615cf6565b60208401519092506150f881615cf6565b600080600080600060a086880312156155c3578283fd5b85516155ce81615cf6565b80955050602086015193506040860151925060608601516155ee81615cf6565b60808701519092506155ff81615cf6565b809150509295509295909350565b600080600080600080600060e0888a031215615627578485fd5b875161563281615cc4565b602089015190975061564381615ce7565b95506156516040890161508a565b945061565f6060890161508a565b935061566d6080890161508a565b925060a088015161567d81615d0b565b60c089015190925061568e81615cd9565b8091505092959891949750929550565b6000602082840312156156af578081fd5b61148c8261509c565b6000602082840312156156c9578081fd5b5035919050565b600080604083850312156156e2578182fd5b8235915060208301356150f881615cc4565b60008060408385031215615706578182fd5b505080516020909101519092909150565b6000806000806060858703121561572c578182fd5b8435935060208501359250604085013567ffffffffffffffff80821115615751578384fd5b818701915087601f830112615764578384fd5b813581811115615772578485fd5b886020828501011115615783578485fd5b95989497505060200194505050565b600081518084526157aa816020860160208601615c98565b601f01601f19169290920160200192915050565b60020b9052565b6001600160801b03169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b03871682528560020b60208301528460020b60408301526001600160801b038416606083015260a06080830152614fae60a0830184615792565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b039390931683526001600160801b03918216602084015216604082015260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015615911577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526158ff858351615792565b945092850192908501906001016158c5565b5092979650505050505050565b901515815260200190565b90815260200190565b6001600160a01b03929092168252602082015260400190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b60006020825261148c6020830184615792565b6020808252600c908201527f4e6f7420617070726f7665640000000000000000000000000000000000000000604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201527f697374656e7420746f6b656e0000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f507269636520736c69707061676520636865636b000000000000000000000000604082015260600190565b60208082526010908201527f496e76616c696420746f6b656e20494400000000000000000000000000000000604082015260600190565b6020808252600b908201527f4e6f7420636c6561726564000000000000000000000000000000000000000000604082015260600190565b815180516001600160a01b03908116835260208083015182168185015260409283015162ffffff1692840192909252920151909116606082015260800190565b6001600160801b039390931683526020830191909152604082015260600190565b9384526001600160801b039290921660208401526040830152606082015260800190565b918252602082015260400190565b6bffffffffffffffffffffffff8d1681526001600160a01b038c811660208301528b811660408301528a16606082015262ffffff89166080820152600288900b60a08201526101808101615ba760c08301896157be565b615bb460e08301886157c5565b8561010083015284610120830152615bd06101408301856157c5565b615bde6101608301846157c5565b9d9c50505050505050505050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615c23578283fd5b83018035915067ffffffffffffffff821115615c3d578283fd5b602001915036819003821315613b0f57600080fd5b60405181810167ffffffffffffffff81118282101715615c6e57fe5b604052919050565b600067ffffffffffffffff821115615c8a57fe5b50601f01601f191660200190565b60005b83811015615cb3578181015183820152602001615c9b565b8381111561296d5750506000910152565b6001600160a01b038116811461506357600080fd5b801515811461506357600080fd5b8060020b811461506357600080fd5b6001600160801b038116811461506357600080fd5b60ff8116811461506357600080fdfe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732315065726d69743a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e7366657220746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a164736f6c6343000706000a000000000000000000000000780e96775371e1c4f4cd1524a578b8f1b12ece5800000000000000000000000042000000000000000000000000000000000000060000000000000000000000001872c8f792bb8321f9ef2f531e98e53572d3f293", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b50612d7f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806312e5f742146100435780632c0cf94714610073578063a5ea11da14610086575b5f5ffd5b61005661005136600461094f565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109db565b610130565b61008e610409565b60405161006a9190610b54565b5f5f86868686866040516020016100b6959493929190610bde565b6040516020818303038152906040528051906020012090505f604051806020016100df9061078b565b601f1982820381018352601f9091011660408190526101019190602001610c2c565b604051602081830303815290604052805190602001209050610124828230610759565b98975050505050505050565b5f808061013f84860186610c42565b91509150814614801561015c575080516001600160a01b03163314155b1561019557805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b80516040515f916101b0918d918d918d918891602001610bde565b604051602081830303815290604052805190602001209050824614610207575f8083526040805160208082018352838252808601919091528151808201835283815282860152815190810190915290815260608301525b6040805160e0810182528c8152602081018c9052908101899052606081018490526001600160a01b038816608082015260ff8a1660a082015260c081018390525f806102538e82610da1565b50602082015160018201906102689082610da1565b506040820151600282015560608201516003820155608082015160048201805460a085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560c08301518051600584018054919093166001600160a01b031991909116178255602081015190919060068401906102e99082610da1565b50604082015160028201906102fe9082610da1565b50606082015160038201906103139082610da1565b505050905050806040516103269061078b565b8190604051809103905ff5905080158015610343573d5f5f3e3d5ffd5b5093505f806103528180610798565b61035f600183015f610798565b5f60028301819055600383018190556004830180546001600160a81b03191690556005830180546001600160a01b0319168155906103a06006850182610798565b6103ad600283015f610798565b6103ba600383015f610798565b50506040516001600160a01b03871681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505050979650505050505050565b6104116107d2565b5f6040518060e00160405290815f8201805461042c90610d1d565b80601f016020809104026020016040519081016040528092919081815260200182805461045890610d1d565b80156104a35780601f1061047a576101008083540402835291602001916104a3565b820191905f5260205f20905b81548152906001019060200180831161048657829003601f168201915b505050505081526020016001820180546104bc90610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546104e890610d1d565b80156105335780601f1061050a57610100808354040283529160200191610533565b820191905f5260205f20905b81548152906001019060200180831161051657829003601f168201915b50505091835250506002820154602080830191909152600383015460408084019190915260048401546001600160a01b038082166060860152600160a01b90910460ff166080808601919091528251908101909252600585018054909116825260068501805460a09095019492939192918401916105b090610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546105dc90610d1d565b80156106275780601f106105fe57610100808354040283529160200191610627565b820191905f5260205f20905b81548152906001019060200180831161060a57829003601f168201915b5050505050815260200160028201805461064090610d1d565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90610d1d565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016003820180546106d090610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90610d1d565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611f1780610e5c83390190565b5080546107a490610d1d565b5f825580601f106107b3575050565b601f0160209004905f5260205f20908101906107cf9190610847565b50565b6040518060e0016040528060608152602001606081526020015f81526020015f81526020015f6001600160a01b031681526020015f60ff16815260200161084260405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b8082111561085b575f8155600101610848565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156108955761089561085f565b60405290565b5f82601f8301126108aa575f5ffd5b81356001600160401b038111156108c3576108c361085f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156108f1576108f161085f565b604052818152838201602001851015610908575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610934575f5ffd5b919050565b80356001600160a01b0381168114610934575f5ffd5b5f5f5f5f5f60a08688031215610963575f5ffd5b85356001600160401b03811115610978575f5ffd5b6109848882890161089b565b95505060208601356001600160401b0381111561099f575f5ffd5b6109ab8882890161089b565b9450506109ba60408701610924565b9250606086013591506109cf60808701610939565b90509295509295909350565b5f5f5f5f5f5f5f60c0888a0312156109f1575f5ffd5b87356001600160401b03811115610a06575f5ffd5b610a128a828b0161089b565b97505060208801356001600160401b03811115610a2d575f5ffd5b610a398a828b0161089b565b965050610a4860408901610924565b945060608801359350610a5d60808901610939565b925060a08801356001600160401b03811115610a77575f5ffd5b8801601f81018a13610a87575f5ffd5b80356001600160401b03811115610a9c575f5ffd5b8a6020828401011115610aad575f5ffd5b602082019350809250505092959891949750929550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b0381511682525f602082015160806020850152610b186080850182610ac4565b905060408301518482036040860152610b318282610ac4565b91505060608301518482036060860152610b4b8282610ac4565b95945050505050565b602081525f825160e06020840152610b70610100840182610ac4565b90506020840151601f19848303016040850152610b8d8282610ac4565b915050604084015160608401526060840151608084015260018060a01b0360808501511660a084015260ff60a08501511660c084015260c0840151601f198483030160e0850152610b4b8282610af2565b60a081525f610bf060a0830188610ac4565b8281036020840152610c028188610ac4565b60ff969096166040840152505060608101929092526001600160a01b031660809091015292915050565b5f82518060208501845e5f920191825250919050565b5f5f60408385031215610c53575f5ffd5b8235915060208301356001600160401b03811115610c6f575f5ffd5b830160808186031215610c80575f5ffd5b610c88610873565b610c9182610939565b815260208201356001600160401b03811115610cab575f5ffd5b610cb78782850161089b565b60208301525060408201356001600160401b03811115610cd5575f5ffd5b610ce18782850161089b565b60408301525060608201356001600160401b03811115610cff575f5ffd5b610d0b8782850161089b565b60608301525080925050509250929050565b600181811c90821680610d3157607f821691505b602082108103610d4f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d9c57805f5260205f20601f840160051c81016020851015610d7a5750805b601f840160051c820191505b81811015610d99575f8155600101610d86565b50505b505050565b81516001600160401b03811115610dba57610dba61085f565b610dce81610dc88454610d1d565b84610d55565b6020601f821160018114610e00575f8315610de95750848201515b5f19600385901b1c1916600184901b178455610d99565b5f84815260208120601f198516915b82811015610e2f5787850151825560209485019460019092019101610e0f565b5084821015610e4c57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe60c060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100739190810190610375565b606081015160a05280519091505f9061008c90826104ec565b50602081015160019061009f90826104ec565b5060a081015160ff1660805260c08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100e390826104ec565b50604082015160028201906100f890826104ec565b506060820151600382019061010d90826104ec565b50505060608101514603610133576101338160800151826040015161013960201b60201c565b506105a6565b6805345cdf77eb68f44c548181018181101561015c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101f0576101f06101ba565b60405290565b60405160e081016001600160401b03811182821017156101f0576101f06101ba565b5f82601f830112610227575f5ffd5b81516001600160401b03811115610240576102406101ba565b604051601f8201601f19908116603f011681016001600160401b038111828210171561026e5761026e6101ba565b604052818152838201602001851015610285575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102b7575f5ffd5b919050565b805160ff811681146102b7575f5ffd5b5f608082840312156102dc575f5ffd5b6102e46101ce565b90506102ef826102a1565b815260208201516001600160401b03811115610309575f5ffd5b61031584828501610218565b60208301525060408201516001600160401b03811115610333575f5ffd5b61033f84828501610218565b60408301525060608201516001600160401b0381111561035d575f5ffd5b61036984828501610218565b60608301525092915050565b5f60208284031215610385575f5ffd5b81516001600160401b0381111561039a575f5ffd5b820160e081850312156103ab575f5ffd5b6103b36101f6565b81516001600160401b038111156103c8575f5ffd5b6103d486828501610218565b82525060208201516001600160401b038111156103ef575f5ffd5b6103fb86828501610218565b6020830152506040828101519082015260608083015190820152610421608083016102a1565b608082015261043260a083016102bc565b60a082015260c08201516001600160401b0381111561044f575f5ffd5b61045b868285016102cc565b60c083015250949350505050565b600181811c9082168061047d57607f821691505b60208210810361049b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b557805f5260205f20601f840160051c810160208510156104c65750805b601f840160051c820191505b818110156104e5575f81556001016104d2565b5050505050565b81516001600160401b03811115610505576105056101ba565b610519816105138454610469565b846104a1565b6020601f82116001811461054b575f83156105345750848201515b5f19600385901b1c1916600184901b1784556104e5565b5f84815260208120601f198516915b8281101561057a578785015182556020948501946001909201910161055a565b508482101561059757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a0516119506105c75f395f6102ae01525f6101cc01526119505ff3fe608060405234801561000f575f5ffd5b506004361061011c575f3560e01c8063392f37e9116100a9578063a9059cbb1161006e578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610296578063ef126967146102a9578063ef31f2cd146102d0575f5ffd5b8063392f37e9146101fe5780633c130d901461021657806370a082311461021e5780637ecebe001461024357806395d89b4114610268575f5ffd5b806318bf5077116100ef57806318bf50771461018a57806323b872dd1461019f5780632b8c49e3146101b2578063313ce567146101c55780633644e515146101f6575f5ffd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b5f5ffd5b61013361012e3660046114df565b6102f6565b60405190151581526020015b60405180910390f35b610150610347565b60405161013f9190611534565b61013361016b366004611561565b6103d6565b6805345cdf77eb68f44c545b60405190815260200161013f565b61019d610198366004611561565b610455565b005b6101336101ad366004611589565b6104df565b61019d6101c0366004611561565b61059c565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161013f565b61017c610619565b610206610695565b60405161013f94939291906115c3565b61015061084c565b61017c61022c366004611617565b6387a211a2600c9081525f91909152602090205490565b61017c610251366004611617565b6338377508600c9081525f91909152602090205490565b610150610a2e565b61013361027e366004611561565b610a3d565b61019d610291366004611630565b610aa1565b61017c6102a436600461169d565b610c55565b61017c7f000000000000000000000000000000000000000000000000000000000000000081565b6102de6028602160991b0181565b6040516001600160a01b03909116815260200161013f565b5f6001600160e01b03198216630cccc66560e21b148061032657506001600160e01b031982166336372b0760e01b145b8061034157506001600160e01b031982166301ffc9a760e01b145b92915050565b60605f8054610355906116ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610381906116ce565b80156103cc5780601f106103a3576101008083540402835291602001916103cc565b820191905f5260205f20905b8154815290600101906020018083116103af57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761040757633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b011461049057604051632e0d831f60e01b81523360048201526028602160991b0160248201526044015b60405180910390fd5b61049a8282610c99565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105345733602052637f5e9f208117600c526034600c208054801915610531578085111561052b576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c2080548085111561055a5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f5160206119245f395f51905f52602080a3505060015b9392505050565b336028602160991b01146105d257604051632e0d831f60e01b81523360048201526028602160991b016024820152604401610487565b6105dc8282610d02565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd4906020016104d3565b5f80610623610347565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916106b3906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546106df906116ce565b801561072a5780601f106107015761010080835404028352916020019161072a565b820191905f5260205f20905b81548152906001019060200180831161070d57829003601f168201915b50505050509080600201805461073f906116ce565b80601f016020809104026020016040519081016040528092919081815260200182805461076b906116ce565b80156107b65780601f1061078d576101008083540402835291602001916107b6565b820191905f5260205f20905b81548152906001019060200180831161079957829003601f168201915b5050505050908060030180546107cb906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546107f7906116ce565b80156108425780601f1061081957610100808354040283529160200191610842565b820191905f5260205f20905b81548152906001019060200180831161082557829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b0316825260038054606093610a299390929091602084019190610884906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546108b0906116ce565b80156108fb5780601f106108d2576101008083540402835291602001916108fb565b820191905f5260205f20905b8154815290600101906020018083116108de57829003601f168201915b50505050508152602001600282018054610914906116ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610940906116ce565b801561098b5780601f106109625761010080835404028352916020019161098b565b820191905f5260205f20905b81548152906001019060200180831161096e57829003601f168201915b505050505081526020016003820180546109a4906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546109d0906116ce565b8015610a1b5780601f106109f257610100808354040283529160200191610a1b565b820191905f5260205f20905b8154815290600101906020018083116109fe57829003601f168201915b505050505081525050610d63565b905090565b606060018054610355906116ce565b5f6387a211a2600c52335f526020600c20805480841115610a655763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f5160206119245f395f51905f52602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba31885191517610ad157633f68539a5f526004601cfd5b5f610ada610347565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b1957631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610c015763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610c7e57505f19610341565b50602052637f5e9f20600c9081525f91909152603490205490565b6805345cdf77eb68f44c5481810181811015610cbc5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f5160206119245f395f51905f52602080a35050565b6387a211a2600c52815f526020600c20805480831115610d295763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f5160206119245f395f51905f52602083a35050565b6060610d76610d7183610d9c565b610eb3565b604051602001610d86919061171d565b6040516020818303038152906040529050919050565b60605f610db4835f01516001600160a01b0316610ed9565b604051602001610dc4919061174e565b60405160208183030381529060405290505f8360200151511115610e135780610df08460200151610f87565b604051602001610e0192919061177f565b60405160208183030381529060405290505b60408301515115610e4f5780610e2c8460400151610f87565b604051602001610e3d9291906117c1565b60405160208183030381529060405290505b60608301515115610e8b5780610e688460600151610f87565b604051602001610e799291906117ec565b60405160208183030381529060405290505b80604051602001610e9c9190611815565b604051602081830303815290604052915050919050565b6060610341826040518060600160405280604081526020016118e46040913960016111d9565b60605f610ee583611354565b6028602282012090915060601c60295b6001811115610f7e57600782600f16118015610f2a57506060838281518110610f2057610f20611831565b016020015160f81c115b15610f6757602060f81b838281518110610f4657610f46611831565b0160200180516001600160f81b0319908116909218909116905f82901a9053505b60049190911c90610f7781611859565b9050610ef5565b50909392505050565b805160609082905f90610f9b90600261186e565b67ffffffffffffffff811115610fb357610fb3611885565b6040519080825280601f01601f191660200182016040528015610fdd576020820181803683370190505b5090505f805b83518110156111c2575f610ffa8583016020015190565b90506b100000000000000400003700600160f883901c1b161561118457601760fa1b848461102781611899565b95508151811061103957611039611831565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b036110a157603160f91b848461107481611899565b95508151811061108657611086611831565b60200101906001600160f81b03191690815f1a9053506111b9565b6001600160f81b03198116600960f81b036110c657601d60fa1b848461107481611899565b6001600160f81b03198116600560f91b036110eb57603760f91b848461107481611899565b6001600160f81b03198116600360fa1b0361111057603360f91b848461107481611899565b6001600160f81b03198116600d60f81b0361113557603960f91b848461107481611899565b6001600160f81b03198116601760fa1b0361115a57601760fa1b848461107481611899565b6001600160f81b03198116601160f91b0361117f57601160f91b848461107481611899565b6111b9565b80848461119081611899565b9550815181106111a2576111a2611831565b60200101906001600160f81b03191690815f1a9053505b50600101610fe3565b50808252603f01601f191681016040529392505050565b606083515f036111f7575060408051602081019091525f8152610595565b5f826112275760038551600461120d919061186e565b6112189060026118b1565b61122291906118c4565b61124c565b60038551600261123791906118b1565b61124191906118c4565b61124c90600461186e565b90505f8167ffffffffffffffff81111561126857611268611885565b6040519080825280601f01601f191660200182016040528015611292576020820181803683370190505b509050600185016020820187885189016020810180515f82525b82841015611307576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506112ac565b9052505085156113485760038851066001811461132b576002811461133e57611346565b603d6001830353603d6002830353611346565b603d60018303535b505b50909695505050505050565b60606103416001600160a01b03831660146060825f61137484600261186e565b61137f9060026118b1565b67ffffffffffffffff81111561139757611397611885565b6040519080825280601f01601f1916602001820160405280156113c1576020820181803683370190505b509050600360fc1b815f815181106113db576113db611831565b60200101906001600160f81b03191690815f1a905350600f60fb1b8160018151811061140957611409611831565b60200101906001600160f81b03191690815f1a9053505f61142b85600261186e565b6114369060016118b1565b90505b60018111156114ad576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061146a5761146a611831565b1a60f81b82828151811061148057611480611831565b60200101906001600160f81b03191690815f1a90535060049290921c916114a681611859565b9050611439565b5081156114d75760405163e22e27eb60e01b81526004810186905260248101859052604401610487565b949350505050565b5f602082840312156114ef575f5ffd5b81356001600160e01b031981168114610595575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105956020830184611506565b80356001600160a01b038116811461155c575f5ffd5b919050565b5f5f60408385031215611572575f5ffd5b61157b83611546565b946020939093013593505050565b5f5f5f6060848603121561159b575f5ffd5b6115a484611546565b92506115b260208501611546565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f906115e690830186611506565b82810360408401526115f88186611506565b9050828103606084015261160c8185611506565b979650505050505050565b5f60208284031215611627575f5ffd5b61059582611546565b5f5f5f5f5f5f5f60e0888a031215611646575f5ffd5b61164f88611546565b965061165d60208901611546565b95506040880135945060608801359350608088013560ff81168114611680575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156116ae575f5ffd5b6116b783611546565b91506116c560208401611546565b90509250929050565b600181811c908216806116e257607f821691505b60208210810361170057634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610595601d830184611706565b6b3d9121b932b0ba37b9111d1160a11b81525f61176e600c830184611706565b601160f91b81526001019392505050565b5f61178a8285611706565b701610112232b9b1b934b83a34b7b7111d1160791b81526117ae6011820185611706565b601160f91b815260010195945050505050565b5f6117cc8285611706565b6c1610112bb2b139b4ba32911d1160991b81526117ae600d820185611706565b5f6117f78285611706565b6a16101124b6b0b3b2911d1160a91b81526117ae600b820185611706565b5f6118208284611706565b607d60f81b81526001019392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8161186757611867611845565b505f190190565b808202811582820484141761034157610341611845565b634e487b7160e01b5f52604160045260245ffd5b5f600182016118aa576118aa611845565b5060010190565b8082018082111561034157610341611845565b5f826118de57634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081c000aa164736f6c634300081c000a", "nonce": "0xb", "chainId": "0x515" }, "additionalContracts": [], "isFixedGasLimit": false - }, - { - "hash": "0x4602ffd6b2503ef1d402059c90840b6180f82c63e621ad84783d2dcfbb4b570f", - "transactionType": "CREATE", - "contractName": "V3Migrator", - "contractAddress": "0x9171c97d7b17278e5fce1996cd5dda682bddaf43", - "function": null, - "arguments": [ - "0x780E96775371e1C4F4cD1524a578B8f1b12ECE58", - "0x4200000000000000000000000000000000000006", - "0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x60e06040523480156200001157600080fd5b5060405162001a0d38038062001a0d833981016040819052620000349162000079565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c052620000c2565b80516001600160a01b03811681146200007457600080fd5b919050565b6000806000606084860312156200008e578283fd5b62000099846200005c565b9250620000a9602085016200005c565b9150620000b9604085016200005c565b90509250925092565b60805160601c60a05160601c60c05160601c6118df6200012e600039806107735280610a3e5280610a785280610aa25280610c4b52508060a552806105765280610c975280610cee5280610dc95280610e2052508061020852806102cf528061082652506118df6000f3fe6080604052600436106100955760003560e01c8063b44a272211610059578063b44a272214610176578063c2e3140a1461018b578063c45a01551461019e578063d44f2bf2146101b3578063f3995c67146101d3576100ed565b806313ead562146100f25780634659a4941461011b5780634aa4a4fc1461012e578063a4a78f0c14610143578063ac9650d814610156576100ed565b366100ed57336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100eb5760405162461bcd60e51b81526004016100e290611728565b60405180910390fd5b005b600080fd5b610105610100366004611325565b6101e6565b604051610112919061164f565b60405180910390f35b6100eb61012936600461137e565b6104da565b34801561013a57600080fd5b50610105610574565b6100eb61015136600461137e565b610598565b6101696101643660046113d7565b610631565b6040516101129190611687565b34801561018257600080fd5b50610105610771565b6100eb61019936600461137e565b610795565b3480156101aa57600080fd5b50610105610824565b3480156101bf57600080fd5b506100eb6101ce366004611536565b610848565b6100eb6101e136600461137e565b610eb4565b6000836001600160a01b0316856001600160a01b03161061020657600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b15801561029157600080fd5b505afa1580156102a5573d6000803e3d6000fd5b505050506040513d60208110156102bb57600080fd5b505190506001600160a01b0381166103f1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b15801561035a57600080fd5b505af115801561036e573d6000803e3d6000fd5b505050506040513d602081101561038457600080fd5b50516040805163f637731d60e01b81526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b1580156103d457600080fd5b505af11580156103e8573d6000803e3d6000fd5b505050506104d2565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561042c57600080fd5b505afa158015610440573d6000803e3d6000fd5b505050506040513d60e081101561045657600080fd5b505190506001600160a01b0381166104d057816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156104b757600080fd5b505af11580156104cb573d6000803e3d6000fd5b505050505b505b949350505050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561055457600080fd5b505af1158015610568573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156105e957600080fd5b505afa1580156105fd573d6000803e3d6000fd5b505050506040513d602081101561061357600080fd5b50511015610629576106298686868686866104da565b505050505050565b60608167ffffffffffffffff8111801561064a57600080fd5b5060405190808252806020026020018201604052801561067e57816020015b60608152602001906001900390816106695790505b50905060005b8281101561076a576000803086868581811061069c57fe5b90506020028101906106ae9190611830565b6040516106bc92919061163f565b600060405180830381855af49150503d80600081146106f7576040519150601f19603f3d011682016040523d82523d6000602084013e6106fc565b606091505b5091509150816107485760448151101561071557600080fd5b6004810190508080602001905181019061072f919061149f565b60405162461bcd60e51b81526004016100e291906116e7565b8084848151811061075557fe5b60209081029190910101525050600101610684565b5092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156107e457600080fd5b505afa1580156107f8573d6000803e3d6000fd5b505050506040513d602081101561080e57600080fd5b5051101561062957610629868686868686610eb4565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061085a60608301604084016115dc565b60ff161161087a5760405162461bcd60e51b81526004016100e2906116fa565b606461088c60608301604084016115dc565b60ff1611156108ad5760405162461bcd60e51b81526004016100e29061174b565b6108ba6020820182611302565b6001600160a01b03166323b872dd336108d66020850185611302565b84602001356040518463ffffffff1660e01b81526004016108f993929190611663565b602060405180830381600087803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094b9190611462565b5060008061095c6020840184611302565b6001600160a01b03166389afcb44306040518263ffffffff1660e01b8152600401610987919061164f565b6040805180830381600087803b1580156109a057600080fd5b505af11580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d891906115b9565b9092509050600060646109fe6109f460608701604088016115dc565b859060ff16610f26565b81610a0557fe5b04905060006064610a1f6109f460608801604089016115dc565b81610a2657fe5b049050610a63610a3c6080870160608801611302565b7f000000000000000000000000000000000000000000000000000000000000000084610f50565b610a9d610a7660a0870160808801611302565b7f000000000000000000000000000000000000000000000000000000000000000083610f50565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663883164566040518061016001604052808a6060016020810190610aee9190611302565b6001600160a01b03168152602001610b0c60a08c0160808d01611302565b6001600160a01b03168152602001610b2a60c08c0160a08d0161154e565b62ffffff168152602001610b4460e08c0160c08d0161147e565b60020b8152602001610b5d6101008c0160e08d0161147e565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610b9b6101608c016101408d01611302565b6001600160a01b031681526020018a61016001358152506040518263ffffffff1660e01b8152600401610bce9190611779565b608060405180830381600087803b158015610be857600080fd5b505af1158015610bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c209190611568565b93509350505085821015610d805783821015610c7157610c71610c496080890160608a01611302565b7f00000000000000000000000000000000000000000000000000000000000000006000610f50565b818603610c866101a089016101808a01611446565b8015610cd257506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610cc760808a0160608b01611302565b6001600160a01b0316145b15610d6457604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610d23908490600401611827565b600060405180830381600087803b158015610d3d57600080fd5b505af1158015610d51573d6000803e3d6000fd5b50505050610d5f338261109e565b610d7e565b610d7e610d7760808a0160608b01611302565b3383611192565b505b84811015610eab5782811015610da357610da3610c4960a0890160808a01611302565b808503610db86101a089016101808a01611446565b8015610e0457506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610df960a08a0160808b01611302565b6001600160a01b0316145b15610e9657604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610e55908490600401611827565b600060405180830381600087803b158015610e6f57600080fd5b505af1158015610e83573d6000803e3d6000fd5b50505050610e91338261109e565b610ea9565b610ea9610d7760a08a0160808b01611302565b505b50505050505050565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561055457600080fd5b6000821580610f4157505081810281838281610f3e57fe5b04145b610f4a57600080fd5b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1781529251825160009485949389169392918291908083835b60208310610fcc5780518252601f199092019160209182019101610fad565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461102e576040519150601f19603f3d011682016040523d82523d6000602084013e611033565b606091505b5091509150818015611061575080511580611061575080806020019051602081101561105e57600080fd5b50515b611097576040805162461bcd60e51b8152602060048201526002602482015261534160f01b604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106110ea5780518252601f1990920191602091820191016110cb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461114c576040519150601f19603f3d011682016040523d82523d6000602084013e611151565b606091505b505090508061118d576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b6020831061120e5780518252601f1990920191602091820191016111ef565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611270576040519150601f19603f3d011682016040523d82523d6000602084013e611275565b606091505b50915091508180156112a35750805115806112a357508080602001905160208110156112a057600080fd5b50515b611097576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b803562ffffff811681146112ec57600080fd5b919050565b803560ff811681146112ec57600080fd5b600060208284031215611313578081fd5b813561131e816118ac565b9392505050565b6000806000806080858703121561133a578283fd5b8435611345816118ac565b93506020850135611355816118ac565b9250611363604086016112d9565b91506060850135611373816118ac565b939692955090935050565b60008060008060008060c08789031215611396578182fd5b86356113a1816118ac565b955060208701359450604087013593506113bd606088016112f1565b92506080870135915060a087013590509295509295509295565b600080602083850312156113e9578182fd5b823567ffffffffffffffff80821115611400578384fd5b818501915085601f830112611413578384fd5b813581811115611421578485fd5b8660208083028501011115611434578485fd5b60209290920196919550909350505050565b600060208284031215611457578081fd5b813561131e816118c4565b600060208284031215611473578081fd5b815161131e816118c4565b60006020828403121561148f578081fd5b81358060020b811461131e578182fd5b6000602082840312156114b0578081fd5b815167ffffffffffffffff808211156114c7578283fd5b818401915084601f8301126114da578283fd5b8151818111156114e657fe5b604051601f8201601f19168101602001838111828210171561150457fe5b60405281815283820160200187101561151b578485fd5b61152c82602083016020870161187c565b9695505050505050565b60006101a08284031215611548578081fd5b50919050565b60006020828403121561155f578081fd5b61131e826112d9565b6000806000806080858703121561157d578384fd5b8451935060208501516fffffffffffffffffffffffffffffffff811681146115a3578384fd5b6040860151606090960151949790965092505050565b600080604083850312156115cb578182fd5b505080516020909101519092909150565b6000602082840312156115ed578081fd5b61131e826112f1565b6001600160a01b03169052565b6000815180845261161b81602086016020860161187c565b601f01601f19169290920160200192915050565b60020b9052565b62ffffff169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156116da57603f198886030184526116c8858351611603565b945092850192908501906001016116ac565b5092979650505050505050565b60006020825261131e6020830184611603565b60208082526014908201527314195c98d95b9d1859d9481d1bdbc81cdb585b1b60621b604082015260600190565b6020808252600990820152684e6f7420574554483960b81b604082015260600190565b60208082526014908201527350657263656e7461676520746f6f206c6172676560601b604082015260600190565b60006101608201905061178d8284516115f6565b602083015161179f60208401826115f6565b5060408301516117b26040840182611636565b5060608301516117c5606084018261162f565b5060808301516117d8608084018261162f565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611816828501826115f6565b505061014092830151919092015290565b90815260200190565b6000808335601e19843603018112611846578283fd5b83018035915067ffffffffffffffff821115611860578283fd5b60200191503681900382131561187557600080fd5b9250929050565b60005b8381101561189757818101518382015260200161187f565b838111156118a6576000848401525b50505050565b6001600160a01b03811681146118c157600080fd5b50565b80151581146118c157600080fdfea164736f6c6343000706000a000000000000000000000000780e96775371e1c4f4cd1524a578b8f1b12ece5800000000000000000000000042000000000000000000000000000000000000060000000000000000000000004801ed4f1b57559f9071413d9d99b607316fd1eb", - "nonce": "0xc", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x7c1be94d3a1c61ed3cdd80b420b88cab0913daff6385b12971d068735530cb91", - "transactionType": "CREATE", - "contractName": "SwapRouter", - "contractAddress": "0xbeeabec0220a09048dbe86790b59510a2e1ff5d2", - "function": null, - "arguments": [ - "0x780E96775371e1C4F4cD1524a578B8f1b12ECE58", - "0x4200000000000000000000000000000000000006" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x60c06040526000196000553480156200001757600080fd5b5060405162002778380380620027788339810160408190526200003a9162000076565b6001600160601b0319606092831b8116608052911b1660a052620000ad565b80516001600160a01b03811681146200007157600080fd5b919050565b6000806040838503121562000089578182fd5b620000948362000059565b9150620000a46020840162000059565b90509250929050565b60805160601c60a05160601c61266f620001096000398061011252806104c752806105b2528061063f528061067f528061076a5280611721528061176752806117db525080610ba3528061109e52806118b6525061266f6000f3fe6080604052600436106101025760003560e01c8063c04b8d5911610095578063df2ab5bb11610064578063df2ab5bb14610284578063e0e189a014610297578063f28c0498146102aa578063f3995c67146102bd578063fa461e33146102d057610172565b8063c04b8d5914610236578063c2e3140a14610249578063c45a01551461025c578063db3e21981461027157610172565b80634aa4a4fc116100d15780634aa4a4fc146101ce5780639b2c0a37146101f0578063a4a78f0c14610203578063ac9650d81461021657610172565b806312210e8a14610177578063414bf3891461017f5780634659a494146101a857806349404b7c146101bb57610172565b3661017257336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610170576040805162461bcd60e51b81526020600482015260096024820152684e6f7420574554483960b81b604482015290519081900360640190fd5b005b600080fd5b6101706102f0565b61019261018d36600461222a565b610302565b60405161019f9190612583565b60405180910390f35b6101706101b6366004611fa8565b610429565b6101706101c9366004612331565b6104c3565b3480156101da57600080fd5b506101e361063d565b60405161019f9190612420565b6101706101fe366004612360565b610661565b610170610211366004611fa8565b61082d565b610229610224366004612008565b6108be565b60405161019f919061247a565b61019261024436600461217f565b6109fe565b610170610257366004611fa8565b610b12565b34801561026857600080fd5b506101e3610ba1565b61019261027f36600461222a565b610bc5565b610170610292366004611f09565b610cec565b6101706102a5366004611f4a565b610dca565b6101926102b8366004612246565b610ef1565b6101706102cb366004611fa8565b610fe7565b3480156102dc57600080fd5b506101706102eb36600461209a565b611059565b471561030057610300334761116c565b565b600081608001358061031261125b565b111561035b576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b6103f460a08401356103736080860160608701611ee6565b610384610100870160e08801611ee6565b604080518082019091528061039c60208a018a611ee6565b6103ac60608b0160408c0161230e565b6103bc60408c0160208d01611ee6565b6040516020016103ce939291906123d5565b6040516020818303038152906040528152602001336001600160a01b031681525061125f565b91508260c001358210156104235760405162461bcd60e51b815260040161041a90612519565b60405180910390fd5b50919050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561053257600080fd5b505afa158015610546573d6000803e3d6000fd5b505050506040513d602081101561055c57600080fd5b50519050828110156105aa576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e7420574554483960701b604482015290519081900360640190fd5b8015610638577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b50505050610638828261116c565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610672575060648211155b61067b57600080fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d602081101561071457600080fd5b5051905084811015610762576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e7420574554483960701b604482015290519081900360640190fd5b8015610826577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156107ce57600080fd5b505af11580156107e2573d6000803e3d6000fd5b5050505060006127106107fe85846113b190919063ffffffff16565b8161080557fe5b049050801561081857610818838261116c565b6108248582840361116c565b505b5050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d60208110156108a857600080fd5b5051101561082457610824868686868686610429565b60608167ffffffffffffffff811180156108d757600080fd5b5060405190808252806020026020018201604052801561090b57816020015b60608152602001906001900390816108f65790505b50905060005b828110156109f7576000803086868581811061092957fe5b905060200281019061093b919061258c565b604051610949929190612410565b600060405180830381855af49150503d8060008114610984576040519150601f19603f3d011682016040523d82523d6000602084013e610989565b606091505b5091509150816109d5576044815110156109a257600080fd5b600481019050808060200190518101906109bc9190612115565b60405162461bcd60e51b815260040161041a91906124da565b808484815181106109e257fe5b60209081029190910101525050600101610911565b5092915050565b6000816040015180610a0e61125b565b1115610a57576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b335b6000610a6885600001516113db565b9050610ab4856060015182610a81578660200151610a83565b305b60006040518060400160405280610a9d8b600001516113e7565b8152602001876001600160a01b031681525061125f565b60608601528015610ad4578451309250610acd906113f6565b8552610ae1565b8460600151935050610ae7565b50610a59565b8360800151831015610b0b5760405162461bcd60e51b815260040161041a90612519565b5050919050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015610b6157600080fd5b505afa158015610b75573d6000803e3d6000fd5b505050506040513d6020811015610b8b57600080fd5b5051101561082457610824868686868686610fe7565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000816080013580610bd561125b565b1115610c1e576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b610cba60a0840135610c366080860160608701611ee6565b610c47610100870160e08801611ee6565b6040518060400160405280886020016020810190610c659190611ee6565b610c7560608b0160408c0161230e565b610c8260208c018c611ee6565b604051602001610c94939291906123d5565b6040516020818303038152906040528152602001336001600160a01b031681525061140d565b91508260c00135821115610ce05760405162461bcd60e51b815260040161041a906124ed565b50600019600055919050565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d3b57600080fd5b505afa158015610d4f573d6000803e3d6000fd5b505050506040513d6020811015610d6557600080fd5b5051905082811015610db3576040805162461bcd60e51b815260206004820152601260248201527124b739bab33334b1b4b2b73a103a37b5b2b760711b604482015290519081900360640190fd5b8015610dc457610dc4848383611588565b50505050565b600082118015610ddb575060648211155b610de457600080fd5b6000856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d6020811015610e5d57600080fd5b5051905084811015610eab576040805162461bcd60e51b815260206004820152601260248201527124b739bab33334b1b4b2b73a103a37b5b2b760711b604482015290519081900360640190fd5b8015610824576000612710610ec083866113b1565b81610ec757fe5b0490508015610edb57610edb878483611588565b610ee88786838503611588565b50505050505050565b6000816040013580610f0161125b565b1115610f4a576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b610fbd6060840135610f626040860160208701611ee6565b6040805180820190915260009080610f7a898061258c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360209091015261140d565b5060005491508260800135821115610ce05760405162461bcd60e51b815260040161041a906124ed565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156104a357600080fd5b60008413806110685750600083135b61107157600080fd5b600061107f8284018461227e565b9050600080600061109384600001516116cf565b9250925092506110c57f0000000000000000000000000000000000000000000000000000000000000000848484611700565b5060008060008a136110ec57846001600160a01b0316846001600160a01b03161089611103565b836001600160a01b0316856001600160a01b0316108a5b9150915081156111225761111d858760200151338461171f565b6104b7565b855161112d906113db565b1561115257855161113d906113f6565b865261114c813360008961140d565b506104b7565b806000819055508394506104b7858760200151338461171f565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106111b85780518252601f199092019160209182019101611199565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461121a576040519150601f19603f3d011682016040523d82523d6000602084013e61121f565b606091505b5050905080610638576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b4290565b60006001600160a01b038416611273573093505b600080600061128585600001516116cf565b919450925090506001600160a01b03808316908416106000806112a98686866118af565b6001600160a01b031663128acb088b856112c28f6118ed565b6001600160a01b038e16156112d7578d6112fd565b876112f65773fffd8963efd1fc6a506488495d951d5263988d256112fd565b6401000276a45b8d60405160200161130e9190612546565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161133d959493929190612434565b6040805180830381600087803b15801561135657600080fd5b505af115801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e9190612077565b915091508261139d578161139f565b805b6000039b9a5050505050505050505050565b60008215806113cc575050818102818382816113c957fe5b04145b6113d557600080fd5b92915050565b8051604211155b919050565b60606113d5826000602b611903565b80516060906113d590839060179060161901611903565b60006001600160a01b038416611421573093505b600080600061143385600001516116cf565b919450925090506001600160a01b03808416908316106000806114578587866118af565b6001600160a01b031663128acb088b856114708f6118ed565b6000036001600160a01b038e1615611488578d6114ae565b876114a75773fffd8963efd1fc6a506488495d951d5263988d256114ae565b6401000276a45b8d6040516020016114bf9190612546565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016114ee959493929190612434565b6040805180830381600087803b15801561150757600080fd5b505af115801561151b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153f9190612077565b9150915060008361155457818360000361155a565b82826000035b90985090506001600160a01b038a16611579578b811461157957600080fd5b50505050505050949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106116045780518252601f1990920191602091820191016115e5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611666576040519150601f19603f3d011682016040523d82523d6000602084013e61166b565b606091505b5091509150818015611699575080511580611699575080806020019051602081101561169657600080fd5b50515b610826576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b600080806116dd8482611a54565b92506116ea846014611b04565b90506116f7846017611a54565b91509193909250565b600061171685611711868686611bab565b611c01565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156117605750804710155b15611882577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156117c057600080fd5b505af11580156117d4573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050506040513d602081101561187a57600080fd5b50610dc49050565b6001600160a01b0383163014156118a35761189e848383611588565b610dc4565b610dc484848484611c24565b60006118e57f00000000000000000000000000000000000000000000000000000000000000006118e0868686611bab565b611d74565b949350505050565b6000600160ff1b82106118ff57600080fd5b5090565b60608182601f01101561194e576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611996576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b818301845110156119e2576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015611a015760405191506000825260208201604052611a4b565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611a3a578051835260209283019201611a22565b5050858452601f01601f1916604052505b50949350505050565b600081826014011015611aa3576040805162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015290519081900360640190fd5b8160140183511015611af4576040805162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015290519081900360640190fd5b500160200151600160601b900490565b600081826003011015611b52576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b604482015290519081900360640190fd5b8160030183511015611ba2576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016003015190565b611bb3611e58565b826001600160a01b0316846001600160a01b03161115611bd1579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000611c0d8383611d74565b9050336001600160a01b038216146113d557600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000948594938a169392918291908083835b60208310611ca85780518252601f199092019160209182019101611c89565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d0a576040519150601f19603f3d011682016040523d82523d6000602084013e611d0f565b606091505b5091509150818015611d3d575080511580611d3d5750808060200190516020811015611d3a57600080fd5b50515b610824576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b031610611d9c57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b80356113e28161264a565b600082601f830112611e93578081fd5b8135611ea6611ea1826125fc565b6125d8565b818152846020838601011115611eba578283fd5b816020850160208301379081016020019190915292915050565b60006101008284031215610423578081fd5b600060208284031215611ef7578081fd5b8135611f028161264a565b9392505050565b600080600060608486031215611f1d578182fd5b8335611f288161264a565b9250602084013591506040840135611f3f8161264a565b809150509250925092565b600080600080600060a08688031215611f61578081fd5b8535611f6c8161264a565b9450602086013593506040860135611f838161264a565b9250606086013591506080860135611f9a8161264a565b809150509295509295909350565b60008060008060008060c08789031215611fc0578081fd5b8635611fcb8161264a565b95506020870135945060408701359350606087013560ff81168114611fee578182fd5b9598949750929560808101359460a0909101359350915050565b6000806020838503121561201a578182fd5b823567ffffffffffffffff80821115612031578384fd5b818501915085601f830112612044578384fd5b813581811115612052578485fd5b8660208083028501011115612065578485fd5b60209290920196919550909350505050565b60008060408385031215612089578182fd5b505080516020909101519092909150565b600080600080606085870312156120af578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156120d4578384fd5b818701915087601f8301126120e7578384fd5b8135818111156120f5578485fd5b886020828501011115612106578485fd5b95989497505060200194505050565b600060208284031215612126578081fd5b815167ffffffffffffffff81111561213c578182fd5b8201601f8101841361214c578182fd5b805161215a611ea1826125fc565b81815285602083850101111561216e578384fd5b61171682602083016020860161261e565b600060208284031215612190578081fd5b813567ffffffffffffffff808211156121a7578283fd5b9083019060a082860312156121ba578283fd5b60405160a0810181811083821117156121cf57fe5b6040528235828111156121e0578485fd5b6121ec87828601611e83565b8252506121fb60208401611e78565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b6000610100828403121561223c578081fd5b611f028383611ed4565b600060208284031215612257578081fd5b813567ffffffffffffffff81111561226d578182fd5b820160a08185031215611f02578182fd5b60006020828403121561228f578081fd5b813567ffffffffffffffff808211156122a6578283fd5b90830190604082860312156122b9578283fd5b6040516040810181811083821117156122ce57fe5b6040528235828111156122df578485fd5b6122eb87828601611e83565b825250602083013592506122fe8361264a565b6020810192909252509392505050565b60006020828403121561231f578081fd5b813562ffffff81168114611f02578182fd5b60008060408385031215612343578182fd5b8235915060208301356123558161264a565b809150509250929050565b60008060008060808587031215612375578182fd5b8435935060208501356123878161264a565b925060408501359150606085013561239e8161264a565b939692955090935050565b600081518084526123c181602086016020860161261e565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b6001600160e81b0319166014820152921b166017820152602b0190565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a06080820181905260009061246f908301846123a9565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156124cd57603f198886030184526124bb8583516123a9565b9450928501929085019060010161249f565b5092979650505050505050565b600060208252611f0260208301846123a9565b602080825260129082015271151bdbc81b5d58da081c995c5d595cdd195960721b604082015260600190565b602080825260139082015272151bdbc81b1a5d1d1b19481c9958d95a5d9959606a1b604082015260600190565b60006020825282516040602084015261256260608401826123a9565b602094909401516001600160a01b0316604093909301929092525090919050565b90815260200190565b6000808335601e198436030181126125a2578283fd5b83018035915067ffffffffffffffff8211156125bc578283fd5b6020019150368190038213156125d157600080fd5b9250929050565b60405181810167ffffffffffffffff811182821017156125f457fe5b604052919050565b600067ffffffffffffffff82111561261057fe5b50601f01601f191660200190565b60005b83811015612639578181015183820152602001612621565b83811115610dc45750506000910152565b6001600160a01b038116811461265f57600080fd5b5056fea164736f6c6343000706000a000000000000000000000000780e96775371e1c4f4cd1524a578b8f1b12ece580000000000000000000000004200000000000000000000000000000000000006", - "nonce": "0xd", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x80dc9fcf2bf641b132aa848faf58fa1b2ae325bbe52ce49b2b339d8eaf35f392", - "transactionType": "CREATE2", - "contractName": "PoolManager", - "contractAddress": "0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95", - "function": null, - "arguments": [ - "0x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A04" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a03460a057601f615e8238819003918201601f19168301916001600160401b0383118484101760a45780849260209460405283398101031260a057516001600160a01b0381169081900360a0575f80546001600160a01b0319168217815560405191907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a330608052615dc990816100b98239608051816135260152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e14612cd55750806301ffc9a714612c16578063095bcdb614612b6c5780630b0d9c0914612ae057806311da60b414612a85578063156e29f6146129d55780631e2eaeaf1461299b578063234266d7146126fc5780632d7713891461265157806335fd631a146125dd5780633dd45adb14612579578063426a8493146124f557806348c894911461226a5780635275965114612152578063558a72971461207b578063598af9e714611fe35780635a6bcfda1461144f5780636276cbbe14610f965780637e87ce7d14610e5957806380f0b44c14610d875780638161b87414610c315780638da5cb5b14610be157806397e8cd4e14610b7e5780639bf6645f14610b31578063a584119414610a66578063b6363cf2146109d5578063dbd035ff1461097f578063f02de3b21461092e578063f135baaa146108f4578063f2fde38b14610848578063f3cd914c146104ff578063f5298aca146103345763fe99049a14610186575f80fd5b346103305760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576101bd612d3f565b6101c5612d62565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961027973ffffffffffffffffffffffffffffffffffffffff80606435951693843314158061030d575b610287575b845f52600460205260405f20875f5260205260405f2061023a878254612fed565b90551693845f52600460205260405f20865f5260205260405f2061025f828254612ffa565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102da575b5050610219565b6102e391612fed565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102d3565b50845f52600360205260405f208233165f5260205260ff60405f20541615610214565b5f80fd5b346103305761034236612d85565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f9516956103bb6103b3866130aa565b3390896130f0565b169233841415806104a0575b6103f2575b8385526004602052604085208686526020526040852061025f828254612fed565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610459575b50506103cc565b61046291612fed565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610452565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103c7565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610330576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761053836612e81565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610330576040519061056f82612df6565b60a4358015158103610330578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361033057604084019182526101043567ffffffffffffffff8111610330576105d0903690600401612f4d565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761060261350f565b51156108205760a0822092835f52600660205260405f209061062382613576565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff169361064e94613b44565b90949195606088015160020b908b511515905173ffffffffffffffffffffffffffffffffffffffff1691604051986106858a612e12565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107a2986106db61078f9860209d6108005773ffffffffffffffffffffffffffffffffffffffff8b511695614959565b9492968291926107d3575b505073ffffffffffffffffffffffffffffffffffffffff845116938e6fffffffffffffffffffffffffffffffff60408301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a5116613d81565b809491946107aa575b5050823391613652565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6107cc9251169083613652565b8480610798565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106e6565b73ffffffffffffffffffffffffffffffffffffffff8e8c01511695614959565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fffffffffffffffffffffffff00000000000000000000000000000000000000006108a0612d3f565b73ffffffffffffffffffffffffffffffffffffffff5f54916108c58284163314613007565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004355c5f5260205ff35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b346103305761098d36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355481520191019084838210156109cc5750602080916109b0565b60408186030190f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a0c612d3f565b73ffffffffffffffffffffffffffffffffffffffff610a29612d62565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a9d612d3f565b73ffffffffffffffffffffffffffffffffffffffff81169081610ae15750505f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d005b610aea90613a92565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d005b3461033057610b3f36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c81520191019084838210156109cc575060208091610b62565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff610bca612d3f565b165f526001602052602060405f2054604051908152f35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610c68612d3f565b610c70612d62565b60443573ffffffffffffffffffffffffffffffffffffffff600254163303610d5f5773ffffffffffffffffffffffffffffffffffffffff821680151580610d1f575b610cf7576020936107a29280610cef5750815f526001855260405f20549384925b5f526001865260405f20610ce8848254612fed565b90556131f8565b938492610cd3565b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b508073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c1614610cb2565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610dbe612d3f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610e146024356130aa565b9081600f0b03610e3157610e2f9133915f03600f0b906130f0565b005b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610e9136612e81565b610e99612e6f565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610d5f57623e900062fff0008316106103e9610fff8416101615610f6557602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610f0f81613576565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610fce36612e81565b60a4359073ffffffffffffffffffffffffffffffffffffffff821680830361033057610ff861350f565b6060820191825160020b617fff81136114245750825160020b600181126113f9575073ffffffffffffffffffffffffffffffffffffffff815116602082019073ffffffffffffffffffffffffffffffffffffffff825116808210156113c2575050608082019073ffffffffffffffffffffffffffffffffffffffff82511690604084019161108c62ffffff845116826139b7565b1561139757506110a162ffffff835116613a75565b96835173ffffffffffffffffffffffffffffffffffffffff8116908133036112e0575b505060a0852090815f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff166112b8576020997fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438927cffffff000000000000000000000000000000000000000000000000000061114260a0946145fc565b9260d01b168a76ffffff000000000000000000000000000000000000000084861b161717905562ffffff73ffffffffffffffffffffffffffffffffffffffff808a5116965116965116995160020b73ffffffffffffffffffffffffffffffffffffffff885116906040519b8c528c8c015260408b01528860608b015260020b98896080820152a45173ffffffffffffffffffffffffffffffffffffffff8116908133036111f4575b8585604051908152f35b61100016611203575b806111ea565b6112af9261128d604051937f6fe7e6eb0000000000000000000000000000000000000000000000000000000088860152336024860152604485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e48301528361010483015261010482526112aa61012483612e2e565b613f25565b508280806111fd565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b612000166112ef575b806110c4565b61139090604051907fdc98354e00000000000000000000000000000000000000000000000000000000602083015233602483015261137a604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8860e483015260e482526112aa61010483612e2e565b50886112e9565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f6e6c983000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b34610330576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761148836612e81565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261033057604051906114bf82612dda565b60a4358060020b810361033057825260c4358060020b810361033057602083015260e43560408301526101043560608301526101243567ffffffffffffffff811161033057611512903690600401612f4d565b90927fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761154361350f565b60a0832093845f52600660205260405f20608052611562608051613576565b608084015173ffffffffffffffffffffffffffffffffffffffff811690813303611ede575b5050815160020b92602083015160020b916115a56040850151613785565b93606087015160020b9760608201516040519960c08b018b811067ffffffffffffffff821117611eb157604052338b528860208c01528660408c015287600f0b60608c015260808b015260a08a01525f9185881215611e7a577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611e4e57620d89e88613611e22576040519261163c84612dda565b5f84525f60208501525f60408501525f606085015287600f0b611b25575b600460805101978960020b5f528860205260405f20988860020b5f5260205260405f206080515460a01c60020b8b81125f14611acf575060028060018c0154600184015490039b015491015490039b5b60a073ffffffffffffffffffffffffffffffffffffffff825116910151906040519160268301528960068301528b600383015281525f603a600c83012091816040820152816020820152525f5260066080510160205260405f20976fffffffffffffffffffffffffffffffff8954169982600f0b155f14611a72578a15611a4a5761176f61176960409f9b61184e9c6118609e5b60018301956117616002611755848a548503615703565b95019283548503615703565b9655556130aa565b916130aa565b6fffffffffffffffffffffffffffffffff169060801b179a8b965f84600f0b126119dc575b5082600f0b611898575b5050506117c46117b58560801d8360801d01613785565b9185600f0b90600f0b01613785565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8c8401516060850151918e5194855260208501528d84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38873ffffffffffffffffffffffffffffffffffffffff60808201511661385b565b8094919461186c575b50833391613652565b82519182526020820152f35b6118929073ffffffffffffffffffffffffffffffffffffffff6080840151169083613652565b85611857565b60805154929350909173ffffffffffffffffffffffffffffffffffffffff81169060a01c60020b828112156118fe575050906118f2926118e76118dd6118ed94614158565b91600f0b92614158565b90614527565b613785565b60801b5b8b808061179e565b92809193125f146119a95761193d9161192a6118ed6118ed9361192488600f0b91614158565b87614527565b9361193886600f0b92614158565b6144ca565b6fffffffffffffffffffffffffffffffff169060801b17906fffffffffffffffffffffffffffffffff61197c60036080510192600f0b8284541661456e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790556118f6565b906118ed9250926119bf6118dd6119c595614158565b906144ca565b6fffffffffffffffffffffffffffffffff166118f6565b808f9151611a1e575b01516119f2575b8e611794565b611a198260805160049160020b5f52016020525f6002604082208281558260018201550155565b6119ec565b611a458360805160049160020b5f52016020525f6002604082208281558260018201550155565b6119e5565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b61176f61176960409f9b61184e9c6118609e6fffffffffffffffffffffffffffffffff611aa289600f0b8361456e565b167fffffffffffffffffffffffffffffffff0000000000000000000000000000000084541617835561173e565b9099908913611af55760028060018c0154600184015490039b015491015490039b6116aa565b9860026001608051015460018c01549003600183015490039a81806080510154910154900391015490039b6116aa565b6004608051018960020b5f5280602052898960405f20611b7e81546fffffffffffffffffffffffffffffffff611b6181831695600f0b8661456e565b16931594858515141595611dee575b508d600f0b9060801d613d3a565b60801b82179055602087015285528760020b5f5260205260405f208054906fffffffffffffffffffffffffffffffff8216611bbc8b600f0b8261456e565b901592836fffffffffffffffffffffffffffffffff831615141593611dc1575b8b600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217611d9457826fffffffffffffffffffffffffffffffff935060801b83831617905516606086015260408501525f88600f0b1215611ca1575b8351611c85575b60408401511561165a57611c8060808c015160020b8860056080510161410c565b61165a565b611c9c60808c015160020b8a60056080510161410c565b611c5f565b60808b015160020b6fffffffffffffffffffffffffffffffff600181602088015116925f817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276180712817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618050390620d89e8050301810416809111611d68576fffffffffffffffffffffffffffffffff6060860151161115611c5857867fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6080515460a01c60020b8b13611bdc57600160805101546001840155600260805101546002840155611bdc565b6080515460a01c60020b1215611e05575b8e611b70565b600160805101546001840155600260805101546002840155611dff565b857f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60448887604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f604085015113808091611fd6575b15611f6b5750506040517f259982e5000000000000000000000000000000000000000000000000000000006020820152611f62916112aa82611f368887898c33602487016136cb565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612e2e565b505b8580611587565b159081611fc8575b50611f7f575b50611f64565b6040517f21d0ee70000000000000000000000000000000000000000000000000000000006020820152611fc1916112aa82611f368887898c33602487016136cb565b5085611f79565b610200915016151587611f73565b5061080082161515611eed565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761201a612d3f565b73ffffffffffffffffffffffffffffffffffffffff612037612d62565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576120b2612d3f565b602435908115158092036103305773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761218a36612e81565b612192612e6f565b906280000062ffffff60408301511614801590612246575b61221e5760a0906121ba8361368e565b205f52600660205260405f20906121d082613576565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09190911b7cffffff000000000000000000000000000000000000000000000000000016179055005b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff6080820151163314156121aa565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043567ffffffffffffffff8111610330576122b9903690600401612f4d565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c6124cd57612345915f9160017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d60405193849283927f91dd734600000000000000000000000000000000000000000000000000000000845260206004850152602484019161306c565b038183335af19081156124c2575f9161241a575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c6123f25760406020915f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835194859381855280519182918282880152018686015e5f85828601015201168101030190f35b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90503d805f833e61242b8183612e2e565b8101906020818303126103305780519067ffffffffffffffff8211610330570181601f820112156103305780519067ffffffffffffffff8211611eb1576040519261249e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612e2e565b8284526020838301011161033057815f9260208093018386015e8301015281612359565b6040513d5f823e3d90fd5b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305773ffffffffffffffffffffffffffffffffffffffff61251836612d85565b91929092335f52600560205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576125ab612d3f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576107a260209161342d565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576024356004356040519160408360208152826020820152019060051b8301916001602060408501935b835481520191019084838210156109cc57506020600191612635565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff61269d612d3f565b6126ab825f54163314613007565b16807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b34610330576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761273536612e81565b60c4359060a43560e43567ffffffffffffffff81116103305761275c903690600401612f4d565b9190937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761278e61350f565b60a0842094855f52600660205260405f20946127a986613576565b60808101805173ffffffffffffffffffffffffffffffffffffffff811690813303612943575b50506fffffffffffffffffffffffffffffffff60038801541697881561291b576020986127fb876130aa565b5f03612806876130aa565b5f036fffffffffffffffffffffffffffffffff169060801b179887612907575b866128f2575b5050612839338985613652565b60405190868252858a8301527f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb60403393a3519273ffffffffffffffffffffffffffffffffffffffff841693843303612897575b8888604051908152f35b6010166128a5575b8061288d565b6128e6956112aa93611f36926040519788957fe1b4af69000000000000000000000000000000000000000000000000000000008d88015233602488016135bc565b5082808080808061289f565b600201908660801b048154019055898061282c565b60018101828960801b048154019055612826565b7fa74f97ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b602016612951575b806127cf565b6040517fb6a8b0fa000000000000000000000000000000000000000000000000000000006020820152612994916112aa82611f368b898b8d8b33602488016135bc565b508861294b565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057600435545f5260205ff35b34610330576129e336612d85565b907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f941695612a62612a55876130aa565b8603600f0b3390896130f0565b16938484526004602052604084208685526020526040842061025f828254612ffa565b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75760206107a23361342d565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612b17612d3f565b612b1f612d62565b604435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757610e2f92612b67612b5a846130aa565b5f03600f0b3390836130f0565b6131f8565b346103305773ffffffffffffffffffffffffffffffffffffffff612b8f36612d85565b91929092335f52600460205260405f20845f5260205260405f20612bb4848254612fed565b90551690815f52600460205260405f20835f5260205260405f20612bd9828254612ffa565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288599181908101610279565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361033057807f01ffc9a70000000000000000000000000000000000000000000000000000000060209214908115612cab575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482612ca0565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760209073ffffffffffffffffffffffffffffffffffffffff612d24612d3f565b165f526004825260405f206024355f52825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126103305760043573ffffffffffffffffffffffffffffffffffffffff8116810361033057906024359060443590565b6080810190811067ffffffffffffffff821117611eb157604052565b6060810190811067ffffffffffffffff821117611eb157604052565b60a0810190811067ffffffffffffffff821117611eb157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611eb157604052565b60a4359062ffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126103305760405190612eb882612e12565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361033057815260243573ffffffffffffffffffffffffffffffffffffffff8116810361033057602082015260443562ffffff811681036103305760408201526064358060020b81036103305760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036103305760800152565b9181601f840112156103305782359167ffffffffffffffff8311610330576020838186019501011161033057565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103305760043567ffffffffffffffff811161033057826023820112156103305780600401359267ffffffffffffffff84116103305760248460051b83010111610330576024019190565b91908203918211611d9457565b91908201809211611d9457565b1561300e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6f800000000000000000000000000000008110156130c857600f0b90565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190600f0b9182156131f357613126919073ffffffffffffffffffffffffffffffffffffffff8092165f521660205260405f2090565b613132815c9283613b29565b80915d6131a357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d5b565b156131aa57565b60017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d565b505050565b90919073ffffffffffffffffffffffffffffffffffffffff811690816132ea5750505f80808093855af11561322a5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60205f60448194968260409573ffffffffffffffffffffffffffffffffffffffff988751998a947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156133635750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c919073ffffffffffffffffffffffffffffffffffffffff8316613482576131a19034935b61347c856130aa565b906130f0565b346134e7576131a1906134be7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c6134b986613a92565b612fed565b935f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d613473565b7fb0ec849e000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361354e57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5473ffffffffffffffffffffffffffffffffffffffff161561359457565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b91926136376101209473ffffffffffffffffffffffffffffffffffffffff61364f999794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c083015260e082015281610100820152019161306c565b90565b9073ffffffffffffffffffffffffffffffffffffffff60206131a1949361368185848351168660801d906130f0565b01511690600f0b906130f0565b62ffffff16620f424081116136a05750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9061364f95936137486101609473ffffffffffffffffffffffffffffffffffffffff61377794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08501526020820151900b60e0840152604081015161010084015260600151610120830152565b81610140820152019161306c565b9081600f0b9182036130c857565b926138419061381261364f99979473ffffffffffffffffffffffffffffffffffffffff6101a09895168752602087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08701526020820151900b60e0860152604081015161010086015260600151610120850152565b61014083015261016082015281610180820152019161306c565b939590919296945f9673ffffffffffffffffffffffffffffffffffffffff861633146139ac57885f6040870151135f1461393b5761040087166138a2575b50505050505050565b61392e9799985092613927969594926138ef9261391b956040519788967f9f063efc0000000000000000000000000000000000000000000000000000000060208901523360248901613793565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612e2e565b6002821615159161459f565b80926145bf565b915f808080808080613899565b95949392919061010086166139535750505050505050565b61392e979950869850916138ef916139a09493613927986040519788967f6c2bbe7e0000000000000000000000000000000000000000000000000000000060208901523360248901613793565b6001821615159161459f565b505f96505050505050565b608081161580613a69575b613a3f57604081161580613a5d575b613a3f5761040081161580613a51575b613a3f5761010081161580613a45575b613a3f5773ffffffffffffffffffffffffffffffffffffffff8116613a1f575062ffffff1662800000141590565b613fff161590811591613a30575090565b62800000915062ffffff161490565b50505f90565b506001811615156139f1565b506002811615156139e1565b506004811615156139d1565b506008811615156139c2565b6280000062ffffff821614613a8d5761364f8161368e565b505f90565b73ffffffffffffffffffffffffffffffffffffffff1680613ab257504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9081156124c2575f91613afa575090565b90506020813d602011613b21575b81613b1560209383612e2e565b81010312610330575190565b3d9150613b08565b9190915f8382019384129112908015821691151617611d9457565b6020830151955f9586959194913373ffffffffffffffffffffffffffffffffffffffff851614613d2d5760808416613b7e575b5050505050565b613c66926138ef613c6092613c4c946040519586947f575e24b4000000000000000000000000000000000000000000000000000000006020870152336024870152613c16604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560e487015260208101516101048701526040015173ffffffffffffffffffffffffffffffffffffffff16610124860152565b61014061014485015261016484019161306c565b82613f25565b916060835103613d05576040015162ffffff166280000014613cf9575b600816613c94575b80808080613b77565b604001519250608083901d600f0b8015613c8b57613cb5905f861295613b29565b9315613cf1575f84135b613cc9575f613c8b565b7ffa0b71d6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f8412613cbf565b60608201519350613c83565b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f965086955050505050565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317611d9457565b9196959394929473ffffffffffffffffffffffffffffffffffffffff83163314613f18578460801d94600f0b938860408516613e40575b50505050505f9481600f0b15801590613e34575b613dd8575b5050509190565b613e0f9395505f60208201511290511515145f14613e17576fffffffffffffffffffffffffffffffff169060801b175b80936145bf565b5f8080613dd1565b906fffffffffffffffffffffffffffffffff169060801b17613e08565b5082600f0b1515613dcc565b613efc613f08946138ef6118ed95613f0e999895613ee1613c16966040519788967fb47b2fb1000000000000000000000000000000000000000000000000000000006020890152336024890152604488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8c61014485015261016061016485015261018484019161306c565b6004821615159161459f565b90613d3a565b5f80808088613db8565b5050505050909150905f90565b9190918251925f8060208301958682865af115613fc3575050604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e6020845110918215613f8f575b5050613d0557565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f80613f87565b5183517fffffffff00000000000000000000000000000000000000000000000000000000811691600481106140d7575b50507fffffffff000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01169173ffffffffffffffffffffffffffffffffffffffff604051947f90bfb865000000000000000000000000000000000000000000000000000000008652166004850152166024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fa9e35b2f0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffff000000000000000000000000000000000000000000000000000000009250829060040360031b1b16168280613ff3565b919060020b9060020b9081810761413a5705908160081d5f52602052600160ff60405f2092161b8154189055565b601c906044926040519163d4d8f3e683526020830152604082015201fd5b60020b908160ff1d82810118620d89e8811161449e5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102700100000000000000000000000000000000189160028116614482575b60048116614466575b6008811661444a575b6010811661442e575b60208116614412575b604081166143f6575b608081166143da575b61010081166143be575b61020081166143a2575b6104008116614386575b610800811661436a575b611000811661434e575b6120008116614332575b6140008116614316575b61800081166142fa575b6201000081166142de575b6202000081166142c3575b6204000081166142a8575b620800001661428f575b5f12614268575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04614261565b6b048a170391f7dc42444e8fa290910260801c9061425a565b6d2216e584f5fa1ea926041bedfe9890920260801c91614250565b916e5d6af8dedb81196699c329225ee6040260801c91614245565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161423a565b916f31be135f97d08fd981231505542fcfa60260801c9161422f565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614225565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161421b565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614211565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614207565b916ff3392b0822b70005940c7a398e4b70f30260801c916141fd565b916ff987a7253ac413176f2b074cf7815e540260801c916141f3565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916141e9565b916ffe5dee046a99a2a811c461f1969c30530260801c916141df565b916fff2ea16466c96a3843ec78b326b528610260801c916141d6565b916fff973b41fa98c081472e6896dfb254c00260801c916141cd565b916fffcb9843d60f6159c9db58835c9266440260801c916141c4565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916141bb565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916141b2565b916ffff97272373d413259a46990580e213a0260801c916141a9565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b905f83600f0b125f146144ff576144f5925f036fffffffffffffffffffffffffffffffff1691615a3d565b5f81126130c85790565b61451b926fffffffffffffffffffffffffffffffff16916159e2565b5f81126130c8575f0390565b905f83600f0b125f14614552576144f5925f036fffffffffffffffffffffffffffffffff1691615b34565b61451b926fffffffffffffffffffffffffffffffff1691615a7d565b906fffffffffffffffffffffffffffffffff90600f0b911601908160801c61459257565b6393dafdf15f526004601cfd5b906145a991613f25565b9015613a8d576040815103613d05576040015190565b6145e2906145d48360801d8260801d03613785565b92600f0b90600f0b03613785565b6fffffffffffffffffffffffffffffffff169060801b1790565b73fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d830116116148e05777ffffffffffffffffffffffffffffffffffffffff000000008160201b168060ff61467983615bdb565b1691608083106148d457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8182011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800160401b1717171717171717171717171717693627a301d71055774c85027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f146148915750905090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff6148c584614158565b16116148cf575090565b905090565b905081607f031b6146a9565b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b811561492c570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6040519290915f61496985612df6565b5f855260208501925f845260408601955f875280968654956040860151159586155f146156f557610fff8860b81c16945b8151925f948a73ffffffffffffffffffffffffffffffffffffffff16918288528b60a01c60020b90526fffffffffffffffffffffffffffffffff60038d0154169052608083015162400000811615155f146156e65762bfffff166149fd8161368e565b61ffff88166156cb575b8096620f424062ffffff8316101561569a575b8451156156845750508861562457606083019073ffffffffffffffffffffffffffffffffffffffff825116818110156155ed5750505173ffffffffffffffffffffffffffffffffffffffff166401000276a38111156155c257505b604051986101008a018a811067ffffffffffffffff821117611eb1576040525f8a525f60208b01525f60408b01525f60608b01525f60808b01525f60a08b01525f60c08b015288155f146155b45760018b0154949390945b60e08b01525b8015801561557a575b6154205788868d8c8e73ffffffffffffffffffffffffffffffffffffffff8351168252602083015160020b602089015160020b90815f8183071291050386155f14615275576fffffffffffffffffffffffffffffffff937ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860409460019484600560ff60609716938260020b60081d890b5f5201602052875f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460ff031c9054169283151593845f146152635790614bb760ff92615bdb565b90031660020b900360020b0260020b5b905b15158684015260020b8060208401521315615238575b620d89e8602082015160020b121561522a575b73ffffffffffffffffffffffffffffffffffffffff614c17602083015160020b614158565b16918291015273ffffffffffffffffffffffffffffffffffffffff8551169673ffffffffffffffffffffffffffffffffffffffff60608c0151169283911516818310189118021892015116928d73ffffffffffffffffffffffffffffffffffffffff8316821015915f87125f1461507f5762ffffff8516620f424003614c9f81895f03615785565b94841561506e57614cb1888483615a7d565b955b868110614fb257509660a093929173ffffffffffffffffffffffffffffffffffffffff98978891620f424062ffffff8316145f14614f9e575050865b955b15614f905791614d0092615a3d565b925b60c0820152015260808d0152168c525f8351135f14614f605760a08a0151905f82126130c8570392614d3d60808b015160c08c015190612ffa565b5f81126130c8578103908113600116611d9457935b61ffff8716614f18575b6fffffffffffffffffffffffffffffffff60408d01511680614efe575b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608c01511681145f14614ec2575060408a0151614e10575b88614e03577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208b015160020b0160020b5b60020b60208d01525b9392614ad3565b60208a015160020b614df3565b88614e96576fffffffffffffffffffffffffffffffff614e7d8d8d8d600460e08201519260206002820154935b015160020b60020b5f520160205260405f2091600183019081549003905560028201908154900390555460801d908c15614e88575b60400151831661456e565b1660408d0152614dc0565b5f91909103600f0b90614e72565b6fffffffffffffffffffffffffffffffff614e7d8d8d8d6004600183015492602060e084015193614e3d565b73ffffffffffffffffffffffffffffffffffffffff8b51168103614ee7575b50614dfc565b614ef0906145fc565b60020b60208d01525f614ee1565b60c08b015160801b0460e08b01510160e08b01525f614d79565b9662ffffff861661ffff881603614f435760c08a0151905b8160c08c01510360c08c01520196614d5c565b620f424060808b015161ffff89169060c08d015101020490614f30565b60808a015160c08b015101905f82126130c857019260a08a01515f81126130c857614f8a91613b29565b93614d52565b614f9992615b34565b614d00565b62ffffff614fad921689615c68565b614cef565b9650505092505082918415811517615061578e60a09173ffffffffffffffffffffffffffffffffffffffff96845f14614ffc57614ff0878284615d07565b80978a015f0395614cf1565b87871161503a576150356150306150286fffffffffffffffffffffffffffffffff84168a60601b614922565b8a8516612ffa565b615d9b565b614ff0565b61503561503061505c6fffffffffffffffffffffffffffffffff84168a61588a565b615028565b634f2461b85f526004601cfd5b6150798882856159e2565b95614cb3565b9193509190831561521957615095858284615a3d565b915b8287106150f7579073ffffffffffffffffffffffffffffffffffffffff9560a09280965b156150e857916150ca92615a7d565b925b6150e362ffffff8d16620f42408190039086615c68565b614d02565b6150f1926159e2565b926150cc565b50915050838315821517615061578d83156151ef575073ffffffffffffffffffffffffffffffffffffffff851161519c578460601b6fffffffffffffffffffffffffffffffff851680820615159104015b73ffffffffffffffffffffffffffffffffffffffff8316928184111561518f578f939573ffffffffffffffffffffffffffffffffffffffff60a093819803165b80966150bb565b634323a5555f526004601cfd5b6fffffffffffffffffffffffffffffffff84166151c7816c0100000000000000000000000088615943565b90801561492c576c010000000000000000000000008709156151485760010180615148575f80fd5b9180856152148873ffffffffffffffffffffffffffffffffffffffff9860a095615c91565b615188565b615224858383615b34565b91615097565b620d89e86020820152614bf2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186020820152614bdf565b5060020b900360020b0260020b614bc7565b60019194939650600592955001938460020b60081d60010b5f520160205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160ff86161b0119905416908d8b831592831597885f146153c15750505050610330578f9160018f8f96907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186060928f989560409660ff896fffffffffffffffffffffffffffffffff9a5f03166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f85851693831c63d76453e004161a17031660020b9060020b0160020b0260020b5b90614bc9565b90956fffffffffffffffffffffffffffffffff955060409450600193987ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618918960ff6060969b811681031660020b9060020b0160020b0260020b6153bb565b949891955099969298919598602088015160a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8a51169216171782556fffffffffffffffffffffffffffffffff6003830154166fffffffffffffffffffffffffffffffff604089015116809103615535575b5082156155265760e060029101519101555b825190155f82121461551057506154ee6154f69293613785565b925103613785565b6fffffffffffffffffffffffffffffffff169060801b1793565b6154f69250906155209103613785565b91613785565b60e060019101519101556154d4565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000006003840154161760038301555f6154c2565b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608501511614614adc565b60028b015494939094614acd565b7f9e4d7cc7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f7c9c6e8f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606083019073ffffffffffffffffffffffffffffffffffffffff825116818111156155ed5750505173ffffffffffffffffffffffffffffffffffffffff1673fffd8963efd1fc6a506488495d951d5263988d268110156155c25750614a75565b9a509a50509950505050505050505f925f929190565b5f85511315614a1a577f96206246000000000000000000000000000000000000000000000000000000005f5260045ffd5b62ffffff610fff89169116620f424081830204910103614a07565b508960d01c62ffffff166149fd565b610fff8860c41c169461499a565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393847001000000000000000000000000000000001115610330571461577c57700100000000000000000000000000000000910990828211900360801b910360801c1790565b50505060801c90565b818102907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820990828083109203918083039283620f424011156103305714615804577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156103305714615881576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c01000000000000000000000000840992828085109403938085039485841115610330571461593c576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185099383808610950394808603958685111561033057146159da579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b6fffffffffffffffffffffffffffffffff6c010000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff80600195169116038060ff1d90810118931692615a348185615810565b93091515160190565b6fffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff8061364f9594169116038060ff1d908101189116615810565b9073ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff831611615b2e575b73ffffffffffffffffffffffffffffffffffffffff8216928315615b22577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615b16948185169403169160601b16615c68565b90808206151591040190565b62bfc9215f526004601cfd5b90615ab2565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611615bd5575b73ffffffffffffffffffffffffffffffffffffffff8116918215615b225761364f937bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615bd0948185169403169160601b16615943565b614922565b90615b68565b8015610330577f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c60ff1060031b1792831c1c601f161a1790565b929190615c76828286615943565b93821561492c5709615c8457565b9060010190811561033057565b91908115615d02577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff9160601b169216918282029183838311918404141615615cf55761364f9261503092820391615c68565b63f5c787f15f526004601cfd5b505090565b90918015615d955773ffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffff000000000000000000000000819460601b16921680820281615d578483614922565b14615d7d575b5090615d6c615d719284614922565b612ffa565b80820615159104011690565b8301838110615d5d579150615d9192615c68565b1690565b50905090565b9073ffffffffffffffffffffffffffffffffffffffff82169182036130c85756fea164736f6c634300081a000a00000000000000000000000007d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "nonce": "0xe", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x45d83185fb5dc4310dfc9ea4a79f012fb1b1018583ef7da9d28614dba6cd45c4", - "transactionType": "CREATE2", - "contractName": "PositionDescriptor", - "contractAddress": "0x06e356052ae91916fc95a1e65544d0ed60a49632", - "function": null, - "arguments": [ - "0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95", - "0x4200000000000000000000000000000000000006", - "0x4554480000000000000000000000000000000000000000000000000000000000" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060e0346100b357601f615ed138819003918201601f19168301916001600160401b038311848410176100b7578084926060946040528339810103126100b3578051906001600160a01b03821682036100b3576020810151906001600160a01b03821682036100b357604001519160c05260805260a052604051615e0590816100cc8239608051818181607a0152613f05015260a05181818161402c0152614082015260c0518181816101530152613d6c0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe610440806040526004361015610013575f80fd5b5f60a0525f3560e01c908163166c597814613dc257508063b7af3cdc14613d9b578063dc4c90d314613d57578063dee91a2c14613d0e578063e9dc6375146100af5763eb6d3a1114610063575f80fd5b346100a95760a0513660031901126100a9576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60a05180fd5b34613c29576040366003190112613c29576004356001600160a01b03811690819003613c2957602460c081359260405192838092637ba03aad60e01b82528660048301525afa8015613c35575f915f91613c53575b5066ffffffffffffff19811615613c405760a08220604051602081019182526006604082015260408152610139606082613f42565b519020604051631e2eaeaf60e01b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693909290602084602481885afa938415613c35575f94613bfd575b50815160208301516001600160a01b039182169691166101b587613e2a565b6101be82613e2a565b129687159188613bf65780925b15613bee5750955b6101e46101de614001565b836140cb565b956101f66101f0614001565b896140cb565b6101ff84614254565b976102098a614254565b99606089015160020b9562ffffff60408b01511699608060018060a01b0391015116986040516102c0526101e06102c051016102c051811060018060401b03821117613b82576040526102c05152600160a01b60019003166102c05160200152600160a01b60019003166102c051604001526102c051606001526102c051608001526102c05160a0019660ff1687526102c05160c0019760ff1688526102c05160e0019889528060081c60020b6102c051610100015260201c60020b6102c051610120015260a01c60020b6102c05161014001526102c0516101600152826102c05161018001526102c0516101a001526102c0516101c0015261030b9061458d565b906102c0516060015161031d90614828565b916102c0516080015161032f90614828565b93855115805f149660036020600298602a82849a816103bc61046b9f9c60019b610388849f9c859d613bdd576101006102c051015160020b5b6101606102c051015160020b9160ff85511690159260ff87511692614d92565b9a51158015613bcb576101206102c051015160020b915b60ff806101606102c051015160020b925116921594511692614d92565b9a6040516103e0526902ab734b9bbb0b81016960b51b826103e0510152805191829101856103e051015e6103e05101906201016960ed1b84830152805192839101602d83015e010190602f60f81b84830152805192839101600483015e0101906201016960ed1b84830152805192839101600483015e010190611e1f60f11b84830152805192839101600583015e01015f828201526103e051900301601f1981016103e051526103e051613f42565b6105ec6002605961048260606102c0510151614828565b61049260806102c0510151614828565b90600160206104af828060a01b036101a06102c051015116615481565b604051610400527f54686973204e465420726570726573656e74732061206c697175696469747920826104005101527803837b9b4ba34b7b71034b71030902ab734b9bbb0b8103b1a1603d1b604061040051015285828551968187019780898561040051015e610400510190602d60f81b84830152805192839101605a83015e010190660103837b7b617160cd1b848301527f546865206f776e6572206f662074686973204e46542063616e206d6f646966796008830152791037b9103932b232b2b6903a3432903837b9b4ba34b7b7172e3760311b60288301527702e372837b7b61026b0b730b3b2b91020b2323932b9b99d160451b6042830152805192839101605a83015e010190612e3760f11b84830152518092605b83015e01015f8282015261040051900301601f198101610400515261040051613f42565b61085c60ac600c8060206106036102c0515161492e565b60108261061660806102c0510151614828565b6102c0518201516001600160a01b031680613bb95750600a826106376142d5565b925b6102c051604001516001600160a01b031680613ba8575060028261065b6142d5565b6102c0516101c001516001600160a01b031680613b965750602a8261067e6142f9565b955b8161069762ffffff6101806102c05101511661458d565b9a6040516103c0526901020b2323932b9b99d160b51b826103c0510152805191829101856103c051015e6103c0510190612e3760f11b84830152805192839101602c83015e0101906901020b2323932b9b99d160b51b848301528051928391018d83015e0101906f02e372437b7b59020b2323932b9b99d160851b84830152805192839101601a83015e0101906b02e372332b2902a34b2b91d160a51b84830152805192839101601c83015e0101906b02e372a37b5b2b71024a21d160a51b84830152805192839101601883015e0101632e372e3760e11b828201527fe29aa0efb88f20444953434c41494d45523a204475652064696c6967656e636560108201527f20697320696d7065726174697665207768656e20617373657373696e6720746860308201527f6973204e46542e204d616b6520737572652063757272656e637920616464726560508201527f73736573206d61746368207468652065787065637465642063757272656e636960708201527f65732c2061732063757272656e63792073796d626f6c73206d6179206265206960908201526736b4ba30ba32b21760c11b60b08201526103c051900301608c81016103c05152016103c051613f42565b6102c05160200151610876906001600160a01b0316615481565b6102c05160400151610890906001600160a01b0316615481565b610320526102c0516101c08101516001600160a01b03166102e05260608101516080820151610180909201519091906108cd9062ffffff1661458d565b6101006102c051015160020b916101206102c051015160020b610360526101606102c051015160020b610380526109136101406102c051015160020b610360518561553d565b610420526102c051519361093560018060a01b0360206102c051015116615564565b610300526102c05160400151610953906001600160a01b0316615564565b6102c05160200151909690610970906001600160a01b03166155c3565b610260526102c0516040015161098e906001600160a01b03166155c3565b610280526102c0516020810151905160ff916109af919060101c8316614a76565b6101026103a08190529190068181029181159183041417156137e25760ff610340526109e36109e891610340519004614527565b61492e565b6102a0526102c051604081015190516103405191610a14919060101c83166001600160901b0316614a76565b6101806102408190529190068181029181159183041417156137e2576103405115613b15576109e3610a4b91610340519004614535565b610220526102c05160208181015191516103405192610a75921c83166001600160801b0316614a76565b6103a0519190068181029181159183041417156137e2576103405115613b15576109e3610aa791610340519004614527565b610200526102c051604081015190516103405191610ad3919060201c83166001600160801b0316614a76565b610240519190068181029181159183041417156137e2576103405115613b15576109e3610b0591610340519004614535565b6101e0526102c051602081015190516103405191610b31919060301c83166001600160701b0316614a76565b6103a0519190068181029181159183041417156137e2576103405115613b15576109e3610b6391610340519004614527565b6101c0526102c051604081015190516103405191610b8f919060301c83166001600160701b0316614a76565b610240519190068181029181159183041417156137e2576103405115613b15576109e3610bc191610340519004614535565b6101a0526040516101808190526102a081019081106001600160401b03821117613b825760405261018051526103205160206101805101526102e05160406101805101526060610180510152608061018051015260a061018051015260c06101805101526103605160e061018051015261038051610100610180510152610420515f0b6101206101805101526101406101805101526103005161016061018051015261024051610180510152610260516101a0610180510152610280516101c06101805101526102a0516101e061018051015261022051610200610180510152610200516102206101805101526101e0516102406101805101526101c0516102606101805101526101a051610280610180510152611c206101e4610655603f6020610da36040515f80516020615cb9833981519152838201525f80516020615db983398151915260408201527f2f2f7777772e77332e6f72672f323030302f737667273e3c726563742077696460608201527f74683d27323930707827206865696768743d273530307078272066696c6c3d276080820152602360f81b60a0820152610d9e600960a1836103005151808861030051018484015e81016813979f1e17b9bb339f60b91b838201520301601619810184520182613f42565b614a89565b603e82610e4f81610d9e600960136101e0610180510151600685610200610180510151816102405161018051015191604051998a96610de3828901615661565b90805192839101825e019065272063793d2760d01b82528051928391018683015e0190722720723d273132307078272066696c6c3d272360681b84830152805192839101601983015e01016813979f1e17b9bb339f60b91b838201520301601619810184520182613f42565b8282610e8d81610d9e60096013610220610180510151600685610240610180510151816101a061018051015191604051998a96610de3828901615661565b60f382610f3881610d9e60096013610260610180510151600685610280610180510151816101c061018051015191604051998a96610ecc828901615661565b90805192839101825e019065272063793d2760d01b82528051928391018683015e0190722720723d273130307078272066696c6c3d272360681b84830152805192839101601983015e01016813979f1e17b9bb339f60b91b838201520301601619810184520182613f42565b95816101606101805101519a60405160c0527f3c7376672077696474683d2232393022206865696768743d22353030222076698260c05101527f6577426f783d2230203020323930203530302220786d6c6e733d22687474703a604060c0510152751797bbbbbb973b999737b933979918181817b9bb339160511b606060c05101527f20786d6c6e733a786c696e6b3d27687474703a2f2f7777772e77332e6f72672f607660c05101526b189c9c9c97bc3634b735939f60a11b609660c0510152651e3232b3399f60d11b60a260c05101527f3c66696c7465722069643d226631223e3c6665496d61676520726573756c743d60a860c05101527f2270302220786c696e6b3a687265663d22646174613a696d6167652f7376672b60c860c05101526a1e1b5b0ed8985cd94d8d0b60aa1b60e860c05101528051918291018560c051015e60c05101907f222f3e3c6665496d61676520726573756c743d2270312220786c696e6b3a6872848301525f80516020615c9983398151915261011383015280519283910161013183015e0101907f222f3e3c6665496d61676520726573756c743d2270322220786c696e6b3a6872848301525f80516020615c99833981519152605e830152805192839101607c83015e010190631110179f60e11b848301527f3c6665496d61676520726573756c743d2270332220786c696e6b3a687265663d60428301527a0899185d184e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b602a1b6062830152805192839101607d83015e7f22202f3e3c6665426c656e64206d6f64653d226f7665726c61792220696e3d22910191909101848101919091527f70302220696e323d22703122202f3e3c6665426c656e64206d6f64653d226578605f8201527f636c7573696f6e2220696e323d22703222202f3e3c6665426c656e64206d6f64607f8201527f653d226f7665726c61792220696e323d2270332220726573756c743d22626c65609f820152780373227baba1110179f1e3332a3b0bab9b9b4b0b721363ab91603d1b60bf8201527f696e3d22626c656e644f75742220737464446576696174696f6e3d223432222060d88201527f2f3e3c2f66696c7465723e203c636c6970506174682069643d22636f726e657260f88201527f73223e3c726563742077696474683d2232393022206865696768743d223530306101188201527f222072783d223432222072793d22343222202f3e3c2f636c6970506174683e006101388201527f3c706174682069643d22746578742d706174682d612220643d224d34302031326101578201527f20483235302041323820323820302030203120323738203430205634363020416101778201527f32382032382030203020312032353020343838204834302041323820323820306101978201527f20302031203132203436302056343020413238203238203020302031203430206101b7820152671899103d1110179f60c11b6101d78201527f3c706174682069643d226d696e696d61702220643d224d3233342034343443326101df8201527f3334203435372e393439203234322e323120343633203235332034363322202f6101ff820152601f60f91b61021f8201527f3c66696c7465722069643d22746f702d726567696f6e2d626c7572223e3c66656102208201527f476175737369616e426c757220696e3d22536f757263654772617068696322206102408201527f737464446576696174696f6e3d22323422202f3e3c2f66696c7465723e0000006102608201527f3c6c696e6561724772616469656e742069643d22677261642d7570222078313d61027d8201527f2231222078323d2230222079313d2231222079323d2230223e3c73746f70206f61029d8201527f66667365743d22302e30222073746f702d636f6c6f723d2277686974652220736102bd820152713a37b816b7b830b1b4ba3c9e91189110179f60711b6102dd8201527f3c73746f70206f66667365743d222e39222073746f702d636f6c6f723d2277686102ef8201527f697465222073746f702d6f7061636974793d223022202f3e3c2f6c696e65617261030f8201526823b930b234b2b73a1f60b91b61032f8201527f3c6c696e6561724772616469656e742069643d22677261642d646f776e2220786103388201527f313d2230222078323d2231222079313d2230222079323d2231223e3c73746f706103588201527f206f66667365743d22302e30222073746f702d636f6c6f723d227768697465226103788201527f2073746f702d6f7061636974793d223122202f3e3c73746f70206f66667365746103988201527f3d22302e39222073746f702d636f6c6f723d227768697465222073746f702d6f6103b88201527f7061636974793d223022202f3e3c2f6c696e6561724772616469656e743e00006103d88201527f3c6d61736b2069643d22666164652d757022206d61736b436f6e74656e74556e6103f68201527f6974733d226f626a656374426f756e64696e67426f78223e3c726563742077696104168201527f6474683d223122206865696768743d2231222066696c6c3d2275726c282367726104368201527030b216bab8149110179f1e17b6b0b9b59f60791b6104568201527f3c6d61736b2069643d22666164652d646f776e22206d61736b436f6e74656e746104678201527f556e6974733d226f626a656374426f756e64696e67426f78223e3c72656374206104878201527f77696474683d223122206865696768743d2231222066696c6c3d2275726c28236104a78201527433b930b216b237bbb7149110179f1e17b6b0b9b59f60591b6104c78201527f3c6d61736b2069643d226e6f6e6522206d61736b436f6e74656e74556e6974736104dc8201527f3d226f626a656374426f756e64696e67426f78223e3c726563742077696474686104fc8201527f3d223122206865696768743d2231222066696c6c3d22776869746522202f3e3c61051c8201526517b6b0b9b59f60d11b61053c8201527f3c6c696e6561724772616469656e742069643d22677261642d73796d626f6c226105428201527f3e3c73746f70206f66667365743d22302e37222073746f702d636f6c6f723d226105628201527f7768697465222073746f702d6f7061636974793d223122202f3e3c73746f70206105828201527f6f66667365743d222e3935222073746f702d636f6c6f723d22776869746522206105a28201527f73746f702d6f7061636974793d223022202f3e3c2f6c696e65617247726164696105c28201526332b73a1f60e11b6105e28201527f3c6d61736b2069643d22666164652d73796d626f6c22206d61736b436f6e74656105e68201527f6e74556e6974733d227573657253706163654f6e557365223e3c7265637420776106068201527f696474683d22323930707822206865696768743d223230307078222066696c6c6106268201527f3d2275726c2823677261642d73796d626f6c2922202f3e3c2f6d61736b3e3c2f610646820152643232b3399f60d91b6106668201527f3c6720636c69702d706174683d2275726c2823636f726e65727329223e00000061066b8201526b1e3932b1ba103334b6361e9160a11b610688820152815192909183910161069483015e01017f2220783d223070782220793d22307078222077696474683d223239307078222082820152703432b4b3b43a1e911a9818383c1110179f60791b6106758201527f3c72656374207374796c653d2266696c7465723a2075726c28236631292220786106868201527f3d223070782220793d22307078222077696474683d22323930707822206865696106a68201526d33b43a1e911a9818383c1110179f60911b6106c68201527f203c67207374796c653d2266696c7465723a75726c2823746f702d726567696f6106d48201527f6e2d626c7572293b207472616e73666f726d3a7363616c6528312e35293b20746106f48201527f72616e73666f726d2d6f726967696e3a63656e74657220746f703b223e0000006107148201527f3c726563742066696c6c3d226e6f6e652220783d223070782220793d223070786107318201527f222077696474683d22323930707822206865696768743d22353030707822202f610751820152601f60f91b6107718201527f3c656c6c697073652063783d22353025222063793d22307078222072783d22316107728201527f38307078222072793d223132307078222066696c6c3d222330303022206f70616107928201527131b4ba3c9e9118171c1a9110179f1e17b39f60711b6107b28201527f3c7265637420783d22302220793d2230222077696474683d22323930222068656107c48201527f696768743d22353030222072783d223432222072793d223432222066696c6c3d6107e48201527f227267626128302c302c302c302922207374726f6b653d2272676261283235356108048201527416191a9a96191a9a96181719149110179f1e17b39f60591b61082482015260c0519003016101c4810160c051520160c051613f42565b61217f608b6005610100610180515160206101805101518360606101805101519160806101805101519060405186527f3c7465787420746578742d72656e646572696e673d226f7074696d697a6553706020875101526432b2b2111f60d91b6040875101527f3c74657874506174682073746172744f66667365743d222d31303025222066696045875101527f6c6c3d2277686974652220666f6e742d66616d696c793d2227436f75726965726065875101527f204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d223130706085875101527f782220786c696e6b3a687265663d2223746578742d706174682d61223e00000060a5875101528281516020830190808260c28b51015e8851019264010714051160dd1b60c285015260c285516020870195818760c783015e0101905f80516020615c79833981519152848301525f80516020615d5983398151915260258301525f80516020615d398339815191526045830152783832b0ba21b7bab73a1e9134b73232b334b734ba329110179f60391b60658301527f3c2f74657874506174683e203c74657874506174682073746172744f66667365607e8301527f743d223025222066696c6c3d2277686974652220666f6e742d66616d696c793d609e8301527f2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d60be8301527f73697a653d22313070782220786c696e6b3a687265663d2223746578742d706160de830152653a3416b0911f60d11b60fe83015251809261010483015e01019164010714051160dd1b6103405184015251809161010484015e610340519101015f80516020615c79833981519152828201525f80516020615d5983398151915260258201525f80516020615d3983398151915260458201527f70656174436f756e743d22696e646566696e69746522202f3e203c2f746578746065820152642830ba341f60d91b60858201527f3c74657874506174682073746172744f66667365743d22353025222066696c6c608a8201527f3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e60aa8201527f6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782260ca8201527a103c3634b7359d343932b31e9111ba32bc3a16b830ba3416b0911f60291b60ea8201528184516020860192818461010583015e01019364010714051160dd1b868601528584516020860196818861010583015e0101905f80516020615c79833981519152848301525f80516020615d5983398151915260258301527f6f3d22313030252220626567696e3d22307322206475723d223330732200000060458301527f20726570656174436f756e743d22696e646566696e69746522202f3e3c2f746560628301527f7874506174683e3c74657874506174682073746172744f66667365743d222d3560828301527f3025222066696c6c3d2277686974652220666f6e742d66616d696c793d22274360a28301527f6f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a60c28301527f653d22313070782220786c696e6b3a687265663d2223746578742d706174682d60e28301526230911f60e91b6103a05183015251809261010583015e01019064010714051160dd1b8483015251809261010583015e01015f80516020615c79833981519152828201525f80516020615d5983398151915260258201525f80516020615d3983398151915260458201527f70656174436f756e743d22696e646566696e69746522202f3e3c2f746578745060658201526a30ba341f1e17ba32bc3a1f60a91b608582015261010051900301606b810161010051520161010051613f42565b6020612418607e60776060610180510151600185608061018051015160ed8260a0610180510151926040519a8b977f3c67206d61736b3d2275726c2823666164652d73796d626f6c29223e3c726563828a01527f742066696c6c3d226e6f6e652220783d223070782220793d223070782220776960408a01527f6474683d22323930707822206865696768743d22323030707822202f3e203c7460608a01527f65787420793d22373070782220783d2233327078222066696c6c3d227768697460808a01527f652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d60a08a01527f6f6e6f73706163652220666f6e742d7765696768743d223230302220666f6e7460c08a01526c16b9b4bd329e91199b383c111f60991b60e08a0152805191829101858a015e870190602f60f81b8483015280519283910160ee83015e0101907f3c2f746578743e3c7465787420793d2231313570782220783d22333270782220848301527f66696c6c3d2277686974652220666f6e742d66616d696c793d2227436f75726960218301527f6572204e6577272c206d6f6e6f73706163652220666f6e742d7765696768743d6041830152761119181811103337b73a16b9b4bd329e91199b383c111f60491b6061830152805192839101607883015e01016a1e17ba32bc3a1f1e17b39f60a91b838201527f3c7265637420783d2231362220793d223136222077696474683d22323538222060828201527f6865696768743d22343638222072783d223236222072793d223236222066696c60a28201527f6c3d227267626128302c302c302c302922207374726f6b653d2272676261283260c2820152721a9a96191a9a96191a9a96181719149110179f60691b60e28201520301605e810184520182613f42565b60c061018051015160020b9060e061018051015160020b9161010061018051015160020b906101206101805101515f0b90600182145f14613b2957604051612461604082613f42565b6008815267023666164652d75760c41b6020820152945b03627fffff198112627fffff8213176137e25760020b908215613b1557627fffff1982145f198414166137e25761293f926048920560020b600481136139365750607960206040516124cb604082613f42565b601a8152794d3120314334312034312031303520313035203134352031343560301b82820152925b60406101608190528051906125089082613f42565b6002815261373360f01b838201908152610160518051939061252a9085613f42565b60038452848401906203139360ec1b825261016051519261254e6101605185613f42565b60038452868401926232313760e81b84526101605151936125726101605186613f42565b6003855288850191620ccccd60ea1b8352600185146001860361392c575b15613840575050505092602786602a946008828196602c82809c6126c39c5f191493845f14613839578a5b85156138325782985b861561382a5750945b156138225750955b61016051516b1e31b4b931b6329031bc1e9160a11b8f8201528a51909e8f9b829101858d015e8a019067383c111031bc9e9160c11b84830152805192839101603483015e0101907f70782220723d22347078222066696c6c3d22776869746522202f3e3c63697263848301526636329031bc1e9160c91b6028830152805192839101602f83015e01019067383c111031bc9e9160c11b84830152805192839101602f83015e01017f70782220723d2232347078222066696c6c3d226e6f6e6522207374726f6b653d8382015269113bb434ba329110179f60b11b60288201520301600a810184520182613f42565b606561016051519889956c078ce40dac2e6d67a44eae4d85609b1b85880152858251868401908082602d8c015e89019361149160f11b602d8601525f80516020615dd9833981519152602f8601527f2c313839707829223e3c7265637420783d222d313670782220793d222d313670604f8601527f78222077696474683d22313830707822206865696768743d2231383070782220606f860152763334b6361e913737b7329110179f1e3830ba3410321e9160491b608f860152602d845189860196818860a683015e0101907f22207374726f6b653d227267626128302c302c302c302e332922207374726f6b848301527f652d77696474683d2233327078222066696c6c3d226e6f6e6522207374726f6b6099830152733296b634b732b1b0b81e913937bab7321110179f60611b60b9830152700785ece7c78ce40dac2e6d67a44eae4d85607b1b60cd83015251809260de83015e01019061149160f11b848301525f80516020615dd983398151915260678301526816189c1cb83c14911f60b91b60878301527f3c7265637420783d222d313670782220793d222d31367078222077696474683d60908301527f22313830707822206865696768743d223138307078222066696c6c3d226e6f6e60b083015264329110179f60d91b60d0830152681e3830ba3410321e9160b91b60d583015251809260de83015e0101907f22207374726f6b653d2272676261283235352c3235352c3235352c3129222066848301527f696c6c3d226e6f6e6522207374726f6b652d6c696e656361703d22726f756e646099830152671110179f1e17b39f60c11b60b983015280519283910160c183015e01015f838201520301601f198101845283613f42565b61295061014061018051015161492e565b60018060a01b0360406101805101511660c061018051015160020b9160e061018051015160020b9261298183615481565b60e05261298d8161591c565b6129968561591c565b928051946004860186116137e2576136bb576129b06142f9565b80519360058501928386116136a357845191600a83018084116136a357885195600a8701928388116136a35760049c6129e891615a45565b9c909b6008810191829101116136a357806007029060078204036136a357612a1160099161492e565b99018091116136a357806007029060078204036136a357612a33600e9161492e565b94018091116136a357806007029060078204036136a357612a55600e9161492e565b95018091116136a35760078181020481036136a357600702612a769061492e565b9561016051516080526080516020015f80516020615d9983398151915290526c1cb83c1610199a9a383c14911f60991b6101605160805101526c1e3932b1ba103bb4b23a341e9160991b608051604d015280516020819201608051605a015e60805101605a0160a0518152612aea906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d198339815191529052608081016c1f24a21d101e17ba39b830b71f60991b905281516020819301608d83015e6a1e17ba32bc3a1f1e17b39f60a91b608d92909101918201525f80516020615d9983398151915260988201526c1cb83c1610199c1a383c14911f60991b60b88201526c1e3932b1ba103bb4b23a341e9160991b60c5820152815191829060200160d283015e01608d0160450160a0518152612bd5906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d198339815191529052608081016e1f2437b7b59d101e17ba39b830b71f60891b905281516020819301608f83015e6a1e17ba32bc3a1f1e17b39f60a91b608f92909101918201525f80516020615d99833981519152609a8201526c1cb83c16101a189a383c14911f60991b60ba8201526c1e3932b1ba103bb4b23a341e9160991b60c7820152815191829060200160d483015e01608f0160450160a0518152612cc2906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d19833981519152905260808101721f26b4b7102a34b1b59d101e17ba39b830b71f60691b905281516020819301609383015e6a1e17ba32bc3a1f1e17b39f60a91b609392909101918201525f80516020615d99833981519152609e8201526c1cb83c16101a1a1a383c14911f60991b60be8201526c1e3932b1ba103bb4b23a341e9160991b60cb820152815191829060200160d883015e0160930160450160a0518152612db3906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d19833981519152905260808101721f26b0bc102a34b1b59d101e17ba39b830b71f60691b905281516020819301609383015e7f3c2f746578743e3c2f673e3c67207374796c653d227472616e73666f726d3a7460939290910191820152773930b739b630ba329419191b383c16101a1999b83c14911f60411b60b38201527f3c726563742077696474683d223336707822206865696768743d22333670782260cb8201527f2072783d22387078222072793d22387078222066696c6c3d226e6f6e6522207360eb8201527f74726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e61010b8201527f3c70617468207374726f6b652d6c696e656361703d22726f756e642220643d2261012b8201527f4d38203943382e30303030342032322e393439342031362e323039392032382061014b8201527f3237203238222066696c6c3d226e6f6e6522207374726f6b653d22776869746561016b820152631110179f60e11b61018b8201527f3c636972636c65207374796c653d227472616e73666f726d3a7472616e736c6161018f820152640e8ca66c8560db1b6101af82015281519182906020016101b483015e016093016101218101630383c16160e51b90528151602081930161012583015e7f70782c2030707829222063783d22307078222063793d223070782220723d2234610125929091019182015275383c11103334b6361e913bb434ba3291179f1e17b39f60511b6101458201526080805161013b9281900392830190525161303b9161015b0190613f42565b61018051610140015191610180516040015160a0515060606101605151906020820192868452600160601b6001900319911b166101605182015260348152613084605482613f42565b5190209280156100a9578060018060801b031060071b81811c60018060401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c610340511060031b17906f8421084210842108cc6318c6db6d54be7b01c1818141808140018080c0814100004181408140c0c100414140c160221b91831c1c601f161a1760011b6101fe811660fe8216036136a35760fe9060a0515016600101906103405182116136a3576103405182161561368b5761360f6020610d9e6002602761353c84610d9e6006829b83603d9b61366c9f61365e9e61034051165f1904115f14613670578161016051517f3c67207374796c653d227472616e73666f726d3a7472616e736c617465283232828201527f3670782c20333932707829223e3c726563742077696474683d22333670782220610160518201527f6865696768743d2233367078222072783d22387078222072793d22387078222060608201527f66696c6c3d226e6f6e6522207374726f6b653d2272676261283235352c32353560808201526c16191a9a96181719149110179f60991b60a08201527f3c673e3c70617468207374796c653d227472616e73666f726d3a7472616e736c60ad8201527f617465283670782c367078292220643d224d313220304c31322e36353232203960cd8201527f2e35363538374c313820312e363037374c31332e373831392031302e3231383160ed82015272026191917199c9919901b26189a171a199a189606d1b61010d8201527f31312e333437384c32342031324c31342e343334312031322e363532324c32326101208201527f2e333932332031384c31332e373831392031332e373831394c31382032322e336101408201527f3932334c31322e363532322031342e343334314c31322032344c31312e33343761016082015270382031342e343334314c362032322e333960781b610240518201527f32334c31302e323138312031332e373831394c312e363037372031384c392e356101918201527f363538372031322e363532324c302031324c392e35363538372031312e3334376101b18201527f384c312e3630373720364c31302e323138312031302e323138314c3620312e366101d18201527f3037374c31312e3334373820392e35363538374c313220305a222066696c6c3d6101f182015269113bb434ba329110179f60b11b6102118201527f3c616e696d6174655472616e73666f726d206174747269627574654e616d653d61021b8201527f227472616e73666f726d2220747970653d22726f74617465222066726f6d3d2261023b8201527f302031382031382220746f3d2233363020313820313822206475723d2231307361025b8201527f2220726570656174436f756e743d22696e646566696e697465222f3e3c2f673e61027b820152631e17b39f60e11b61029b82015261027f81526134ac61029f82613f42565b915b61016051519788958160c05151808260c05101838b015e88018181019060a051825261010051518092846101005101905e01019060a0518252805192839101825e019060a0518252805192839101825e0160a05181526080515190818460805101825e019060a0518252805192839101825e01651e17b9bb339f60d11b815203601919810184520182613f42565b6101605151948591683d913730b6b2911d1160b91b82840152601260296103e0515180856103e051018388015e850171111610113232b9b1b934b83a34b7b7111d1160711b8282015261040051519081866104005101603b83015e01018181019060a05182526103c051518092866103c05101905e0101906c1116101134b6b0b3b2911d101160991b82527919185d184e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b60321b600d8301528051928391018583015e0161227d60f01b838201520301601d19810184520182613f42565b61016051519384917f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000828401528051918291018484015e810160a051838201520301601f198101835282613f42565b610160515191829182613e00565b0390f35b8161016051516136808282613f42565b60a0518152916134ae565b634e487b7160e01b60a051526012600452602460a051fd5b634e487b7160e01b60a051526011600452602460a051fd5b60055f60a0526136cb6005613f65565b610140526101605151610120526136e86101405161012051613f42565b600561012051526101205150601f196137016005613f65565b013660206101205101375f5b8181106137f65750505f60a052600361372581613f65565b61373461016051519182613f42565b818152601f1961374383613f65565b0136602083013760275b602a81106137ac5750602091816137a792508361016051519485926101205151808361012051018487015e8401906217171760e91b83830152805192839101602383015e01015f838201520301601f198101835282613f42565b6129b0565b60ff60f81b6137bd8260e051613fdc565b51169060261981018181116137e2576137db6001935f1a9185613fdc565b530161374d565b634e487b7160e01b5f52601160045260245ffd5b60019060ff60f81b61380a8260e051613fdc565b51165f1a61381b8261012051613fdc565b530161370d565b9050956125d5565b9050946125cd565b81986125c4565b879a6125bb565b61392797945060089591601b97602c88936027979c61016051519d8e9a6b1e31b4b931b6329031bc1e9160a11b60208d0152518091858d015e8a019067383c111031bc9e9160c11b84830152518092603483015e0101907a383c1110391e911a383c11103334b6361e913bb434ba329110179f60291b848301526b1e31b4b931b6329031bc1e9160a11b6023830152518092602f83015e01019067383c111031bc9e9160c11b84830152518092602f83015e01017a383c1110391e911a383c11103334b6361e913bb434ba329110179f60291b838201520301600419810184520182613f42565b6126c3565b505f198514612590565b6008811361397c575060796020604051613951604082613f42565b60198152784d31203143333320343920393720313133203134352031343560381b82820152926124f3565b601081136139c2575060796020604051613997604082613f42565b60198152784d31203143333320353720383920313133203134352031343560381b82820152926124f3565b60208113613a085750607960206040516139dd604082613f42565b60198152784d31203143323520363520383120313231203134352031343560381b82820152926124f3565b60408113613a4e575060796020604051613a23604082613f42565b60198152784d31203143313720373320373320313239203134352031343560381b82820152926124f3565b60808113613a93575060796020604051613a69604082613f42565b60188152774d312031433920383120363520313337203134352031343560401b82820152926124f3565b61010012613ad95760796020604051613aad604082613f42565b601a8152794d31203143312038392035372e3520313435203134352031343560301b82820152926124f3565b60796020604051613aeb604082613f42565b60188152774d312031433120393720343920313435203134352031343560401b82820152926124f3565b634e487b7160e01b5f52601260045260245ffd5b5f198203613b5d57604051613b3f604082613f42565b600a81526911b330b23296b237bbb760b11b60208201525b94612478565b604051613b6b604082613f42565b6005815264236e6f6e6560d81b6020820152613b57565b634e487b7160e01b5f52604160045260245ffd5b82613ba2602a92615481565b95610680565b82613bb4600292615481565b61065b565b82613bc5600a92615481565b92610639565b6101006102c051015160020b9161039f565b6101206102c051015160020b610368565b9050956101d3565b81926101cb565b9093506020813d602011613c2d575b81613c1960209383613f42565b81010312613c2957519285610196565b5f80fd5b3d9150613c0c565b6040513d5f823e3d90fd5b8263ed15e6cf60e01b5f5260045260245ffd5b9150508060c03d60c011613d07575b613c6c8183613f42565b81010360c08112613c295760a013613c29576040519060a082016001600160401b03811183821017613b8257604052613ca4816140b7565b8252613cb2602082016140b7565b6020830152604081015162ffffff81168103613c2957604083015260608101518060020b8103613c295760608301526080810151906001600160a01b0382168203613c295760a0916080840152015183610104565b503d613c62565b34613c29576040366003190112613c2957613d27613dea565b6024356001600160a01b0381168103613c2957613d4e613d48602093613e2a565b91613e2a565b12604051908152f35b34613c29575f366003190112613c29576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34613c29575f366003190112613c295761366c613db6614001565b60405191829182613e00565b34613c29576020366003190112613c2957602090613de6613de1613dea565b613e2a565b8152f35b600435906001600160a01b0382168203613c2957565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b6001600160a01b031680158015613f02575b613efb5760014614613e4e575b505f90565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488103613e70575061012c90565b73dac17f958d2ee523a2206206994597c13d831ec78103613e91575060c890565b736b175474e89094c44da98b954eedeac495271d0f8103613eb25750606490565b738daebade922df735c38c80c7ebd708af50815faa8103613ed4575060c71990565b732260fac5e5542a773aa44fbcfedf7c193bc2c59914613ef4575f613e49565b61012b1990565b5060631990565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168114613e3c565b5f1981146137e25760010190565b601f909101601f19168101906001600160401b03821190821017613b8257604052565b6001600160401b038111613b8257601f01601f191660200190565b613f8a6006613f65565b90613f986040519283613f42565b6006825281601f19613faa6006613f65565b0190602036910137565b90613fbe82613f65565b613fcb6040519182613f42565b8281528092613faa601f1991613f65565b908151811015613fed570160200190565b634e487b7160e01b5f52603260045260245ffd5b5f5b602081108061407b575b156140205761401b90613f34565b614003565b61402981613fb4565b907f0000000000000000000000000000000000000000000000000000000000000000905f5b81811061405b5750505090565b6020811015613fed5780836001921a6140748287613fdc565b530161404e565b15613fed577f0000000000000000000000000000000000000000000000000000000000000000811a60f81b6001600160f81b031916151561400d565b51906001600160a01b0382168203613c2957565b6001600160a01b038116915f9190831561421e57506140e99061431e565b9182511561416b5750600c8251116140ff575090565b9061410a600c613f65565b916141186040519384613f42565b600c8352601f19614129600c613f65565b01366020850137805b600c81106141405750505090565b6001906001600160f81b03196141568286613fdc565b5116831a6141648287613fdc565b5301614132565b915050614176613f80565b905f5b6003811061418657505090565b80601303601381116137e2576001600160fd1b03811681036137e257829060031b1c9060f080600f198416161660ff8316039160ff83116137e257600f6141d09160041c1661561f565b600182901b926001600160ff1b03831683036137e2576141fc915f1a6141f68588613fdc565b5361561f565b91600181018091116137e2576142176001935f1a9186613fdc565b5301614179565b9250505090565b3d1561424f573d9061423682613f65565b916142446040519384613f42565b82523d5f602084013e565b606090565b6001600160a01b038116156142cf575f8091604051602081019063313ce56760e01b825260048152614287602482613f42565b51915afa614293614225565b9015613e49578051602081146142aa575b50505f90565b8160209181010312613c29576020015160ff8111156142c957806142a4565b60ff1690565b50601290565b604051906142e4604083613f42565b60068252654e617469766560d01b6020830152565b60405190614308604083613f42565b60078252664e6f20486f6f6b60c81b6020830152565b5f809160405160208101906395d89b4160e01b825260048152614342602482613f42565b51915afa61434e614225565b90156144ad57805160208103614420575060208151918180820193849201010312613c2957519060405191614384604084613f42565b602080845236848201375f905f5b602081106143e15750506143a581613fb4565b905f5b8181106143b6575090925050565b6001906001600160f81b03196143cc8288613fdc565b51165f1a6143da8286613fdc565b53016143a8565b81811a60f881901b6001600160f81b031916614401575b50600101614392565b83614419916144136001949689613fdc565b53613f34565b92906143f8565b6040811161443e575050604051614438602082613f42565b5f815290565b810190602081818401930312613c29576020810151906001600160401b038211613c29570181603f82011215613c295760208101519061447d82613f65565b9261448b6040519485613f42565b82845260408284010111613c2957815f926040602093018386015e8301015290565b50604051614438602082613f42565b60ff1660ff81146137e25760010190565b6040519061010082016001600160401b03811183821017613b82576040525f60e0838281528260208201528260408201528260608201528260808201528260a08201528260c08201520152565b919082039182116137e257565b90601082018092116137e257565b90606482018092116137e257565b919082018092116137e257565b60ff5f199116019060ff82116137e257565b60ff6004199116019060ff82116137e257565b604d81116137e257600a0a90565b8115613b15570490565b62ffffff8116906280000082146148015781156147df575f9262ffffff5f925b169182156146195760ff8116156145de57600a6145d66145d062ffffff936144bc565b96613f34565b9593046145ad565b9362ffffff600a8406166145fc575b600a6145d662ffffff92613f34565b93600a6145d661460f62ffffff936144bc565b96925050506145ed565b90939291506146266144cd565b916005841061475f5760ff8216916004614640848761451a565b106147565760ff5f5b169260041986018681116137e25760ff61466284614550565b1681101561473a57505f905b60808601918183526146808183614543565b5f198101939084116137e2576146b18760ff6146ab8180958d60a0836146bc9c169101525116614550565b16614543565b166040880152614543565b92600184018094116137e25760ff6146f292816146df6146ed946146f898614543565b1660208801525b168661451a565b614575565b90614583565b8152600160e0820152600482111561472d5760031982019182116137e25760ff8061472a93165b166060820152614be7565b90565b61472a915060ff5f61471f565b6147509060ff61474985614550565b169061451a565b9061466e565b60ff6001614649565b83600503600581116137e2576002608085015260028101908181116137e257600181019182116137e25760ff61479f921660a086015260ff841690614543565b600281018091116137e25760ff168060208501526001190160ff81116137e2576146ed60ff6146f894816146f294166040880152600160c08801526146e6565b50506040516147ef604082613f42565b6002815261302560f01b602082015290565b5050604051614811604082613f42565b600781526644796e616d696360c81b602082015290565b905f805b835160ff82169081101561488157614859906001600160f81b0319906148529087613fdc565b5116615413565b61486c575b614867906144bc565b61482c565b90614879614867916144bc565b91905061485e565b505060ff168061488e5750565b61489c6148a1918451614543565b613fb4565b5f925f5b815160ff8216908110156149265761490691906148ce6001600160f81b03196148528387613fdc565b61490b575b6001600160f81b0319906148e79085613fdc565b5116956149006148f682613f34565b975f1a9186613fdc565b536144bc565b6148a5565b605c61492061491989613f34565b9887613fdc565b536148d3565b509193505050565b5f908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b811015614a53575b600a906904ee2d6d415b85acef8160201b811015614a37575b662386f26fc10000811015614a23575b6305f5e100811015614a12575b612710811015614a03575b60648110156149f5575b10156149ea575b600a60216149b260018501613fb4565b938401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a83530480156149e557600a90916149b7565b505090565b6001909101906149a2565b60646002910493019261499b565b61271060049104930192614991565b6305f5e10060089104930192614986565b662386f26fc1000060109104930192614979565b602093909301926904ee2d6d415b85acef8160201b9004614969565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8104614950565b818102929181159184041417156137e257565b90815115614bc55760405191614aa0606084613f42565b604083527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208401527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f60408401528051600281018091116137e257600390046001600160fe1b03811681036137e257614b1d9060021b613fb4565b90602082019080815182019560208701908151925f83525b888110614b775750506003939495965052510680600114614b6557600214614b5b575090565b603d905f19015390565b50603d90815f19820153600119015390565b600360049199969901986001603f8b5182828260121c16870101518453828282600c1c16870101518385015382828260061c1687010151600285015316840101516003820153019497614b35565b9050604051614438602082613f42565b60ff60019116019060ff82116137e257565b614bf760ff602083015116613fb4565b9060e0810151614d1a575b60c0810151614cf6575b60ff6080820151165b60ff614c268160a085015116614bd5565b16811015614c4457806030614c3d60019386613fdc565b5301614c15565b50915b825115614cf15760ff6060840151168015159081614ce0575b50614cb4575b600a835106603001806030116137e257604084018051909160f81b6001600160f81b0319165f1a90614c9b9060ff1685613fdc565b5360ff5f198183511601169052600a8351048352614c47565b6040830160ff8151169081156137e2575f19820160ff169052602e90614cda9084613fdc565b53614c66565b905060ff604085015116145f614c60565b915090565b815115613fed5760306020830153815160011015613fed57602e6021830153614c0c565b81515f1981019081116137e257614d3360259184613fdc565b53614c02565b9060020b9060020b02908160020b9182036137e257565b60405190614d5f604083613f42565b600382526226a4a760e91b6020830152565b60405190614d80604083613f42565b600382526209a82b60eb1b6020830152565b909392938060020b8015613b1557614db08282620d89e71905614d39565b600293840b930b8303614dda57505050509050155f14614dd25761472a614d50565b61472a614d71565b90614de991620d89e805614d39565b60020b8103614e0c57505015159050614e045761472a614d71565b61472a614d50565b8060ff1d8181011890620d89e882116154015763ffffffff91600160801b7001fffcb933bd6fad37aa2d162d1a5940016001831602189190600281166153e5575b600481166153c9575b600881166153ad575b60108116615391575b60208116615375575b60408116615359575b6080811661533d575b6101008116615321575b6102008116615305575b61040081166152e9575b61080081166152cd575b61100081166152b1575b6120008116615295575b6140008116615279575b618000811661525d575b620100008116615241575b620200008116615226575b62040000811661520b575b62080000166151f2575b5f126151ea575b0160201c916151c5575b60ff80911692168083035f8212848212811690858313901516176137e2575f81126151b257925b831515806151a7575b156151955760019283929091111561516957614f6d90614f6085841c614575565b90838060a01b0316614a76565b92161461515b575b614f7f8180615826565b600160601b9190911190811561514c57614f98906158b9565b905b815f815b61513857614fac9150614550565b905f83600560ff85161161510c575b50600a6004818606119404936150fa575b620186a084146150ec575b6150dc575b614fe46144cd565b9181156150605760ff16602b039260ff84116137e25760ff84166007019360ff85116137e25760ff602085019516855260026080850152602b81116137e257600181018091116137e25761504760ff61472a968180941660a08801525116614550565b1660408401525b825260c08201525f60e0820152614be7565b60ff811690600982106150aa5750600319019260ff84116137e25760ff6150988161472a961680602087015260056080870152614550565b1660a08401526004604084015261504e565b61472a9491506150d16150cc60ff926006602088015260056040880152614562565b614bd5565b16606084015261504e565b906150e6906144bc565b90614fdc565b5091600a9004916001614fd7565b92600181018091116137e25792614fcc565b90935060ff61511a84614562565b1690604d82116137e25761513191600a0a90614583565b925f614fbb565b615143600a916144bc565b91049081614f9e565b6151559061586f565b90614f9a565b615164906157aa565b614f75565b6151859061517885841c614575565b90838060a01b0316614583565b921603614f75576151649061570b565b50506001600160a01b03169050614f75565b506012841115614f3f565b600160ff1b81146137e2575f0392614f36565b906001600160a01b03168015613b1557600160c01b046001600160a01b031690614f0f565b5f1904614f05565b6b048a170391f7dc42444e8fa290910260801c90614efe565b6d2216e584f5fa1ea926041bedfe9890920260801c91614ef4565b916e5d6af8dedb81196699c329225ee6040260801c91614ee9565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91614ede565b916f31be135f97d08fd981231505542fcfa60260801c91614ed3565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614ec9565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91614ebf565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614eb5565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614eab565b916ff3392b0822b70005940c7a398e4b70f30260801c91614ea1565b916ff987a7253ac413176f2b074cf7815e540260801c91614e97565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91614e8d565b916ffe5dee046a99a2a811c461f1969c30530260801c91614e83565b916fff2ea16466c96a3843ec78b326b528610260801c91614e7a565b916fff973b41fa98c081472e6896dfb254c00260801c91614e71565b916fffcb9843d60f6159c9db58835c9266440260801c91614e68565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91614e5f565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91614e56565b916ffff97272373d413259a46990580e213a0260801c91614e4d565b6345c3193d60e11b5f5260045260245ffd5b60ff60f81b16601160f91b8114908115615467575b8115615459575b811561544b575b8115615440575090565b600960f81b14919050565b600d60f81b81149150615436565b600560f91b8114915061542f565b600360fa1b81149150615428565b80156137e2575f190190565b8061548c602a613f65565b9161549a6040519384613f42565b602a83526154a8602a613f65565b6020840190601f1901368237835115613fed5760309053825160011015613fed576078602184015360295b600181116154fb57506154e4575090565b63e22e27eb60e01b5f52600452601460245260445ffd5b90600f8116906010821015613fed57615538916f181899199a1a9b1b9c1cb0b131b232b360811b901a61552e8487613fdc565b5360041c91615475565b6154d3565b600292830b920b8212156155525750505f1990565b60020b121561556057600190565b5f90565b60881c61556f613f80565b90815190815b61557e57505090565b600f8116906010821015613fed575f1983018381116137e2576155bc926f181899199a1a9b1b9c1cb0b131b232b360811b901a9061552e9086613fdc565b9081615575565b6155cb613f80565b90815190815b6155da57505090565b600f8116906010821015613fed575f1983018381116137e257615618926f181899199a1a9b1b9c1cb0b131b232b360811b901a9061552e9086613fdc565b90816155d1565b60ff16600a8110156156465760300160ff81116137e25760f81b6001600160f81b03191690565b60370160ff81116137e25760f81b6001600160f81b03191690565b5f80516020615cb983398151915281525f80516020615db983398151915260208201527f2f2f7777772e77332e6f72672f323030302f737667273e3c636972636c652063604082015262783d2760e81b606082015260630190565b7f707822206865696768743d2232367078222072783d22387078222072793d223881527f7078222066696c6c3d227267626128302c302c302c302e362922202f3e0000006020820152603d0190565b608081901b5f19600160801b83098180821091039080820391827003298b075b4b6a5240945790619b37fd4a1115613c295714615791577f1f514b8ee5362595de309a65c03ce543f7e851e1625ea646b8fe88b81023b92d927003298b075b4b6a5240945790619b37fd4a90600160801b900990828211900360ff1b910360011c170290565b507003298b075b4b6a5240945790619b37fd4a91500490565b7003298b075b4b6a5240945790619b37fd4a8102905f197003298b075b4b6a5240945790619b37fd4a820990828083109203918083039283600160801b1115613c29571461581e57600160801b907003298b075b4b6a5240945790619b37fd4a900990828211900360801b910360801c1790565b505060801c90565b81810291905f1982820991838084109303928084039384600160401b1115613c29571461586657600160401b910990828211900360c01b910360401c1790565b50505060401c90565b620186a08102905f19620186a0820990828083109203918083039283600160801b1115613c29571461581e57600160801b90620186a0900990828211900360801b910360801c1790565b6c47bf19673df52e37f2410011d1602c1b81810291905f1990820990828083109203918083039283600160801b1115613c29571461581e57600160801b906c47bf19673df52e37f2410011d1602c1b900990828211900360801b910360801c1790565b60209060405161592c8382613f42565b5f8152828260020b5f8112615983575b508061594f62ffffff61472a951661492e565b6040519584879551918291018487015e8401908282015f8152815193849201905e01015f815203601f198101835282613f42565b925050505f038060020b9081036137e25761472a90828061594f62ffffff6040516159af604082613f42565b60018152602d60f81b84820152949550505061593c565b604051906159d5604083613f42565b6002825261323760f01b6020830152565b604051906159f5604083613f42565b6002825261323160f01b6020830152565b60405190615a15604083613f42565b6002825261062760f31b6020830152565b60405190615a35604083613f42565b60018252600760fb1b6020830152565b9060020b9060020b01627fffff198112627fffff8213176137e257600290810b0560020b6201e8471981125f14615a9f5750615a7f615a26565b90604051615a8e604082613f42565b60018152603760f81b602082015290565b620124f719811215615ad75750615ab4615a26565b90604051615ac3604082613f42565b600481526331302e3560e01b602082015290565b6161a719811215615b0f5750615aeb615a26565b90604051615afa604082613f42565b600581526431342e323560d81b602082015290565b61138719811215615b415750604051615b29604082613f42565b6002815261031360f41b60208201529061472a615a06565b5f811215615b705750604051615b58604082613f42565b6002815261313160f01b60208201529061472a6159e6565b611388811215615bb95750604051615b89604082613f42565b6002815261313360f01b602082015290604051615ba7604082613f42565b6002815261323360f01b602082015290565b6161a8811215615c025750604051615bd2604082613f42565b6002815261313560f01b602082015290604051615bf0604082613f42565b6002815261323560f01b602082015290565b620124f8811215615c375750615c16615a06565b90604051615c25604082613f42565b6002815261191b60f11b602082015290565b6201e8481315615c5257615c496159e6565b9061472a6159c6565b604051615c60604082613f42565b60028152610c8d60f21b60208201529061472a6159c656fe203c616e696d6174652061646469746976653d2273756d22206174747269627565663d22646174613a696d6167652f7376672b786d6c3b6261736536342c00003c7376672077696474683d2732393027206865696768743d2735303027207669696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220663c7465787420783d22313270782220793d22313770782220666f6e742d66616d70616e2066696c6c3d2272676261283235352c3235352c3235352c302e3629226f3d22313030252220626567696e3d22307322206475723d223330732220726574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f6e742d73697a653d2231317078222066696c6c3d227768697465223e3c7473203c67207374796c653d227472616e73666f726d3a7472616e736c61746528326577426f783d2730203020323930203530302720786d6c6e733d27687474703a207374796c653d227472616e73666f726d3a7472616e736c6174652837327078a164736f6c634300081a000a0000000000000000000000009cb26a7183b2f4515945dc52cb4195b0d2d06c9500000000000000000000000042000000000000000000000000000000000000064554480000000000000000000000000000000000000000000000000000000000", - "nonce": "0xf", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8e2dea22951b012a77ebd82b3dac1c95db7f1686ebf3c13bd68fe08448bd7bb8", - "transactionType": "CREATE2", - "contractName": "TransparentUpgradeableProxy", - "contractAddress": "0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f", - "function": null, - "arguments": [ - "0x06e356052Ae91916fC95A1E65544D0eD60a49632", - "0x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A04", - "0x" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052604051610d80380380610d808339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610d60833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610d608339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104c68061089a83390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516104326104685f395f601001526104325ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610206919061040f565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff811115610380575f80fd5b8301601f81018513610390575f80fd5b803567ffffffffffffffff8111156103aa576103aa61032a565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103d9576103d961032a565b6040528181528282016020018710156103f0575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea164736f6c634300081a000a608060405234801561000f575f80fd5b506040516104c63803806104c683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103d1806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f80fd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f80fd5b8401601f810186136102b8575f80fd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f80fd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea164736f6c634300081a000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610300000000000000000000000006e356052ae91916fc95a1e65544d0ed60a4963200000000000000000000000007d68837a1940cf2749ff0b3e6abed23ac6f9a0400000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x10", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x12e8bb585f23cc0eccf248918c93f2c4acc771f993db4c0a850c744dad5509fa", - "transactionType": "CREATE2", - "contractName": "PositionManager", - "contractAddress": "0x12a98709bb5d0641d61458f85dcafbe17ac2d05c", - "function": null, - "arguments": [ - "0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95", - "0x000000000022D473030F116dDEE9F6B43aC78BA3", - "300000", - "0xC4Fe8f6cC445fB3F8921cEe75830F248a1D1da2F", - "0x4200000000000000000000000000000000000006" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000061018080604052346105365760a0816162a38038038091610020828561053a565b8339810103126105365780516001600160a01b03811681036105365760208201516001600160a01b03811681036105365760408301516060840151936001600160a01b03851685036105365760800151926001600160a01b03841684036105365760405161008f60408261053a565b6018815260208101907f556e697377617020763420506f736974696f6e73204e4654000000000000000082526040516100c960408261053a565b600b81526a554e492d56342d504f534d60a81b602082015281516001600160401b03811161044a575f54600181811c9116801561052c575b602082101461042c57601f81116104ca575b50806020601f8211600114610469575f9161045e575b508160011b915f199060031b1c1916175f555b8051906001600160401b03821161044a5760015490600182811c92168015610440575b602083101461042c5781601f8493116103be575b50602090601f8311600114610358575f9261034d575b50508160011b915f199060031b1c1916176001555b5190208060c0524660a05260405160208101917f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86683526040820152466060820152306080820152608081526101f460a08261053a565b51902060805260e052610100526101205261014052600160085561016052604051615d45908161055e8239608051816124d5015260a051816124af015260c05181612524015260e051818181610af601528181610eb501528181611174015281816118c001528181611c3c01528181611cd1015281816120a1015281816121980152818161295801528181612a2c01528181612f1b01528181613d4601528181613e3901528181613edc01528181613ff30152818161431b0152818161457401528181614ae901528181614c6601528181614de401528181614ec901528181614f59015261576f01526101005181818161144001526131fb01526101205181818161039c01528181610a0e01528181610dc90152614efa015261014051818181611482015281816129ca01528181613a4201528181613a9e01528181613bc20152613c4b0152610160518181816116350152611fab0152f35b015190505f80610189565b60015f9081528281209350601f198516905b8181106103a6575090846001959493921061038e575b505050811b0160015561019e565b01515f1960f88460031b161c191690555f8080610380565b9293602060018192878601518155019501930161036a565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c81019160208510610422575b90601f859493920160051c01905b8181106104145750610173565b5f8155849350600101610407565b90915081906103f9565b634e487b7160e01b5f52602260045260245ffd5b91607f169161015f565b634e487b7160e01b5f52604160045260245ffd5b90508301515f610129565b5f8080528181209250601f198416905b8181106104b25750908360019493921061049a575b5050811b015f5561013c565b8501515f1960f88460031b161c191690555f8061048e565b9192602060018192868a015181550194019201610479565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c81019160208410610522575b601f0160051c01905b8181106105175750610113565b5f815560010161050a565b9091508190610501565b90607f1690610101565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761044a5760405256fe60806040526004361015610022575b3615610018575f80fd5b6100206129c0565b005b5f3560e01c80622a3e3a1461029057806301ffc9a71461028b57806305c1ee201461028657806306fdde0314610281578063081812fc1461027c578063095ea7b3146102775780630f5730f11461027257806312261ee71461026d57806316a24131146102685780631efeed331461026357806323b872dd1461025e5780632b67b570146102595780632b9261de146102545780633644e5151461024f5780633aea60f01461024a57806342842e0e146102455780634767565f146102405780634aa4a4fc1461023b5780634afe393c14610236578063502e1a16146102315780635a9d7a681461022c5780636352211e1461022757806370a082311461022257806375794a3c1461021d5780637ba03aad1461021857806386b6be7d1461021357806389097a6a1461020e57806391dd73461461020957806395d89b4114610204578063a22cb465146101ff578063ac9650d8146101fa578063ad0b27fb146101f5578063b88d4fde146101f0578063c87b56dd146101eb578063d737d0c7146101e6578063dc4c90d3146101e1578063dd46508f146101dc578063e985e9c5146101d75763f70204050361000e576122ae565b612248565b6120c5565b612082565b61203d565b611f56565b611c7c565b611c28565b611b2b565b611a7b565b6119c6565b611884565b61185a565b6117be565b61174f565b611732565b611688565b611659565b611616565b6115cc565b6114d7565b611463565b611429565b611161565b611088565b611057565b610e72565b610d58565b610ae2565b610a65565b610a32565b6109ef565b6108e0565b610839565b610806565b6106ef565b61063e565b61056c565b61033c565b6001600160a01b038116036102a657565b5f80fd5b35906102b582610295565b565b9181601f840112156102a65782359167ffffffffffffffff83116102a657602083818601950101116102a657565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103399281815201906102e5565b90565b60606003193601126102a65760043561035481610295565b6024359067ffffffffffffffff82116102a6578136039160606003198401126102a65760443567ffffffffffffffff81116102a6576103979036906004016102b7565b6060947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693909290843b156102a6576001600160a01b03604051967f2a2d80d10000000000000000000000000000000000000000000000000000000088521660048701526060602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156102a65781016024600482013591019467ffffffffffffffff82116102a6578160071b360386136102a65760606064890152819052869460e48601949392915f5b81811061051a575050506104cb5f9694869488946044856104b36104a360248b99016102aa565b6001600160a01b03166084890152565b013560a48601526003198584030160448601526123c0565b03925af19081610500575b506104f757506104f36104e7612466565b60405191829182610328565b0390f35b6104f3906104e7565b8061050e5f610514936106ae565b80610656565b5f6104d6565b91965091929394608080826105316001948b612361565b01970191019188969594939261047c565b7fffffffff000000000000000000000000000000000000000000000000000000008116036102a657565b346102a65760206003193601126102a65760207fffffffff000000000000000000000000000000000000000000000000000000006004356105ac81610542565b167f01ffc9a7000000000000000000000000000000000000000000000000000000008114908115610614575b81156105ea575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150145f6105df565b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491506105d8565b60206003193601126102a65761002060043533612a54565b5f9103126102a657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176106a957604052565b610660565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a957604052565b346102a6575f6003193601126102a6576040515f80548060011c90600181169081156107fc575b6020831082146107cf5782855260208501919081156107985750600114610748575b6104f3846104e7818603826106ae565b5f8080529250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818410610784575050016104e782610738565b805484840152602090930192600101610771565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b0190506104e782610738565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610716565b346102a65760206003193601126102a6576004355f52600460205260206001600160a01b0360405f205416604051908152f35b346102a65760406003193601126102a65760043561085681610295565b602435805f5260026020526001600160a01b0360405f2054169182331415806108af575b6108875761002092612ab5565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b50825f52600560205260ff6108d83360405f20906001600160a01b03165f5260205260405f2090565b54161561087a565b60a06003193601126102a6576004356108f881610295565b602435604435916064359260843567ffffffffffffffff81116102a6576109239036906004016102b7565b948242116109c7576109bc856109c293610020986109b6885f8099868252600260205281896001600160a01b036040832054169c8d9981604051977f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad89526001600160a01b0360208a01911681526040890192835260608901948552608089019687528160a08a20995252525252612b2c565b91612be5565b82612a54565b612ab5565b7f5a9165ff000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576004355f52600760205260206001600160a01b0360405f205416604051908152f35b346102a65760206003193601126102a6576020610a9c600435610a8781612669565b919082851c60020b9260081c60020b91612e68565b6fffffffffffffffffffffffffffffffff60405191168152f35b60031960609101126102a657600435610ace81610295565b90602435610adb81610295565b9060443590565b346102a657610af036610ab6565b91610b1a7f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30578291610c41610b54610b48610b3b865f52600260205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b91610b6a6001600160a01b03851693841461302f565b610bb46001600160a01b03821694610b83861515613094565b8433148015610cf2575b8015610ccd575b610b9d906130f9565b6001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610bf5816001600160a01b03165f52600360205260405f2090565b80546001019055610c0e855f52600260205260405f2090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610c7e610c56845f52600460205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4610cbe610cb7825f52600960205260405f2090565b5460ff1690565b610cc457005b6100209061315e565b50610b9d610ce9610b48610b3b8a5f52600460205260405f2090565b33149050610b94565b50610d2b610cb733610d15846001600160a01b03165f52600560205260405f2090565b906001600160a01b03165f5260205260405f2090565b610b8d565b7fd4b05fe0000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101006003193601126102a657600435610d7181610295565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102a65760e43567ffffffffffffffff81116102a657610dbb9036906004016102b7565b916060926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576001600160a01b035f80946104cb604051978896879586947f2b67b570000000000000000000000000000000000000000000000000000000008652166004850152610e3d602485016122f6565b6001600160a01b0360a435610e5181610295565b1660a485015260c43560c485015261010060e48501526101048401916123c0565b60606003193601126102a657602435600435610e8d82610295565b60443567ffffffffffffffff81116102a657610ead9036906004016102b7565b610ed99391937f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057610ee783336132b6565b1561102b576001600160a01b03610f09610b3b855f52600760205260405f2090565b1680610fef57505f83815260096020526040902080546001179055610fbf90610fbb90610fb56001600160a01b03851696610f5088610c0e895f52600760205260405f2090565b610f896040519384927f8d57f6b20000000000000000000000000000000000000000000000000000000060208501528960248501612495565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826106ae565b8361334b565b1590565b610fea57507f9709492381f90bdc5938bb4e3b8e35b7e0eac8af058619e27191c5a40ce79fa95f80a3005b61338c565b7f25fbd8be000000000000000000000000000000000000000000000000000000005f5260048490526001600160a01b031660245260445ffd5b5ffd5b7f0ca968d8000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346102a6575f6003193601126102a65760206110716124ac565b604051908152f35b6044359081151582036102a657565b60c06003193601126102a6576004356110a081610295565b6024356110ac81610295565b6110b4611079565b906064359260843560a43567ffffffffffffffff81116102a6576110dc9036906004016102b7565b8692919242116109c7578361115c936109bc926109b6885f6100209c8189818f81604051977f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f7689526001600160a01b0360208a0191168152600160408a019316835260608901948552608089019687528160a08a20995252525252612b2c565b6136b8565b346102a65761116f36610ab6565b6111987f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30576111b4610b48610b3b835f52600260205260405f2090565b916111ca6001600160a01b03851693841461302f565b816001600160a01b03821680946111e2821515613094565b8033148015611401575b80156113dc575b6111fc906130f9565b611217876001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611258846001600160a01b03165f52600360205260405f2090565b8054600101905561127584610c0e855f52600260205260405f2090565b61128a610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a46112c3610cb7835f52600960205260405f2090565b6113ce575b3b159182156112db575b6100208361257e565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039490941660248501526044840191909152608060648401525f6084840181905260209250839160a49183915af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f9161139a575b5016145f806112d2565b6113bc915060203d6020116113c2575b6113b481836106ae565b810190612569565b5f611390565b503d6113aa565b6123fe565b6113d78261315e565b6112c8565b506111fc6113f8610b48610b3b865f52600460205260405f2090565b331490506111f3565b50611424610cb733610d158a6001600160a01b03165f52600560205260405f2090565b6111ec565b346102a6575f6003193601126102a65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156102a65782359167ffffffffffffffff83116102a6576020808501948460051b0101116102a657565b60406003193601126102a65760043567ffffffffffffffff81116102a6576115039036906004016102b7565b60243567ffffffffffffffff81116102a6576115239036906004016114a6565b916001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a45761157f93337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d61376b565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a65760406003193601126102a6576004356115e981610295565b6001600160a01b0360243591165f52600660205260405f20905f52602052602060405f2054604051908152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576020611677600435612648565b6001600160a01b0360405191168152f35b346102a65760206003193601126102a6576001600160a01b036004356116ad81610295565b1680156116d4575f5260036020526104f360405f2054604051918291829190602083019252565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b346102a6575f6003193601126102a6576020600854604051908152f35b346102a65760206003193601126102a65760c061176d600435612669565b6117b760405180936001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a0820152f35b346102a65760206003193601126102a6576004357fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000081168091036102a6575f908152600a60209081526040918290208054600182015460029283015485516001600160a01b0393841681528383169581019590955260a082811c62ffffff169686019690965260b89190911c90920b6060840152166080820152f35b346102a65760206003193601126102a6576004355f526009602052602060405f2054604051908152f35b346102a65760206003193601126102a65760043567ffffffffffffffff81116102a6576118b59036906004016102b7565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361199e5760408135189063ffffffff60408201351663ffffffe0601f8201169260608401602084013518179282019260608401359483641fffffffe08760051b16805f905b8881831061196f5790506080929150010191011017611962576060608063ffffffff61195796169401920161376b565b6104f36104e7612452565b633b99b53d5f526004601cfd5b8294509263ffffffe0601f60808060209687969801013599848b1817998d010135011601019201869291611927565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a6576040515f6001548060011c9060018116908115611a71575b6020831082146107cf5782855260208501919081156107985750600114611a1f576104f3846104e7818603826106ae565b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b818410611a5d575050016104e782610738565b805484840152602090930192600101611a4a565b91607f16916119ee565b346102a65760406003193601126102a657600435611a9881610295565b60243580151581036102a65761002091336136b8565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611ae057505050505090565b9091929394602080611b1c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102e5565b97019301930191939290611ad1565b60206003193601126102a65760043567ffffffffffffffff81116102a657611b579036906004016114a6565b90611b6182612747565b91611b6f60405193846106ae565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611b9c82612747565b015f5b818110611c175750505f5b818110611bbf57604051806104f38682611aae565b5f80611bcc83858761278c565b90611bdc604051809381936127f1565b0390305af4611be9612466565b9015611c0f5790600191611bfd82876127fe565b52611c0881866127fe565b5001611baa565b602081519101fd5b806060602080938801015201611b9f565b60206003193601126102a657600435611c607f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611c6e81336132b6565b1561102b576100209061315e565b346102a65760806003193601126102a657600435611c9981610295565b60243590611ca682610295565b60443560643567ffffffffffffffff81116102a657611cc99036906004016102b7565b939091611cf57f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611d11610b48610b3b835f52600260205260405f2090565b91611d276001600160a01b03861693841461302f565b816001600160a01b0382168094611d3f821515613094565b8033148015611f2e575b8015611f09575b611d59906130f9565b611d74886001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611db5846001600160a01b03165f52600360205260405f2090565b80546001019055611dd284610c0e855f52600260205260405f2090565b611de7610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611e20610cb7835f52600960205260405f2090565b611efb575b3b15938415611e38575b6100208561257e565b602094505f90611e78604051978896879586947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701612812565b03925af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91611edc575b5016145f808080611e2f565b611ef5915060203d6020116113c2576113b481836106ae565b5f611ed0565b611f048261315e565b611e25565b50611d59611f25610b48610b3b865f52600460205260405f2090565b33149050611d50565b50611f51610cb733610d158b6001600160a01b03165f52600560205260405f2090565b611d49565b346102a65760206003193601126102a657600435604051907fe9dc637500000000000000000000000000000000000000000000000000000000825230600483015260248201525f816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9575f90611fea575b6104f39060405191829182610328565b503d805f833e611ffa81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a6570181601f820112156102a6576104f39181602061203893519101612840565b611fda565b346102a6575f6003193601126102a65760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6001600160a01b0360405191168152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60406003193601126102a65760043567ffffffffffffffff81116102a6576120f19036906004016102b7565b6024356001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a457337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d80421161221d576040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f818061218b6024820187896123c0565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9576121cd575b610020613746565b3d805f833e6121dc81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a657019080601f830112156102a657815161221692602001612840565b50806121c5565b7fbfb22adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102a65760406003193601126102a657602060ff6122a260043561226c81610295565b6001600160a01b036024359161228183610295565b165f526005845260405f20906001600160a01b03165f5260205260405f2090565b54166040519015158152f35b600319360160c081126102a65760a0136102a65760206122d860a4356122d381610295565b6128a3565b6040519060020b8152f35b359065ffffffffffff821682036102a657565b6001600160a01b0360243561230a81610295565b1681526001600160a01b0360443561232181610295565b16602082015260643565ffffffffffff81168091036102a657604082015260843565ffffffffffff811681036102a65765ffffffffffff60609116910152565b65ffffffffffff6123ba606080936001600160a01b03813561238281610295565b1686526001600160a01b03602082013561239b81610295565b166020870152836123ae604083016122e3565b166040870152016122e3565b16910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6040513d5f823e3d90fd5b604051906102b56080836106ae565b67ffffffffffffffff81116106a957601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b604051906124616020836106ae565b5f8252565b3d15612490573d9061247782612418565b9161248560405193846106ae565b82523d5f602084013e565b606090565b6040906103399492815281602082015201916123c0565b467f0000000000000000000000000000000000000000000000000000000000000000036124f7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f000000000000000000000000000000000000000000000000000000000000000060408201524660608201523060808201526080815261256360a0826106ae565b51902090565b908160209103126102a6575161033981610542565b1561258557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fd5b156125ea57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b5f5260026020526001600160a01b0360405f205416906102b58215156125e3565b5f60806040516126788161068d565b82815282602082015282604082015282606082015201525f52600960205260405f2054807fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f206127446127346002604051936126de8561068d565b6001600160a01b03815416855261272661271c60018301546001600160a01b038116602089015262ffffff8160a01c16604089015260b81c60020b90565b60020b6060870152565b01546001600160a01b031690565b6001600160a01b03166080830152565b91565b67ffffffffffffffff81116106a95760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156127ec5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102a657019081359167ffffffffffffffff83116102a65760200182360381136102a6579190565b61275f565b908092918237015f815290565b80518210156127ec5760209160051b010190565b90926001600160a01b03608093816103399896168452166020830152604082015281606082015201916123c0565b92919261284c82612418565b9161285a60405193846106ae565b8294818452818301116102a6578281602093845f96015e010152565b8060020b036102a657565b908160209103126102a6575161033981612876565b62ffffff8116036102a657565b6001600160a01b03604051917f6276cbbe000000000000000000000000000000000000000000000000000000008352816004356128df81610295565b166004840152816024356128f281610295565b16602484015262ffffff60443561290881612896565b16604484015260643561291a81612876565b60020b606484015261294160843561293181610295565b6001600160a01b03166084850152565b1660a482015260208160c4815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af15f918161298f575b506103395750627fffff90565b6129b291925060203d6020116129b9575b6129aa81836106ae565b810190612881565b905f612982565b503d6129a0565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633141580612a21575b6129f957565b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314156129f3565b906001600160a01b03600160ff83161b92165f52600660205260405f209060081c5f5260205260405f20818154188091551615612a8d57565b7f1fb09b80000000000000000000000000000000000000000000000000000000005f5260045ffd5b906001600160a01b038091845f526004602052612b038160405f20906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b90612b356124ac565b91604051927f19010000000000000000000000000000000000000000000000000000000000008452600284015260228301525f604060428420938281528260208201520152565b91908260409103126102a6576020823592013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff601b9116019060ff8211612bd157565b612b92565b90604010156127ec5760400190565b90833b612d7a5760418103612cee5790602092612c6e83612c46612c40612c1a612c125f98880188612b7c565b949097612bd6565b357fff000000000000000000000000000000000000000000000000000000000000001690565b60f81c90565b935b604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156113c9576001600160a01b035f5116908115612cc6576001600160a01b031603612c9e57565b7f815e1d64000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b9060408203612d5257602092612d0b825f94612c6e940190612b7c565b929092612d4c612d47612d417f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c90565b60ff1690565b612bbf565b93612c48565b7f4be6321b000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092612dc1936001600160a01b03602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501612495565b0392165afa9081156113c9577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000915f91612e49575b501603612e2157565b7fb0669cbc000000000000000000000000000000000000000000000000000000005f5260045ffd5b612e62915060203d6020116113c2576113b481836106ae565b5f612e18565b9290612ea39260a092604051956026870152600686015260038501523084525f603a600c860120948160408201528160208201525220614bbf565b60068101809111612bd15760408051602081810194855291810192909252612f0f929091612ed48160608101610f89565b519020604051809381927f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9576fffffffffffffffffffffffffffffffff915f91612f6057501690565b612f82915060203d602011612f86575b612f7a81836106ae565b810190612f8d565b1690565b503d612f70565b908160209103126102a6575190565b60206001600160a01b03916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156113c9575f91613010575b50151590565b613029915060203d602011612f8657612f7a81836106ae565b5f61300a565b1561303657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b1561309b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b1561310057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b6001600160a01b0361317b610b3b835f52600760205260405f2090565b1690811561328e575f81815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556131cb610c56825f52600760205260405f2090565b813b6131f8575b7fa0ebb1de82db929a9153472f37d3a66dbede4436258311ad0f52a35a2c91d1505f80a3565b5a7f000000000000000000000000000000000000000000000000000000000000000080911061328957823b156102a6575f60405180927faf45dd140000000000000000000000000000000000000000000000000000000082528183878261326789600483019190602083019252565b0393f1613275575b506131d2565b8061050e5f613283936106ae565b5f61326f565b6137d4565b7f237e6c28000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b036132c783612648565b16916001600160a01b03821692831492831561332a575b5082156132ea57505090565b60ff9250906001600160a01b0361330361332593612648565b165f52600560205260405f20906001600160a01b03165f5260205260405f2090565b541690565b908093505f5260046020526001600160a01b0360405f20541614915f6132de565b803b1561336457815f92918360208194519301915af190565b7f7c402b21000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f8d57f6b2000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f81ea5e9e0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fb1a9116f000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7face944810000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60206001600160a01b03807f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31931693845f526005835261370c8160405f20906001600160a01b03165f5260205260405f2090565b951515957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff88161790556040519586521693a3565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d565b909291938284036137ac575f5b848110156137a45760019061379e81850161379483888b61278c565b913560f81c6137fc565b01613778565b509350505050565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fed43c3a6000000000000000000000000000000000000000000000000000000005f5260045ffd5b909190600b8110156139175780613827575061381b906102b5926149cc565b94939093929192614b63565b60048103613846575061383d906102b592614185565b93929092614a79565b60018103613868575061385c906102b5926149cc565b94939093929192614a0e565b600281036138975750613881613891916102b5936145df565b9890979691959295949394613cc2565b9561478a565b600581036138c357506138b06138bd916102b593614481565b9790969591949294613cc2565b94614543565b91600383146138ff57505061102891505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f52600452602490565b6102b592509061390e91614185565b939290926141c1565b600d8103613933575061392d906102b592613caf565b90614147565b6011810361395b575061394c613955916102b593613e9e565b92909192613cc2565b9161412c565b600b810361398f5750613989613977613983926102b594613e9e565b93829493929193613f73565b92613fa1565b91613fe2565b600e81036139c157506139b56139ab6139bb926102b594613e9e565b9282949291613cc2565b92613eb6565b91613eca565b601281036139dc57506139d7906102b592613ac8565b613e32565b601381036139f857506139f2906102b592613caf565b90613d25565b60148103613a1f5750613a11613a19916102b593613caf565b919091613cc2565b90613d07565b60158103613a6d5750613a38613a68916102b593613ac8565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690613b54565b613c39565b9160168314613a8257505061102891506138d4565b6102b59250613ac391613a9491613ac8565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613ad4565b613bb0565b90602011611962573590565b613adf903090614bdf565b7f80000000000000000000000000000000000000000000000000000000000000008214613b4f578115613b3e575b8111613b165790565b7ff4d678b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050613b495f614c5f565b90613b0d565b905090565b90613b5f305f614bdf565b907f80000000000000000000000000000000000000000000000000000000000000008314613baa578215613b98575b508111613b165790565b613ba3919250614c5f565b905f613b8e565b50905090565b80613bb85750565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b156102a6575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af180156113c957613c2f5750565b5f6102b5916106ae565b80613c415750565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af180156113c957613c2f5750565b9190604011611962576020823592013590565b6001600160a01b03811660018103613cfb5750507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b60020361033957503090565b90613d1182614cd1565b9081613d1c57505050565b6102b592614d37565b90613d2f82614ddd565b908115613e01578111613dd5576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6575f9283926040519485809481937f80f0b44c0000000000000000000000000000000000000000000000000000000083526020600484016001600160a01b036040820194168152015203925af180156113c957613dc75750565b8061050e5f6102b5936106ae565b6102b5917f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90613eca565b505050565b7f80000000000000000000000000000000000000000000000000000000000000008114612bd1575f0390565b613e5d81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b907f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f831215613e94576139896102b593613e06565b6102b59291613eca565b90606011611962578035916040602083013592013590565b9081613ec6576103399150614ddd565b5090565b90918015613e01576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156113c957613f5e5750565b80613f6a5f80936106ae565b8003126102a657565b15613f9d577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b3090565b907f80000000000000000000000000000000000000000000000000000000000000008203613fd3576103399150614cd1565b81613ec6576103399150614c5f565b908215613e01576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f8160248183885af180156113c957614118575b506001600160a01b0381166140ce5750506020906004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b6140cb9060203d602011612f8657612f7a81836106ae565b50565b5f93602093926140dd92614ea7565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b8061050e5f614126936106ae565b5f614064565b9161413e6102b593826139bb82614ddd565b6139bb82614ddd565b906102b59161417c7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c918261398982614c5f565b61398982614c5f565b919082359260208101359260408201359263ffffffff60608401351683019063ffffffff82351693602080840193860101910110611962579190565b939290927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6141f186826132b6565b156143ae575061420085612669565b9290938360081c60020b958460201c60020b9661423761422289838a8d612e68565b6fffffffffffffffffffffffffffffffff1690565b966142418a612648565b955f6142558c5f52600960205260405f2090565b5561425f8b614faa565b5f9989614291575b505050505050508160ff1661427e575b5050505050565b614287946151b4565b5f80808080614277565b60409495969a509061430e916142d16142b16142ac8d61507e565b613e06565b916142c76142bd612409565b97889060020b9052565b60020b6020870152565b858501528b606085015284519a8b9485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9575f965f9161436e575b509061435d826143629493986150b0565b6150ed565b5f808080808080614267565b61435d97506143629392915061439b9060403d6040116143a7575b61439381836106ae565b8101906143e3565b9790979192935061434c565b503d614389565b6001600160a01b03907f0ca968d8000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b91908260409103126102a6576020825192015190565b6060610339959361444a83610140956001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201528161012082015201916123c0565b91908260a08101359260c08201359260e083013592610100810135926101208201359263ffffffff6101408401351683019063ffffffff82351693602080840193860101910110611962579190565b91908260a09103126102a6576040516144e88161068d565b608080829480356144f881610295565b8452602081013561450881610295565b6020850152604081013561451b81612896565b6040850152606081013561452e81612876565b606085015201359161453f83610295565b0152565b90916102b59796959493926fffffffffffffffffffffffffffffffff6145d861459860a061457136886144d0565b207f0000000000000000000000000000000000000000000000000000000000000000615264565b5050506145a484615303565b6145ad86615303565b6145c088356145bb81610295565b614ddd565b916145d260208a01356145bb81610295565b9361564f565b169261478a565b9091819260a08301359260c08101359260e08201359261010083013592610120810135926101408201359263ffffffff6101608401351683019063ffffffff82351693602080840193860101910110611962579190565b600260806102b593614680813561464c81610295565b85906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b600184016146c9602083013561469581610295565b82906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60408201356146d781612896565b81547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000606086013561472081612876565b60b81b79ffffff0000000000000000000000000000000000000000000000169360a01b1691161717905501359161475683610295565b01906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b90919496929793959760085492600184016008556001600160a01b038a16996147b48b1515613094565b845f5260026020526001600160a01b0360405f20541661496e5761488a6149259861491f93876102b59e61481986614800614917986001600160a01b03165f52600360205260405f2090565b80546001019055610c0e845f52600260205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461484836886144d0565b63ffffff007fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000060a066ffffff000000009320169260081b169260201b16171790565b928361489e875f52600960205260405f2090565b55837fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000168561490760016148fc847fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b015460b81c60020b90565b60020b1561492b575b505061507e565b9236906144d0565b906156fc565b506157de565b614962614967927fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b614636565b5f85614910565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152fd5b909181359260208301359260408101359260608201359263ffffffff60808401351683019063ffffffff82351693602080840193860101910110611962579190565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614a4283826132b6565b156143ae57509561435d92826142ac6102b59899614a6d614a65614a7397612669565b93909261507e565b916156fc565b906150b0565b949394929091927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614aac82826132b6565b156143ae57506102b59495614b5e9282614ac8614a7394612669565b90614a6d6fffffffffffffffffffffffffffffffff614b58614b0d60a085207f0000000000000000000000000000000000000000000000000000000000000000615264565b505050614b1f8660081c60020b615303565b614b2e8760201c60020b615303565b614b416001600160a01b03885116614ddd565b916145d26001600160a01b0360208a015116614ddd565b1661507e565b6157de565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614b9783826132b6565b156143ae575095614b5e9282614a6d6102b59899614bb7614a7396612669565b92909161507e565b6040516020810191825260066040820152604081526125636060826106ae565b6001600160a01b038116614bf257503190565b906001600160a01b0360246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa9081156113c9575f91614c46575090565b610339915060203d602011612f8657612f7a81836106ae565b614c8a81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8213614c9c575061033990613e06565b6001600160a01b03907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b038116614ce457504790565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290602090829060249082906001600160a01b03165afa9081156113c9575f91614c46575090565b9091906001600160a01b038116614d6457505f808080614d5894865af11590565b614d5f5750565b613532565b91906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d11600185511416171692828152826020820152015215614dcf5750565b6001600160a01b031661345f565b614e0881307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8212614e14575090565b6001600160a01b03907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b03809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa9081156113c9575f91614c46575090565b9091906001600160a01b0383163003614eef576102b592506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690614d37565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0394851660048201527f00000000000000000000000000000000000000000000000000000000000000008516602482015291841660448301529190921660648301525f908290608490829084905af180156113c957613dc75750565b805f5260026020525f6001600160a01b03604082205416614fcc8115156125e3565b8082526003602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055615010835f52600260205260405f2090565b80548360031b906001600160a01b03808616831b921b191617905561503d835f52600460205260405f2090565b80548360031b906001600160a01b03808616831b921b19161790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4565b905f821261508857565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b6150d3906150c58360801d8260801d0361592c565b92600f0b90600f0b0361592c565b6fffffffffffffffffffffffffffffffff169060801b1790565b929190926fffffffffffffffffffffffffffffffff8160801d94816151118761593a565b9116918291161061519957506fffffffffffffffffffffffffffffffff929350600f0b908261513f8361593a565b9116928391161061514e575050565b906151696fffffffffffffffffffffffffffffffff9261593a565b907f12816f22000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b6fffffffffffffffffffffffffffffffff906151698661593a565b5f81815260076020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091556001600160a01b039081169561525895610fbb959394919390929091604051957fb1a9116f00000000000000000000000000000000000000000000000000000000602088015260248701521660448501526064840152608483015260a482015260a48152610fb560c4826106ae565b61525f5750565b6135e5565b602090602461527b6001600160a01b039594614bbf565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156113c9575f926152e2575b506001600160a01b038216918060a01c60020b9162ffffff808360b81c169260d01c1690565b6152fc91925060203d602011612f8657612f7a81836106ae565b905f6152bc565b60020b908160ff1d82810118620d89e881116156495763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661562d575b60048116615611575b600881166155f5575b601081166155d9575b602081166155bd575b604081166155a1575b60808116615585575b6101008116615569575b610200811661554d575b6104008116615531575b6108008116615515575b61100081166154f9575b61200081166154dd575b61400081166154c1575b61800081166154a5575b620100008116615489575b62020000811661546e575b620400008116615453575b620800001661543a575b5f12615413575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0461540c565b6b048a170391f7dc42444e8fa290910260801c90615405565b6d2216e584f5fa1ea926041bedfe9890920260801c916153fb565b916e5d6af8dedb81196699c329225ee6040260801c916153f0565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916153e5565b916f31be135f97d08fd981231505542fcfa60260801c916153da565b916f70d869a156d2a1b890bb3df62baf32f70260801c916153d0565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916153c6565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916153bc565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916153b2565b916ff3392b0822b70005940c7a398e4b70f30260801c916153a8565b916ff987a7253ac413176f2b074cf7815e540260801c9161539e565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91615394565b916ffe5dee046a99a2a811c461f1969c30530260801c9161538a565b916fff2ea16466c96a3843ec78b326b528610260801c91615381565b916fff973b41fa98c081472e6896dfb254c00260801c91615378565b916fffcb9843d60f6159c9db58835c9266440260801c9161536f565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91615366565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161535d565b916ffff97272373d413259a46990580e213a0260801c91615354565b82615959565b936001600160a01b0383166001600160a01b038316116156f4575b6001600160a01b0385811695908316861161568b57505061033993506159b7565b92909391946001600160a01b038216115f146156e85782916156b1916156b795946159b7565b93615987565b6fffffffffffffffffffffffffffffffff81166fffffffffffffffffffffffffffffffff8316105f14613b4f575090565b91505061033992615987565b90919061566a565b95939460409161576261570d612409565b60088a901c60020b81529260208a811c60020b908501528585850152866060850152845198899485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156113c9575f945f926157ba575b5081949560ff166157b157505050565b6102b592615a00565b9094506157d6915060403d6040116143a75761439381836106ae565b90935f6157a1565b908160801d600f0b91600f0b915f8112806158f7575b6158955750505f81128061585e575b61580b575050565b9061581b61422261102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff91821660045216602452604490565b506fffffffffffffffffffffffffffffffff8061587a83613e06565b16166fffffffffffffffffffffffffffffffff831610615803565b906fffffffffffffffffffffffffffffffff6158b361102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff9283166004521616602452604490565b506fffffffffffffffffffffffffffffffff61591282613e06565b166fffffffffffffffffffffffffffffffff8316106157f4565b9081600f0b91820361508857565b5f81600f0b12615088576fffffffffffffffffffffffffffffffff1690565b7f8b86327a000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b916001600160a01b03610339936159ac93828116838316116159b1575b031690615b43565b615d1b565b906159a4565b916159ac91610339936001600160a01b0382166001600160a01b038216116159fa575b6001600160a01b03906159f1828416838316615bff565b92031691615c79565b906159da565b615a6a9192815f5260076020526001600160a01b0360405f20541693604051927fd8865c2700000000000000000000000000000000000000000000000000000000602085015260248401526044830152606482015260648152615a646084826106ae565b8261334b565b15615a725750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fd8865c27000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fe94f10e20000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b156102a657565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000008409928280851094039380850394615b91868511615b3c565b14615bf8576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156102a65714615c70576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395615cb9878611615b3c565b14615d13579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b906fffffffffffffffffffffffffffffffff82168092036150885756fea164736f6c634300081a000a0000000000000000000000009cb26a7183b2f4515945dc52cb4195b0d2d06c95000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba300000000000000000000000000000000000000000000000000000000000493e0000000000000000000000000c4fe8f6cc445fb3f8921cee75830f248a1d1da2f0000000000000000000000004200000000000000000000000000000000000006", - "nonce": "0x11", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x78146adcc717333a2b38865e840ecf2b984dfb8a7f22f8d16764c52b7416a446", - "transactionType": "CREATE2", - "contractName": "V4Quoter", - "contractAddress": "0xb2b34025a07af3925313b6b46f8046ee8ffba30b", - "function": null, - "arguments": [ - "0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a034607b57601f61175038819003918201601f19168301916001600160401b03831184841017607f57808492602094604052833981010312607b57516001600160a01b0381168103607b576080526040516116bc908161009482396080518181816101b5015281816102ab015281816105b001526114910152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063147d2af91461087f578063587330731461082d578063595323f5146107815780636a36a38c1461065657806391dd73461461052c578063aa2f15011461037f578063aa9d21cb1461032d578063ca253dc9146101d9578063dc4c90d31461016b5763eebe0c6a14610087575f80fd5b346101675761009536610d77565b30330361013f57806101016100fb6100f660a06fffffffffffffffffffffffffffffffff9501936100c5856110fd565b6100de876100d560c0850161110a565b16600f0b611289565b906100ec60e0840184611127565b9490933690610c2a565b61134b565b916110fd565b156101355781165b7fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60801d8116610109565b7f29c3b7ee000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b34610167575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101675760406101e936610a53565b5f806102915f61022b6102575a9688519283917f6a36a38c00000000000000000000000000000000000000000000000000000000602084015260248301610e99565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610936565b8651809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610de7565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908161030d575b506103055750506102f76102f16102e9611020565b925a9061104f565b916112b5565b905b82519182526020820152f35b9091506102f9565b610328903d805f833e6103208183610936565b810190610fbd565b6102d4565b3461016757604061033d36610c93565b5f806102915f61022b6102575a9688519283917feebe0c6a0000000000000000000000000000000000000000000000000000000060208401526024830161105c565b346101675761038d36610e2a565b30330361013f57602081016103a281836111a7565b90506103b06040840161110a565b916103ba846111fb565b9190815b610400576fffffffffffffffffffffffffffffffff847fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90919261040d82866111a7565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85018581116104dc5761046561045e6fffffffffffffffffffffffffffffffff926104ac966104819561121c565b9788611588565b939061047460808a018a611127565b939092169085159061134b565b90156105095761049390600f0b611178565b6fffffffffffffffffffffffffffffffff165b936111fb565b9180156104dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190816103be565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105159060801d611178565b6fffffffffffffffffffffffffffffffff166104a6565b346101675760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101675760043567ffffffffffffffff811161016757366023820112156101675780600401359067ffffffffffffffff82116101675736602483830101116101675773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361062e575f6024819284806040519384930183378101838152039082305af16105f9611020565b9061060657602081519101fd5b7fe0752a5a000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101675761066436610e2a565b30330361013f57602081019061067a82826111a7565b90506106886040830161110a565b91610692816111fb565b935f915b8383106106db576fffffffffffffffffffffffffffffffff857fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091929361075c6fffffffffffffffffffffffffffffffff61073d61072860019461071a6107138a61070d8b8b6111a7565b9061121c565b9b8c611588565b948593919216600f0b611289565b61073560808d018d611127565b93909261134b565b9015610767576fffffffffffffffffffffffffffffffff165b966111fb565b959493019190610696565b60801d6fffffffffffffffffffffffffffffffff16610756565b346101675761078f36610d77565b30330361013f57806107db6100fb6100f660a06fffffffffffffffffffffffffffffffff9501936107bf856110fd565b866107cc60c0840161110a565b16906100ec60e0840184611127565b1561081a576107ec9060801d611178565b81167fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b61082690600f0b611178565b8116610109565b3461016757604061083d36610c93565b5f806102915f61022b6102575a9688519283917f595323f50000000000000000000000000000000000000000000000000000000060208401526024830161105c565b3461016757604061088f36610a53565b5f806102915f61022b6102575a9688519283917faa2f150100000000000000000000000000000000000000000000000000000000602084015260248301610e99565b6060810190811067ffffffffffffffff8211176108ed57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176108ed57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176108ed57604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361016757565b359062ffffff8216820361016757565b35908160020b820361016757565b67ffffffffffffffff81116108ed57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561016757803590610a07826109b6565b92610a156040519485610936565b8284526020838301011161016757815f926020809301838601378301015290565b35906fffffffffffffffffffffffffffffffff8216820361016757565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101675760043567ffffffffffffffff81116101675760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82840301126101675760405191610ac8836108d1565b610ad482600401610977565b8352602482013567ffffffffffffffff811161016757820190806023830112156101675760048201359167ffffffffffffffff83116108ed578260051b60405193610b226020830186610936565b845281016024019060208401908383116101675760248101915b838310610b615750505050506020830152610b5990604401610a36565b604082015290565b823567ffffffffffffffff8111610167576004908301019060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083880301126101675760405190610bb28261091a565b610bbe60208401610977565b8252610bcc60408401610998565b6020830152610bdd606084016109a8565b6040830152610bee60808401610977565b606083015260a08301359167ffffffffffffffff831161016757610c1a886020809695819601016109f0565b6080820152815201920191610b3c565b91908260a091031261016757604051610c428161091a565b6080610c8e818395610c5381610977565b8552610c6160208201610977565b6020860152610c7260408201610998565b6040860152610c83606082016109a8565b606086015201610977565b910152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101675760043567ffffffffffffffff8111610167576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828403011261016757604051916080830183811067ffffffffffffffff8211176108ed57604052610d278183600401610c2a565b835260a48201358015158103610167576020840152610d4860c48301610a36565b604084015260e48201359167ffffffffffffffff831161016757610d6f92016004016109f0565b606082015290565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610167576004359067ffffffffffffffff8211610167577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610100920301126101675760040190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610167576004359067ffffffffffffffff8211610167577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826060920301126101675760040190565b60208152608081019173ffffffffffffffffffffffffffffffffffffffff815116602083015260208101519260606040840152835180915260a0830190602060a08260051b8601019501915f905b828210610f1157505050506fffffffffffffffffffffffffffffffff604060609201511691015290565b90919295602080610faf837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608a6001960301865260a060808c5173ffffffffffffffffffffffffffffffffffffffff815116845262ffffff868201511686850152604081015160020b604085015273ffffffffffffffffffffffffffffffffffffffff60608201511660608501520151918160808201520190610de7565b980192019201909291610ee7565b6020818303126101675780519067ffffffffffffffff8211610167570181601f8201121561016757805190610ff1826109b6565b92610fff6040519485610936565b8284526020838301011161016757815f9260208093018386015e8301015290565b3d1561104a573d90611031826109b6565b9161103f6040519384610936565b82523d5f602084013e565b606090565b919082039182116104dc57565b61012060606110fa93602084526110c160208501825173ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b6020810151151560c08501526fffffffffffffffffffffffffffffffff60408201511660e0850152015191610100808201520190610de7565b90565b3580151581036101675790565b356fffffffffffffffffffffffffffffffff811681036101675790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610167570180359067ffffffffffffffff82116101675760200191813603831361016757565b600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081146104dc575f0390565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610167570180359067ffffffffffffffff821161016757602001918160051b3603831361016757565b3573ffffffffffffffffffffffffffffffffffffffff811681036101675790565b919081101561125c5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6181360301821215610167570190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f800000000000000000000000000000000000000000000000000000000000000081146104dc575f0390565b7fecbd9804000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000060208301511603611309576024015190565b611347906040519182917f6190b2b0000000000000000000000000000000000000000000000000000000008352602060048401526024830190610de7565b0390fd5b92949390801561156d576401000276a4915b806040519261136b846108d1565b1515978884526020840194868652604085019073ffffffffffffffffffffffffffffffffffffffff1681526040519586957ff3cd914c00000000000000000000000000000000000000000000000000000000875260048701611417908b73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b51151560a48701525160c48601525173ffffffffffffffffffffffffffffffffffffffff1660e48501526101048401610120905281610124850152610144840137808201610144015f9052601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681010361014401817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691815a6020945f91f1908115611562575f91611530575b5080945f8312145f146115285760801d5b600f0b036114f95750565b60a090207f7a5ed734000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b600f0b6114ee565b90506020813d60201161155a575b8161154b60209383610936565b8101031261016757515f6114dd565b3d915061153e565b6040513d5f823e3d90fd5b73fffd8963efd1fc6a506488495d951d5263988d259161135d565b905f60806040516115988161091a565b82815282602082015282604082015282606082015201526115b8826111fb565b73ffffffffffffffffffffffffffffffffffffffff82169173ffffffffffffffffffffffffffffffffffffffff82168084105f14611690575073ffffffffffffffffffffffffffffffffffffffff905b1680921492602081013562ffffff8116809103610167576040820135918260020b80930361016757606001359273ffffffffffffffffffffffffffffffffffffffff84168094036101675773ffffffffffffffffffffffffffffffffffffffff90604051956116768761091a565b865216602085015260408401526060830152608082015291565b91505073ffffffffffffffffffffffffffffffffffffffff829161160856fea164736f6c634300081a000a0000000000000000000000009cb26a7183b2f4515945dc52cb4195b0d2d06c95", - "nonce": "0x12", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x0a50102128ad120a0d1b87e3aee576bf0de2133f1d7c2bf548bcb6a301103945", - "transactionType": "CREATE2", - "contractName": "StateView", - "contractAddress": "0x792d13207744f132943cdde4d37ec89f20ae3b0d", - "function": null, - "arguments": [ - "0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a03460b357601f610e9738819003918201601f19168301916001600160401b0383118484101760b75780849260209460405283398101031260b357516001600160a01b038116810360b357608052604051610dcb90816100cc823960805181818161012b01528181610246015281816102db0152818161039e0152818161048101528181610549015281816105db01528181610622015281816106870152818161073401528181610810015261096a0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80631c7ccb4c146108ac57806353e9c1fb146107c95780637c40f1fe146106ab5780638a2bb9e61461064657806397fd7b421461060b5780639ec538c8146105a2578063c815641c1461050b578063caedab54146103f6578063dacf1d2f146102ff578063dc4c90d314610291578063f0928f29146101e65763fa6793d51461009d575f80fd5b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576100d7600435610d2f565b600381018091116101b957604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f90610177575b6020906fffffffffffffffffffffffffffffffff60405191168152f35b506020813d6020116101a6575b8161019160209383610a2b565b810103126101a2576020905161015a565b5f80fd5b3d9150610184565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b346101a2576101fd6101f7366109f7565b90610d8b565b604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f90610177576020906fffffffffffffffffffffffffffffffff60405191168152f35b346101a2575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101a25760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760243573ffffffffffffffffffffffffffffffffffffffff811681036101a2576103566109e7565b6064358060020b81036101a2576103f2926103c2926040519260843560268501526006840152600383015281525f603a600c83012091816040820152816020820152526004357f0000000000000000000000000000000000000000000000000000000000000000610bc0565b604080516fffffffffffffffffffffffffffffffff90941684526020840192909252908201529081906060820190565b0390f35b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576104386104306109d7565b600435610d55565b604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f906104d8575b6040908151906fffffffffffffffffffffffffffffffff8116825260801d600f0b6020820152f35b506020813d602011610503575b816104f260209383610a2b565b810103126101a257604090516104b0565b3d91506104e5565b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257608062ffffff8061056d6004357f0000000000000000000000000000000000000000000000000000000000000000610c63565b92949173ffffffffffffffffffffffffffffffffffffffff6040519616865260020b6020860152166040840152166060820152f35b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406105ff6004357f0000000000000000000000000000000000000000000000000000000000000000610c58565b82519182526020820152f35b346101a2576103f26103c261061f366109f7565b907f0000000000000000000000000000000000000000000000000000000000000000610bc0565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406105ff6106826109d7565b6004357f0000000000000000000000000000000000000000000000000000000000000000610b1e565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576106e56104306109d7565b604051907f35fd631a0000000000000000000000000000000000000000000000000000000082526004820152600360248201525f8160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae576080915f916107a7575b506020810151906060604082015191015190604051926fffffffffffffffffffffffffffffffff81168452841d600f0b602084015260408301526060820152f35b6107c391503d805f833e6107bb8183610a2b565b810190610a99565b82610766565b346101a25760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406004356108056109d7565b9061080e6109e7565b7f00000000000000000000000000000000000000000000000000000000000000009061083a8383610c58565b90610846868686610b1e565b96909361085f610857828989610b1e565b989097610c63565b5050905060020b9160020b82125f14610885575050505003910382519182526020820152f35b95969593949360020b1361089d5750500391036105ff565b949392909403039203036105ff565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576024358060010b8091036101a2576108f4600435610d2f565b600581018091116101b957604051906020820192835260408201526040815261091e606082610a2b565b519020604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f906109a4575b602090604051908152f35b506020813d6020116109cf575b816109be60209383610a2b565b810103126101a25760209051610999565b3d91506109b1565b602435908160020b82036101a257565b604435908160020b82036101a257565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60409101126101a2576004359060243590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a6c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6020818303126101a25780519067ffffffffffffffff82116101a257019080601f830112156101a25781519167ffffffffffffffff8311610a6c578260051b9060405193610aea6020840186610a2b565b84526020808501928201019283116101a257602001905b828210610b0e5750505090565b8151815260209182019101610b01565b9291610b2991610d55565b600181018091116101b95773ffffffffffffffffffffffffffffffffffffffff9260445f9260405195869384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260026024840152165afa9182156101ae575f92610ba4575b506040602083015192015190565b610bb99192503d805f833e6107bb8183610a2b565b905f610b96565b6044610be273ffffffffffffffffffffffffffffffffffffffff945f94610d8b565b60405194859384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260036024840152165afa9081156101ae575f91610c3e575b506020810151916060604083015192015190565b610c5291503d805f833e6107bb8183610a2b565b5f610c2a565b9190610b2990610d2f565b6020906024610c8773ffffffffffffffffffffffffffffffffffffffff9594610d2f565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156101ae575f92610cfb575b5073ffffffffffffffffffffffffffffffffffffffff8216918060a01c60020b9162ffffff808360b81c169260d01c1690565b9091506020813d602011610d27575b81610d1760209383610a2b565b810103126101a25751905f610cc8565b3d9150610d0a565b604051602081019182526006604082015260408152610d4f606082610a2b565b51902090565b610d5e90610d2f565b600481018091116101b95760405190602082019260020b8352604082015260408152610d4f606082610a2b565b610d9490610d2f565b600681018091116101b9576040519060208201928352604082015260408152610d4f606082610a2b56fea164736f6c634300081a000a0000000000000000000000009cb26a7183b2f4515945dc52cb4195b0d2d06c95", - "nonce": "0x13", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xc86ecedaedffade8c5d352f87c5204ff9763f1254f0c609ff7eaae88021a6eb1", - "transactionType": "CREATE", - "contractName": "Quoter", - "contractAddress": "0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034", - "function": null, - "arguments": [ - "0x780E96775371e1C4F4cD1524a578B8f1b12ECE58" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x60a06040523480156200001157600080fd5b50604051620029ca380380620029ca83398101604081905262000034916200004a565b60601b6001600160601b0319166080526200007a565b6000602082840312156200005c578081fd5b81516001600160a01b038116811462000073578182fd5b9392505050565b60805160601c61292d6200009d600039806104d45280610cff525061292d6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063c45a01551161005b578063c45a0155146100e4578063c6a5026a146100f9578063cdca17531461010c578063d85c3d631461011f5761007d565b80632f80bb1d1461008257806386e3a7cf146100ae578063bd21704a146100d1575b600080fd5b6100956100903660046124db565b610132565b6040516100a5949392919061281f565b60405180910390f35b6100c16100bc366004612635565b6102e9565b6040516100a594939291906128ba565b6100c16100df366004612583565b61042a565b6100ec6104d2565b6040516100a591906127fd565b6100c1610107366004612583565b6104f6565b61009561011a3660046124db565b61058b565b6100c161012d36600461259e565b610720565b6000606080600061014286610818565b67ffffffffffffffff8111801561015857600080fd5b50604051908082528060200260200182016040528015610182578160200160208202803683370190505b50925061018e86610818565b67ffffffffffffffff811180156101a457600080fd5b506040519080825280602002602001820160405280156101ce578160200160208202803683370190505b50915060005b60008060006101e28a610829565b925092509250600080600061023d6040518060a00160405280876001600160a01b03168152602001886001600160a01b031681526020018e81526020018662ffffff16815260200160006001600160a01b031681525061042a565b50925092509250818a888151811061025157fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508089888151811061027e57fe5b602002602001019063ffffffff16908163ffffffff1681525050829b5086806001019750506102ac8d61085a565b156102c1576102ba8d610862565b9c506102d5565b508a9950600096506102e095505050505050565b5050505050506101d4565b92959194509250565b60008060008060008060008088602001516001600160a01b031689600001516001600160a01b031610905060008960800151905060008a60a001516001600160a01b03166000141561033c575060408a01515b6000604051806080016040528085151581526020016001151581526020018d6060015162ffffff1681526020018d60a001516001600160a01b0316600014610388578d60a001516103ae565b856103a75773fffd8963efd1fc6a506488495d951d5263988d256103ae565b6401000276a45b6001600160a01b031681525090506103d6836103cd8e6040015161087f565b60000383610895565b909c509a509097509550600087136103ee57856103f0565b865b9a50600087136104035786600003610408565b856000035b9450811561041c5781851461041c57600080fd5b505050505050509193509193565b6000806000806000610449866000015187602001518860600151610cf8565b905060006040518060c0016040528088600001516001600160a01b0316815260200188602001516001600160a01b0316815260200188604001518152602001886060015162ffffff168152602001836001600160a01b0316815260200160006001600160a01b031681525090506104bf816102e9565b5091999098509096509294509192505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000806000610515866000015187602001518860600151610cf8565b905060006040518060c0016040528088600001516001600160a01b0316815260200188602001516001600160a01b0316815260200188604001518152602001836001600160a01b03168152602001886060015162ffffff16815260200160006001600160a01b031681525090506104bf81610720565b6000606080600061059b86610818565b67ffffffffffffffff811180156105b157600080fd5b506040519080825280602002602001820160405280156105db578160200160208202803683370190505b5092506105e786610818565b67ffffffffffffffff811180156105fd57600080fd5b50604051908082528060200260200182016040528015610627578160200160208202803683370190505b50915060005b600080600061063b8a610829565b92509250925060008060006106966040518060a00160405280886001600160a01b03168152602001876001600160a01b031681526020018e81526020018662ffffff16815260200160006001600160a01b03168152506104f6565b50925092509250818a88815181106106aa57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050808988815181106106d757fe5b602002602001019063ffffffff16908163ffffffff1681525050829b5086806001019750506107058d61085a565b156102c1576107138d610862565b9c5050505050505061062d565b600080600080600080600087602001516001600160a01b031688600001516001600160a01b03161090506000886060015190506000604051806080016040528084151581526020016000151581526020018b6080015162ffffff1681526020018b60a001516001600160a01b031660001461079f578b60a001516107c5565b846107be5773fffd8963efd1fc6a506488495d951d5263988d256107c5565b6401000276a45b6001600160a01b031681525090506107ea826107e48c6040015161087f565b83610895565b909a509850909550935060008513610805578460000361080a565b836000035b985050505050509193509193565b80516017601319909101045b919050565b600080806108378482610d36565b9250610844846014610de6565b9050610851846017610d36565b91509193909250565b516042111590565b805160609061087990839060179060161901610e8d565b92915050565b6000600160ff1b821061089157600080fd5b5090565b6000808313602083015280806001816108ad88610fe0565b905060006040518060e001604052808981526020016000815260200183600001516001600160a01b03168152602001836020015160020b81526020016000815260200160006001600160801b031681526020018a6001600160a01b0316631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b15801561093957600080fd5b505afa15801561094d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061097191906126af565b6001600160801b0316905290505b8051158015906109a9575086606001516001600160a01b031681604001516001600160a01b031614155b15610cb4576109b661238c565b6040808301516001600160a01b03168252830151606083015189516109de928d9290916110fb565b15156040830152600290810b810b60208301819052620d89e719910b1215610a0f57620d89e7196020820152610a2e565b6020810151620d89e860029190910b1315610a2e57620d89e860208201525b610a3b81602001516112f7565b6001600160a01b0316606082015260408201518851610abe9190610a7b5789606001516001600160a01b031683606001516001600160a01b031611610a99565b89606001516001600160a01b031683606001516001600160a01b0316105b610aa7578260600151610aad565b89606001515b60c0850151855160408d0151611629565b60c085015260a084015260808301526001600160a01b03166040830152602088015115610b2457610af88160c0015182608001510161087f565b825103825260a0810151610b1a90610b0f9061087f565b60208401519061181b565b6020830152610b5f565b610b318160a0015161087f565b825101825260c08101516080820151610b5991610b4e910161087f565b602084015190611831565b60208301525b80606001516001600160a01b031682604001516001600160a01b03161415610c7357806040015115610c4957602081015160405163f30dba9360e01b81526000916001600160a01b038d169163f30dba9391610bbd91600401612811565b6101006040518083038186803b158015610bd657600080fd5b505afa158015610bea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0e91906126c9565b505050505050915050886000015115610c25576000035b610c338360c0015182611847565b6001600160801b031660c0840152506001909301925b8751610c59578060200151610c62565b60018160200151035b600290810b900b6060830152610cae565b80600001516001600160a01b031682604001516001600160a01b031614610cae57610ca182604001516118fd565b600290810b900b60608301525b5061097f565b60208701518751151590151514610cd357602081015181518903610ce0565b8060000151880381602001515b604090920151909a9199509750919550909350505050565b6000610d2e7f0000000000000000000000000000000000000000000000000000000000000000610d29868686611c1c565b611c72565b949350505050565b600081826014011015610d85576040805162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015290519081900360640190fd5b8160140183511015610dd6576040805162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015290519081900360640190fd5b500160200151600160601b900490565b600081826003011015610e34576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b604482015290519081900360640190fd5b8160030183511015610e84576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016003015190565b60608182601f011015610ed8576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015610f20576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610f6c576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015610f8b5760405191506000825260208201604052610fd5565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610fc4578051835260209283019201610fac565b5050858452601f01601f1916604052505b5090505b9392505050565b610fe86123c8565b816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561102157600080fd5b505afa158015611035573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611059919061276f565b5050505050600290810b900b6020808401919091526001600160a01b039182168352604080516334324e9f60e21b815290519285169263d0c93a7c92600480840193919291829003018186803b1580156110b257600080fd5b505afa1580156110c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ea9190612569565b600290810b900b6040820152919050565b60008060008560020b8560020b8161110f57fe5b05905060008560020b12801561113657508560020b8560020b8161112f57fe5b0760020b15155b1561114057600019015b83156112175760008061115283611d56565b6040805163299ce14b60e11b8152600184810b6004830152915193955091935060ff84161b8001600019019160009183916001600160a01b038e1691635339c296916024808301926020929190829003018186803b1580156111b357600080fd5b505afa1580156111c7573d6000803e3d6000fd5b505050506040513d60208110156111dd57600080fd5b50511680151596509050856111f957898360ff1686030261120c565b8961120382611d68565b840360ff168603025b9650505050506112ed565b60008061122683600101611d56565b91509150600060018260ff166001901b031990506000818b6001600160a01b0316635339c296866040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561128457600080fd5b505afa158015611298573d6000803e3d6000fd5b505050506040513d60208110156112ae57600080fd5b50511680151596509050856112d057898360ff0360ff168660010101026112e6565b89836112db83611e08565b0360ff168660010101025b9650505050505b5094509492505050565b60008060008360020b1261130e578260020b611316565b8260020b6000035b9050620d89e8811115611354576040805162461bcd60e51b81526020600482015260016024820152601560fa1b604482015290519081900360640190fd5b60006001821661136857600160801b61137a565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156113ae576ffff97272373d413259a46990580e213a0260801c5b60048216156113cd576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156113ec576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561140b576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561142a576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611449576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611468576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611488576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156114a8576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156114c8576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156114e8576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611508576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611528576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611548576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611568576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611589576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156115a9576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156115c8576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156115e5576b048a170391f7dc42444e8fa20260801c5b60008460020b13156116005780600019816115fc57fe5b0490505b640100000000810615611614576001611617565b60005b60ff16602082901c0192505050919050565b60008080806001600160a01b03808916908a1610158187128015906116ae5760006116628989620f42400362ffffff16620f4240611ef2565b90508261167b576116768c8c8c6001611fa1565b611688565b6116888b8d8c600161201a565b9550858110611699578a96506116a8565b6116a58c8b83866120c5565b96505b506116f8565b816116c5576116c08b8b8b600061201a565b6116d2565b6116d28a8c8b6000611fa1565b93508388600003106116e6578995506116f8565b6116f58b8a8a60000385612111565b95505b6001600160a01b038a811690871614821561175b578080156117175750815b61172d57611728878d8c600161201a565b61172f565b855b955080801561173c575081155b6117525761174d878d8c6000611fa1565b611754565b845b94506117a5565b8080156117655750815b61177b576117768c888c6001611fa1565b61177d565b855b955080801561178a575081155b6117a05761179b8c888c600061201a565b6117a2565b845b94505b811580156117b557508860000385115b156117c1578860000394505b8180156117e057508a6001600160a01b0316876001600160a01b031614155b156117ef57858903935061180c565b611809868962ffffff168a620f42400362ffffff1661215d565b93505b50505095509550955095915050565b8082038281131560008312151461087957600080fd5b8181018281121560008312151461087957600080fd5b60008082600f0b12156118ac57826001600160801b03168260000384039150816001600160801b0316106118a7576040805162461bcd60e51b81526020600482015260026024820152614c5360f01b604482015290519081900360640190fd5b610879565b826001600160801b03168284019150816001600160801b03161015610879576040805162461bcd60e51b81526020600482015260026024820152614c4160f01b604482015290519081900360640190fd5b60006401000276a36001600160a01b03831610801590611939575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b038316105b61196e576040805162461bcd60e51b81526020600482015260016024820152602960f91b604482015290519081900360640190fd5b640100000000600160c01b03602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c97908811961790941790921717909117171760808110611a0257607f810383901c9150611a0c565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b14611c0d57886001600160a01b0316611bf1826112f7565b6001600160a01b03161115611c065781611c08565b805b611c0f565b815b9998505050505050505050565b611c246123c8565b826001600160a01b0316846001600160a01b03161115611c42579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600081602001516001600160a01b031682600001516001600160a01b031610611c9a57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b60020b600881901d9161010090910790565b6000808211611d7657600080fd5b600160801b8210611d8957608091821c91015b680100000000000000008210611da157604091821c91015b6401000000008210611db557602091821c91015b620100008210611dc757601091821c91015b6101008210611dd857600891821c91015b60108210611de857600491821c91015b60048210611df857600291821c91015b6002821061082457600101919050565b6000808211611e1657600080fd5b5060ff6001600160801b03821615611e3157607f1901611e39565b608082901c91505b67ffffffffffffffff821615611e5257603f1901611e5a565b604082901c91505b63ffffffff821615611e6f57601f1901611e77565b602082901c91505b61ffff821615611e8a57600f1901611e92565b601082901c91505b60ff821615611ea45760071901611eac565b600882901c91505b600f821615611ebe5760031901611ec6565b600482901c91505b6003821615611ed85760011901611ee0565b600282901c91505b60018216156108245760001901919050565b6000808060001985870986860292508281109083900303905080611f285760008411611f1d57600080fd5b508290049050610fd9565b808411611f3457600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b6000836001600160a01b0316856001600160a01b03161115611fc1579293925b81611fee57611fe9836001600160801b03168686036001600160a01b0316600160601b611ef2565b612011565b612011836001600160801b03168686036001600160a01b0316600160601b61215d565b95945050505050565b6000836001600160a01b0316856001600160a01b0316111561203a579293925b600160601b600160e01b03606084901b166001600160a01b03868603811690871661206457600080fd5b8361209457866001600160a01b03166120878383896001600160a01b0316611ef2565b8161208e57fe5b046120ba565b6120ba6120ab8383896001600160a01b031661215d565b886001600160a01b0316612197565b979650505050505050565b600080856001600160a01b0316116120dc57600080fd5b6000846001600160801b0316116120f257600080fd5b8161210457611fe985858560016121a2565b6120118585856001612283565b600080856001600160a01b03161161212857600080fd5b6000846001600160801b03161161213e57600080fd5b8161215057611fe98585856000612283565b61201185858560006121a2565b600061216a848484611ef2565b90506000828061217657fe5b8486091115610fd957600019811061218d57600080fd5b6001019392505050565b808204910615150190565b600081156122155760006001600160a01b038411156121d8576121d384600160601b876001600160801b0316611ef2565b6121f0565b6001600160801b038516606085901b816121ee57fe5b045b905061220d6122086001600160a01b03881683612366565b612376565b915050610d2e565b60006001600160a01b038411156122435761223e84600160601b876001600160801b031661215d565b61225a565b61225a606085901b6001600160801b038716612197565b905080866001600160a01b03161161227157600080fd5b6001600160a01b038616039050610d2e565b600082612291575083610d2e565b600160601b600160e01b03606085901b16821561231f576001600160a01b038616848102908582816122bf57fe5b0414156122f0578181018281106122ee576122e483896001600160a01b03168361215d565b9350505050610d2e565b505b61231682612311878a6001600160a01b0316868161230a57fe5b0490612366565b612197565b92505050610d2e565b6001600160a01b0386168481029085828161233657fe5b0414801561234357508082115b61234c57600080fd5b8082036122e4612208846001600160a01b038b168461215d565b8082018281101561087957600080fd5b806001600160a01b038116811461082457600080fd5b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915290565b604080516060810182526000808252602082018190529181019190915290565b803561082481612908565b8051801515811461082457600080fd5b8051600281900b811461082457600080fd5b600060a08284031215612426578081fd5b60405160a0810181811067ffffffffffffffff8211171561244357fe5b604052905080823561245481612908565b8152602083013561246481612908565b60208201526040838101359082015261247f606084016124c8565b6060820152608083013561249281612908565b6080919091015292915050565b80516001600160801b038116811461082457600080fd5b805161ffff8116811461082457600080fd5b803562ffffff8116811461082457600080fd5b600080604083850312156124ed578182fd5b823567ffffffffffffffff80821115612504578384fd5b818501915085601f830112612517578384fd5b813560208282111561252557fe5b612537601f8301601f191682016128e4565b9250818352878183860101111561254c578586fd5b818185018285013790820181019490945295939092013593505050565b60006020828403121561257a578081fd5b610fd982612403565b600060a08284031215612594578081fd5b610fd98383612415565b600060c082840312156125af578081fd5b60405160c0810181811067ffffffffffffffff821117156125cc57fe5b60405282356125da81612908565b815260208301356125ea81612908565b602082015260408381013590820152606083013561260781612908565b6060820152612618608084016124c8565b608082015261262960a084016123e8565b60a08201529392505050565b600060c08284031215612646578081fd5b60405160c0810181811067ffffffffffffffff8211171561266357fe5b604052823561267181612908565b8152602083013561268181612908565b60208201526040838101359082015261269c606084016124c8565b6060820152608083013561261881612908565b6000602082840312156126c0578081fd5b610fd98261249f565b600080600080600080600080610100898b0312156126e5578384fd5b6126ee8961249f565b9750602089015180600f0b8114612703578485fd5b80975050604089015195506060890151945060808901518060060b8114612728578485fd5b60a08a015190945061273981612908565b60c08a015190935063ffffffff81168114612752578283fd5b915061276060e08a016123f3565b90509295985092959890939650565b600080600080600080600060e0888a031215612789578081fd5b875161279481612908565b96506127a260208901612403565b95506127b0604089016124b6565b94506127be606089016124b6565b93506127cc608089016124b6565b925060a088015160ff811681146127e1578182fd5b91506127ef60c089016123f3565b905092959891949750929550565b6001600160a01b0391909116815260200190565b60029190910b815260200190565b600060808201868352602060808185015281875180845260a0860191508289019350845b818110156128685784516001600160a01b031683529383019391830191600101612843565b505084810360408601528651808252908201925081870190845b818110156128a457825163ffffffff1685529383019391830191600101612882565b5050505060609290920192909252949350505050565b9384526001600160a01b0392909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff8111828210171561290057fe5b604052919050565b6001600160a01b038116811461291d57600080fd5b5056fea164736f6c6343000706000a000000000000000000000000780e96775371e1c4f4cd1524a578b8f1b12ece58", - "nonce": "0x14", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x28fd60fdb37a0e822cc70d2b4835d3e3146830a364d6cb9f4eea48cab2c3ff41", - "transactionType": "CREATE", - "contractName": "SwapRouter02", - "contractAddress": "0xcf21367b17d22a2e2a03904ca79a5045b18231ef", - "function": null, - "arguments": [ - "0x216d3b49e8c5140D2499dA346AB5335A75f655d8", - "0x780E96775371e1C4F4cD1524a578B8f1b12ECE58", - "0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb", - "0x4200000000000000000000000000000000000006" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x6101006040526000196000553480156200001857600080fd5b5060405162006135380380620061358339810160408190526200003b9162000087565b6001600160601b0319606094851b811660805291841b821660a05291831b811660c052911b1660e052620000e3565b80516001600160a01b03811681146200008257600080fd5b919050565b600080600080608085870312156200009d578384fd5b620000a8856200006a565b9350620000b8602086016200006a565b9250620000c8604086016200006a565b9150620000d8606086016200006a565b905092959194509250565b60805160601c60a05160601c60c05160601c60e05160601c615fb162000184600039806102c15280610b3c52806112ad52806113d7528061147e52806116af52806117d95280612d8f5280612def5280612e70525080611e4c52806124df5280613cdb52508061166f5280611b1a5280611e9c52806132a6525080610c625280610d365280610fe2528061164b5280612fc252806131855250615fb16000f3fe6080604052600436106102a45760003560e01c80639b2c0a371161016e578063dee00f35116100cb578063f100b2051161007f578063f2d5d56b11610064578063f2d5d56b1461066e578063f3995c6714610681578063fa461e33146106945761034f565b8063f100b2051461063b578063f25801a71461064e5761034f565b8063e0e189a0116100b0578063e0e189a0146105f5578063e90a182f14610608578063efdeed8e1461061b5761034f565b8063dee00f35146105b5578063df2ab5bb146105e25761034f565b8063b858183f11610122578063c45a015511610107578063c45a01551461057a578063cab372ce1461058f578063d4ef38de146105a25761034f565b8063b858183f14610554578063c2e3140a146105675761034f565b8063ab3fdd5011610153578063ab3fdd501461051b578063ac9650d81461052e578063b3a2af13146105415761034f565b80639b2c0a37146104f5578063a4a78f0c146105085761034f565b8063472b43f31161021c578063571ac8b0116101d0578063639d71a9116101b5578063639d71a9146104b857806368e0d4e1146104cb578063791b98bc146104e05761034f565b8063571ac8b0146104925780635ae401dc146104a55761034f565b80634961699711610201578063496169971461044a5780634aa4a4fc1461045d5780635023b4df1461047f5761034f565b8063472b43f31461042457806349404b7c146104375761034f565b80631c58db4f116102735780633068c554116102585780633068c554146103eb57806342712a67146103fe5780634659a494146104115761034f565b80631c58db4f146103b85780631f0464d1146103cb5761034f565b806304e45aaf1461035457806309b813461461037d57806311ed56c91461039057806312210e8a146103b05761034f565b3661034f573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461034d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b610367610362366004615543565b6106b4565b6040516103749190615dfd565b60405180910390f35b61036761038b3660046155de565b61083c565b6103a361039e366004615638565b61091c565b6040516103749190615b7a565b61034d610b28565b61034d6103c63660046157bb565b610b3a565b6103de6103d93660046152a7565b610bbe565b6040516103749190615afc565b61034d6103f93660046150d8565b610c48565b61036761040c366004615885565b610c5b565b61034d61041f366004615121565b610e35565b610367610432366004615885565b610ef5565b61034d6104453660046157eb565b6112a9565b61034d6104583660046157bb565b61146f565b34801561046957600080fd5b5061047261147c565b6040516103749190615a3c565b61036761048d366004615616565b6114a0565b61034d6104a0366004614feb565b611589565b6103de6104b33660046152a7565b6115bc565b61034d6104c6366004614feb565b611635565b3480156104d757600080fd5b50610472611649565b3480156104ec57600080fd5b5061047261166d565b61034d61050336600461581a565b611691565b61034d610516366004615121565b6118a7565b61034d610529366004614feb565b61197c565b6103de61053c36600461517c565b6119ba565b6103a361054f3660046152f1565b611b14565b61036761056236600461549d565b611bd2565b61034d610575366004615121565b611d95565b34801561058657600080fd5b50610472611e4a565b61034d61059d366004614feb565b611990565b61034d6105b0366004615858565b611e6e565b3480156105c157600080fd5b506105d56105d036600461500e565b611e7a565b6040516103749190615b8d565b61034d6105f0366004615039565b612027565b61034d61060336600461507a565b61213e565b61034d61061636600461500e565b6122a4565b34801561062757600080fd5b5061034d6106363660046151bc565b6122b3565b6103a3610649366004615627565b612305565b34801561065a57600080fd5b5061034d610669366004615324565b6123a5565b61034d61067c36600461500e565b6123f6565b61034d61068f366004615121565b612402565b3480156106a057600080fd5b5061034d6106af3660046153b8565b61249a565b600080600083608001511415610771575081516040517f70a0823100000000000000000000000000000000000000000000000000000000815260019173ffffffffffffffffffffffffffffffffffffffff16906370a082319061071b903090600401615a3c565b60206040518083038186803b15801561073357600080fd5b505afa158015610747573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076b91906157d3565b60808401525b6107ed836080015184606001518560c001516040518060400160405280886000015189604001518a602001516040516020016107af939291906159aa565b6040516020818303038152906040528152602001866107ce57336107d0565b305b73ffffffffffffffffffffffffffffffffffffffff1690526125de565b91508260a00151821015610836576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90615c7d565b60405180910390fd5b50919050565b60006108b0604083018035906108559060208601614feb565b604080518082019091526000908061086d8880615e41565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360209091015261278f565b505060005460608201358111156108f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90615c0f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600055919050565b604080516101608101909152606090610b20907f8831645600000000000000000000000000000000000000000000000000000000908061095f6020870187614feb565b73ffffffffffffffffffffffffffffffffffffffff16815260200185602001602081019061098d9190614feb565b73ffffffffffffffffffffffffffffffffffffffff1681526020016109b860608701604088016157a1565b62ffffff1681526020016109d26080870160608801615379565b60020b81526020016109ea60a0870160808801615379565b60020b8152602090810190610a0a90610a0590880188614feb565b612976565b8152602001610a25866020016020810190610a059190614feb565b815260a0860135602082015260c08601356040820152606001610a4f610100870160e08801614feb565b73ffffffffffffffffffffffffffffffffffffffff1681526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff815250604051602401610a9e9190615cf8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611b14565b90505b919050565b4715610b3857610b383347612a1b565b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015610ba257600080fd5b505af1158015610bb6573d6000803e3d6000fd5b505050505050565b60608380600143034014610c3357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f426c6f636b686173680000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610c3d84846119ba565b91505b509392505050565b610c55848433858561213e565b50505050565b6000610cbb7f000000000000000000000000000000000000000000000000000000000000000087868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612b6992505050565b600081518110610cc757fe5b6020026020010151905084811115610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90615c0f565b610da484846000818110610d1b57fe5b9050602002016020810190610d309190614feb565b33610d9e7f000000000000000000000000000000000000000000000000000000000000000088886000818110610d6257fe5b9050602002016020810190610d779190614feb565b89896001818110610d8457fe5b9050602002016020810190610d999190614feb565b612ca2565b84612d8d565b73ffffffffffffffffffffffffffffffffffffffff821660011415610dcb57339150610dee565b73ffffffffffffffffffffffffffffffffffffffff821660021415610dee573091505b610e2c848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250612f6b915050565b95945050505050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b158015610ed557600080fd5b505af1158015610ee9573d6000803e3d6000fd5b50505050505050505050565b60008086610fab575060018484600081610f0b57fe5b9050602002016020810190610f209190614feb565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f589190615a3c565b60206040518083038186803b158015610f7057600080fd5b505afa158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa891906157d3565b96505b61103685856000818110610fbb57fe5b9050602002016020810190610fd09190614feb565b82610fdb5733610fdd565b305b6110307f00000000000000000000000000000000000000000000000000000000000000008989600081811061100e57fe5b90506020020160208101906110239190614feb565b8a8a6001818110610d8457fe5b8a612d8d565b73ffffffffffffffffffffffffffffffffffffffff83166001141561105d57339250611080565b73ffffffffffffffffffffffffffffffffffffffff831660021415611080573092505b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018181106110b057fe5b90506020020160208101906110c59190614feb565b73ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b81526004016110fd9190615a3c565b60206040518083038186803b15801561111557600080fd5b505afa158015611129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114d91906157d3565b905061118d868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250612f6b915050565b6112628187877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018181106111bf57fe5b90506020020160208101906111d49190614feb565b73ffffffffffffffffffffffffffffffffffffffff166370a08231876040518263ffffffff1660e01b815260040161120c9190615a3c565b60206040518083038186803b15801561122457600080fd5b505afa158015611238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125c91906157d3565b90613270565b92508683101561129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90615c7d565b505095945050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561133257600080fd5b505afa158015611346573d6000803e3d6000fd5b505050506040513d602081101561135c57600080fd5b50519050828110156113cf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b801561146a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561144857600080fd5b505af115801561145c573d6000803e3d6000fd5b5050505061146a8282612a1b565b505050565b61147981336112a9565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000611549608083018035906114b99060608601614feb565b6114c960e0860160c08701614feb565b60405180604001604052808760200160208101906114e79190614feb565b6114f760608a0160408b016157a1565b61150460208b018b614feb565b604051602001611516939291906159aa565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff1681525061278f565b90508160a001358111156108f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90615c0f565b6115b3817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613280565b61147957600080fd5b606083806115c86133cc565b1115610c3357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b611640816000613280565b61158957600080fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000821180156116a2575060648211155b6116ab57600080fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561173457600080fd5b505afa158015611748573d6000803e3d6000fd5b505050506040513d602081101561175e57600080fd5b50519050848110156117d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b80156118a0577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b50505050600061271061187a85846133d090919063ffffffff16565b8161188157fe5b0490508015611894576118948382612a1b565b610bb685828403612a1b565b5050505050565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b15801561193c57600080fd5b505afa158015611950573d6000803e3d6000fd5b505050506040513d602081101561196657600080fd5b50511015610bb657610bb6868686868686610e35565b611987816000613280565b61199057600080fd5b6115b3817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe613280565b60608167ffffffffffffffff811180156119d357600080fd5b50604051908082528060200260200182016040528015611a0757816020015b60608152602001906001900390816119f25790505b50905060005b82811015611b0d5760008030868685818110611a2557fe5b9050602002810190611a379190615e41565b604051611a45929190615a10565b600060405180830381855af49150503d8060008114611a80576040519150601f19603f3d011682016040523d82523d6000602084013e611a85565b606091505b509150915081611aeb57604481511015611a9e57600080fd5b60048101905080806020019051810190611ab89190615433565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d9190615b7a565b80848481518110611af857fe5b60209081029190910101525050600101611a0d565b5092915050565b606060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1683604051611b5d9190615a20565b6000604051808303816000865af19150503d8060008114611b9a576040519150601f19603f3d011682016040523d82523d6000602084013e611b9f565b606091505b50925090508061083657604482511015611bb857600080fd5b60048201915081806020019051810190611ab89190615433565b600080600083604001511415611ca357600190506000611bf584600001516133f4565b50506040517f70a0823100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906370a0823190611c4c903090600401615a3c565b60206040518083038186803b158015611c6457600080fd5b505afa158015611c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9c91906157d3565b6040850152505b600081611cb05733611cb2565b305b90505b6000611cc48560000151613425565b9050611d1d856040015182611cdd578660200151611cdf565b305b60006040518060400160405280611cf98b6000015161342d565b81526020018773ffffffffffffffffffffffffffffffffffffffff168152506125de565b60408601528015611d3d578451309250611d369061343c565b8552611d4a565b8460400151935050611d50565b50611cb5565b8360600151831015611d8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90615c7d565b5050919050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b158015611e0a57600080fd5b505afa158015611e1e573d6000803e3d6000fd5b505050506040513d6020811015611e3457600080fd5b50511015610bb657610bb6868686868686612402565b7f000000000000000000000000000000000000000000000000000000000000000081565b61146a83338484611691565b6000818373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e307f00000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b8152600401611ed8929190615a5d565b60206040518083038186803b158015611ef057600080fd5b505afa158015611f04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2891906157d3565b10611f3557506000612021565b611f5f837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613280565b15611f6c57506001612021565b611f96837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe613280565b15611fa357506002612021565b611fae836000613280565b611fb757600080fd5b611fe1837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613280565b15611fee57506003612021565b612018837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe613280565b1561034f575060045b92915050565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561209057600080fd5b505afa1580156120a4573d6000803e3d6000fd5b505050506040513d60208110156120ba57600080fd5b505190508281101561212d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610c5557610c55848383613471565b60008211801561214f575060648211155b61215857600080fd5b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156121c157600080fd5b505afa1580156121d5573d6000803e3d6000fd5b505050506040513d60208110156121eb57600080fd5b505190508481101561225e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610bb657600061271061227383866133d0565b8161227a57fe5b049050801561228e5761228e878483613471565b61229b8786838503613471565b50505050505050565b6122af828233612027565b5050565b6000806122c1868685613646565b915091508362ffffff1681830312610bb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90615c46565b6060610b2063219f5d1760e01b6040518060c001604052808560400135815260200161233d866000016020810190610a059190614feb565b8152602001612358866020016020810190610a059190614feb565b815260200185606001358152602001856080013581526020017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff815250604051602401610a9e9190615cb4565b6000806123b28584613859565b915091508362ffffff16818303126118a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90615c46565b6122af82333084613ae1565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b158015610ed557600080fd5b60008413806124a95750600083135b6124b257600080fd5b60006124c08284018461564a565b905060008060006124d484600001516133f4565b9250925092506125067f0000000000000000000000000000000000000000000000000000000000000000848484613cbe565b5060008060008a13612547578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161089612578565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16108a5b915091508115612597576125928587602001513384612d8d565b610ee9565b85516125a290613425565b156125c75785516125b29061343c565b86526125c1813360008961278f565b50610ee9565b80600081905550610ee98487602001513384612d8d565b600073ffffffffffffffffffffffffffffffffffffffff8416600114156126075733935061262a565b73ffffffffffffffffffffffffffffffffffffffff84166002141561262a573093505b600080600061263c85600001516133f4565b9194509250905073ffffffffffffffffffffffffffffffffffffffff8083169084161060008061266d868686613cd4565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b856126938f613d12565b73ffffffffffffffffffffffffffffffffffffffff8e16156126b5578d6126db565b876126d45773fffd8963efd1fc6a506488495d951d5263988d256126db565b6401000276a45b8d6040516020016126ec9190615da6565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161271b959493929190615a84565b6040805180830381600087803b15801561273457600080fd5b505af1158015612748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276c9190615395565b915091508261277b578161277d565b805b6000039b9a5050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8416600114156127b8573393506127db565b73ffffffffffffffffffffffffffffffffffffffff8416600214156127db573093505b60008060006127ed85600001516133f4565b9194509250905073ffffffffffffffffffffffffffffffffffffffff8084169083161060008061281e858786613cd4565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b856128448f613d12565b60000373ffffffffffffffffffffffffffffffffffffffff8e1615612869578d61288f565b876128885773fffd8963efd1fc6a506488495d951d5263988d2561288f565b6401000276a45b8d6040516020016128a09190615da6565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016128cf959493929190615a84565b6040805180830381600087803b1580156128e857600080fd5b505af11580156128fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129209190615395565b9150915060008361293557818360000361293b565b82826000035b909850905073ffffffffffffffffffffffffffffffffffffffff8a16612967578b811461296757600080fd5b50505050505050949350505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906129cb903090600401615a3c565b60206040518083038186803b1580156129e357600080fd5b505afa1580156129f7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2091906157d3565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310612a9257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612a55565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612af4576040519150601f19603f3d011682016040523d82523d6000602084013e612af9565b606091505b505090508061146a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6060600282511015612b7a57600080fd5b815167ffffffffffffffff81118015612b9257600080fd5b50604051908082528060200260200182016040528015612bbc578160200160208202803683370190505b5090508281600183510381518110612bd057fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b8015610c4057600080612c3d87866001860381518110612c1c57fe5b6020026020010151878681518110612c3057fe5b6020026020010151613d44565b91509150612c5f848481518110612c5057fe5b60200260200101518383613e2c565b846001850381518110612c6e57fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612c00565b6000806000612cb18585613f02565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612de85750804710155b15612f31577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612e5557600080fd5b505af1158015612e69573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612eff57600080fd5b505af1158015612f13573d6000803e3d6000fd5b505050506040513d6020811015612f2957600080fd5b50610c559050565b73ffffffffffffffffffffffffffffffffffffffff8316301415612f5f57612f5a848383613471565b610c55565b610c5584848484613ae1565b60005b600183510381101561146a57600080848381518110612f8957fe5b6020026020010151858460010181518110612fa057fe5b6020026020010151915091506000612fb88383613f02565b5090506000612fe87f00000000000000000000000000000000000000000000000000000000000000008585612ca2565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561303657600080fd5b505afa15801561304a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061306e91906156da565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506000808773ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16146130d05782846130d3565b83835b91509150613114828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b815260040161120c9190615a3c565b9550613121868383613fa7565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461316557826000613169565b6000835b91509150600060028c51038a10613180578a6131c1565b6131c17f0000000000000000000000000000000000000000000000000000000000000000898e8d600201815181106131b457fe5b6020026020010151612ca2565b604080516000815260208101918290527f022c0d9f0000000000000000000000000000000000000000000000000000000090915290915073ffffffffffffffffffffffffffffffffffffffff87169063022c0d9f906132299086908690869060248101615e06565b600060405180830381600087803b15801561324357600080fd5b505af1158015613257573d6000803e3d6000fd5b50506001909b019a50612f6e9950505050505050505050565b8082038281111561202157600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1663095ea7b360e01b7f0000000000000000000000000000000000000000000000000000000000000000866040516024016132d7929190615ad6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516133609190615a20565b6000604051808303816000865af19150503d806000811461339d576040519150601f19603f3d011682016040523d82523d6000602084013e6133a2565b606091505b5091509150818015610e2c575080511580610e2c575080806020019051810190610e2c919061528d565b4290565b60008215806133eb575050818102818382816133e857fe5b04145b61202157600080fd5b60008080613402848261407d565b925061340f84601461417d565b905061341c84601761407d565b91509193909250565b516042111590565b6060610b20826000602b61426d565b8051606090610b209083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe90161426d565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061354657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613509565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146135a8576040519150601f19603f3d011682016040523d82523d6000602084013e6135ad565b606091505b50915091508180156135db5750805115806135db57508080602001905160208110156135d857600080fd5b50515b6118a057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080835185511461365757600080fd5b6000855167ffffffffffffffff8111801561367157600080fd5b506040519080825280602002602001820160405280156136ab57816020015b613698614e34565b8152602001906001900390816136905790505b5090506000865167ffffffffffffffff811180156136c857600080fd5b5060405190808252806020026020018201604052801561370257816020015b6136ef614e34565b8152602001906001900390816136e75790505b50905060005b8751811015613832576000806137318a848151811061372357fe5b602002602001015189613859565b9150915061373e82614454565b85848151811061374a57fe5b60200260200101516000019060020b908160020b8152505061376b81614454565b84848151811061377757fe5b60200260200101516000019060020b908160020b8152505088838151811061379b57fe5b60200260200101518584815181106137af57fe5b6020026020010151602001906fffffffffffffffffffffffffffffffff1690816fffffffffffffffffffffffffffffffff16815250508883815181106137f157fe5b602002602001015184848151811061380557fe5b6020908102919091018101516fffffffffffffffffffffffffffffffff9092169101525050600101613708565b5061383c82614465565b60020b935061384a81614465565b60020b92505050935093915050565b6000806000806138688661454d565b90506000805b82811015613a865760008060006138848b6133f4565b9250925092506000613897848484613cd4565b905060008063ffffffff8d166138c0576138b083614578565b600291820b9350900b9050613962565b6138ca838e614810565b8160020b915050809250508273ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561391b57600080fd5b505afa15801561392f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139539190615715565b50505060029290920b93505050505b600189038714156139a3578473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161099506139b2565b6139ac8e61343c565b9d508597505b6000871580613a5357508673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1610613a23578673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1610613a53565b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16105b90508015613a68579b82019b9a81019a613a73565b828d039c50818c039b505b50506001909501945061386e9350505050565b5082613ad7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff850294507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff840293505b5050509250929050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b60208310613bbe57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613b81565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c20576040519150601f19603f3d011682016040523d82523d6000602084013e613c25565b606091505b5091509150818015613c53575080511580613c535750808060200190516020811015613c5057600080fd5b50515b610bb657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000610e2c85613ccf868686614c41565b614cbe565b6000613d0a7f0000000000000000000000000000000000000000000000000000000000000000613d05868686614c41565b614cee565b949350505050565b60007f80000000000000000000000000000000000000000000000000000000000000008210613d4057600080fd5b5090565b6000806000613d538585613f02565b509050600080613d64888888612ca2565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613da957600080fd5b505afa158015613dbd573d6000803e3d6000fd5b505050506040513d6060811015613dd357600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614613e1a578082613e1d565b81815b90999098509650505050505050565b6000808411613e9c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f494e53554646494349454e545f4f55545055545f414d4f554e54000000000000604482015290519081900360640190fd5b600083118015613eac5750600082115b613eb557600080fd5b6000613ecd6103e8613ec786886133d0565b906133d0565b90506000613ee16103e5613ec78689613270565b9050613ef86001828481613ef157fe5b0490614e24565b9695505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613f3e57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610613f78578284613f7b565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216613fa057600080fd5b9250929050565b600080841161401757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f494e53554646494349454e545f494e5055545f414d4f554e5400000000000000604482015290519081900360640190fd5b6000831180156140275750600082115b61403057600080fd5b600061403e856103e56133d0565b9050600061404c82856133d0565b9050600061406683614060886103e86133d0565b90614e24565b905080828161407157fe5b04979650505050505050565b6000818260140110156140f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b816014018351101561416457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b6000818260030110156141f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b816003018351101561426457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b60608182601f0110156142e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b82828401101561435257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b818301845110156143c457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156143e3576040519150600082526020820160405261444b565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561441c578051835260209283019201614404565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b80600281900b8114610b2357600080fd5b6000806000805b84518110156144fa5784818151811061448157fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff168582815181106144ab57fe5b60200260200101516000015160020b02830192508481815181106144cb57fe5b6020026020010151602001516fffffffffffffffffffffffffffffffff1682019150808060010191505061446c565b5080828161450457fe5b05925060008212801561451f575080828161451b57fe5b0715155b15611d8e5750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01919050565b5160177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec9091010490565b6000806000808473ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156145c457600080fd5b505afa1580156145d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145fc9190615715565b50939750919550935050600161ffff84161191506146489050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90615bd8565b6000808673ffffffffffffffffffffffffffffffffffffffff1663252c09d7856040518263ffffffff1660e01b81526004016146849190615dee565b60806040518083038186803b15801561469c57600080fd5b505afa1580156146b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906146d491906158e0565b5050915091506146e26133cc565b63ffffffff168263ffffffff16146146fc57849550614807565b60008361ffff1660018561ffff168761ffff1601038161471857fe5b06905060008060008a73ffffffffffffffffffffffffffffffffffffffff1663252c09d7856040518263ffffffff1660e01b81526004016147599190615dfd565b60806040518083038186803b15801561477157600080fd5b505afa158015614785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147a991906158e0565b93505092509250806147e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082d90615ba1565b82860363ffffffff811683870360060b816147fe57fe5b059a5050505050505b50505050915091565b60008063ffffffff831661488557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f4250000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60408051600280825260608201835260009260208301908036833701905050905083816000815181106148b457fe5b602002602001019063ffffffff16908163ffffffff16815250506000816001815181106148dd57fe5b63ffffffff9092166020928302919091018201526040517f883bdbfd00000000000000000000000000000000000000000000000000000000815260048101828152835160248301528351600093849373ffffffffffffffffffffffffffffffffffffffff8b169363883bdbfd9388939192839260449091019185820191028083838b5b83811015614978578181015183820152602001614960565b505050509050019250505060006040518083038186803b15801561499b57600080fd5b505afa1580156149af573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160409081528110156149f657600080fd5b8101908080516040519392919084640100000000821115614a1657600080fd5b908301906020820185811115614a2b57600080fd5b8251866020820283011164010000000082111715614a4857600080fd5b82525081516020918201928201910280838360005b83811015614a75578181015183820152602001614a5d565b5050505090500160405260200180516040519392919084640100000000821115614a9e57600080fd5b908301906020820185811115614ab357600080fd5b8251866020820283011164010000000082111715614ad057600080fd5b82525081516020918201928201910280838360005b83811015614afd578181015183820152602001614ae5565b5050505090500160405250505091509150600082600081518110614b1d57fe5b602002602001015183600181518110614b3257fe5b6020026020010151039050600082600081518110614b4c57fe5b602002602001015183600181518110614b6157fe5b60200260200101510390508763ffffffff168260060b81614b7e57fe5b05965060008260060b128015614ba857508763ffffffff168260060b81614ba157fe5b0760060b15155b15614bd3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909601955b63ffffffff881673ffffffffffffffffffffffffffffffffffffffff0277ffffffffffffffffffffffffffffffffffffffff00000000602083901b1677ffffffffffffffffffffffffffffffffffffffffffffffff821681614c3157fe5b0496505050505050509250929050565b614c49614e4b565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161115614c81579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b6000614cca8383614cee565b90503373ffffffffffffffffffffffffffffffffffffffff82161461202157600080fd5b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1610614d3057600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b8082018281101561202157600080fd5b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b8035610b2381615f52565b60008083601f840112614e87578182fd5b50813567ffffffffffffffff811115614e9e578182fd5b6020830191508360208083028501011115613fa057600080fd5b600082601f830112614ec8578081fd5b81356020614edd614ed883615ec8565b615ea4565b8281528181019085830183850287018401881015614ef9578586fd5b855b85811015614f345781356fffffffffffffffffffffffffffffffff81168114614f22578788fd5b84529284019290840190600101614efb565b5090979650505050505050565b80518015158114610b2357600080fd5b600082601f830112614f61578081fd5b8135614f6f614ed882615ee6565b818152846020838601011115614f83578283fd5b816020850160208301379081016020019190915292915050565b80516dffffffffffffffffffffffffffff81168114610b2357600080fd5b805161ffff81168114610b2357600080fd5b803562ffffff81168114610b2357600080fd5b8035610b2381615f83565b600060208284031215614ffc578081fd5b813561500781615f52565b9392505050565b60008060408385031215615020578081fd5b823561502b81615f52565b946020939093013593505050565b60008060006060848603121561504d578081fd5b833561505881615f52565b925060208401359150604084013561506f81615f52565b809150509250925092565b600080600080600060a08688031215615091578283fd5b853561509c81615f52565b94506020860135935060408601356150b381615f52565b92506060860135915060808601356150ca81615f52565b809150509295509295909350565b600080600080608085870312156150ed578182fd5b84356150f881615f52565b93506020850135925060408501359150606085013561511681615f52565b939692955090935050565b60008060008060008060c08789031215615139578384fd5b863561514481615f52565b95506020870135945060408701359350606087013561516281615f95565b9598949750929560808101359460a0909101359350915050565b6000806020838503121561518e578182fd5b823567ffffffffffffffff8111156151a4578283fd5b6151b085828601614e76565b90969095509350505050565b600080600080608085870312156151d1578182fd5b843567ffffffffffffffff808211156151e8578384fd5b818701915087601f8301126151fb578384fd5b8135602061520b614ed883615ec8565b82815281810190858301885b858110156152405761522e8e8684358b0101614f51565b84529284019290840190600101615217565b50909950505088013592505080821115615258578384fd5b5061526587828801614eb8565b93505061527460408601614fcd565b915061528260608601614fe0565b905092959194509250565b60006020828403121561529e578081fd5b61500782614f41565b6000806000604084860312156152bb578081fd5b83359250602084013567ffffffffffffffff8111156152d8578182fd5b6152e486828701614e76565b9497909650939450505050565b600060208284031215615302578081fd5b813567ffffffffffffffff811115615318578182fd5b613d0a84828501614f51565b600080600060608486031215615338578081fd5b833567ffffffffffffffff81111561534e578182fd5b61535a86828701614f51565b93505061536960208501614fcd565b9150604084013561506f81615f83565b60006020828403121561538a578081fd5b813561500781615f74565b600080604083850312156153a7578182fd5b505080516020909101519092909150565b600080600080606085870312156153cd578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156153f2578384fd5b818701915087601f830112615405578384fd5b813581811115615413578485fd5b886020828501011115615424578485fd5b95989497505060200194505050565b600060208284031215615444578081fd5b815167ffffffffffffffff81111561545a578182fd5b8201601f8101841361546a578182fd5b8051615478614ed882615ee6565b81815285602083850101111561548c578384fd5b610e2c826020830160208601615f26565b6000602082840312156154ae578081fd5b813567ffffffffffffffff808211156154c5578283fd5b90830190608082860312156154d8578283fd5b6040516080810181811083821117156154ed57fe5b6040528235828111156154fe578485fd5b61550a87828601614f51565b8252506020830135915061551d82615f52565b816020820152604083013560408201526060830135606082015280935050505092915050565b600060e08284031215615554578081fd5b60405160e0810181811067ffffffffffffffff8211171561557157fe5b60405261557d83614e6b565b815261558b60208401614e6b565b602082015261559c60408401614fcd565b60408201526155ad60608401614e6b565b60608201526080830135608082015260a083013560a08201526155d260c08401614e6b565b60c08201529392505050565b6000602082840312156155ef578081fd5b813567ffffffffffffffff811115615605578182fd5b820160808185031215615007578182fd5b600060e08284031215610836578081fd5b600060a08284031215610836578081fd5b60006101008284031215610836578081fd5b60006020828403121561565b578081fd5b813567ffffffffffffffff80821115615672578283fd5b9083019060408286031215615685578283fd5b60405160408101818110838211171561569a57fe5b6040528235828111156156ab578485fd5b6156b787828601614f51565b825250602083013592506156ca83615f52565b6020810192909252509392505050565b6000806000606084860312156156ee578081fd5b6156f784614f9d565b925061570560208501614f9d565b9150604084015161506f81615f83565b600080600080600080600060e0888a03121561572f578485fd5b875161573a81615f52565b602089015190975061574b81615f74565b955061575960408901614fbb565b945061576760608901614fbb565b935061577560808901614fbb565b925060a088015161578581615f95565b915061579360c08901614f41565b905092959891949750929550565b6000602082840312156157b2578081fd5b61500782614fcd565b6000602082840312156157cc578081fd5b5035919050565b6000602082840312156157e4578081fd5b5051919050565b600080604083850312156157fd578182fd5b82359150602083013561580f81615f52565b809150509250929050565b6000806000806080858703121561582f578182fd5b84359350602085013561584181615f52565b925060408501359150606085013561511681615f52565b60008060006060848603121561586c578081fd5b8335925060208401359150604084013561506f81615f52565b60008060008060006080868803121561589c578283fd5b8535945060208601359350604086013567ffffffffffffffff8111156158c0578384fd5b6158cc88828901614e76565b90945092505060608601356150ca81615f52565b600080600080608085870312156158f5578182fd5b845161590081615f83565b8094505060208501518060060b8114615917578283fd5b604086015190935061592881615f52565b915061528260608601614f41565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452615968816020860160208601615f26565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60020b9052565b62ffffff169052565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b60008251615a32818460208701615f26565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152615acb60a0830184615950565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015615b6d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452615b5b858351615950565b94509285019290850190600101615b21565b5092979650505050505050565b6000602082526150076020830184615950565b6020810160058310615b9b57fe5b91905290565b60208082526003908201527f4f4e490000000000000000000000000000000000000000000000000000000000604082015260600190565b60208082526003908201527f4e454f0000000000000000000000000000000000000000000000000000000000604082015260600190565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526002908201527f5444000000000000000000000000000000000000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b600061016082019050615d0c828451615936565b6020830151615d1e6020840182615936565b506040830151615d3160408401826159a1565b506060830151615d44606084018261599a565b506080830151615d57608084018261599a565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151615d9582850182615936565b505061014092830151919092015290565b600060208252825160406020840152615dc26060840182615950565b905073ffffffffffffffffffffffffffffffffffffffff60208501511660408401528091505092915050565b61ffff91909116815260200190565b90815260200190565b600085825284602083015273ffffffffffffffffffffffffffffffffffffffff8416604083015260806060830152613ef86080830184615950565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615e75578283fd5b83018035915067ffffffffffffffff821115615e8f578283fd5b602001915036819003821315613fa057600080fd5b60405181810167ffffffffffffffff81118282101715615ec057fe5b604052919050565b600067ffffffffffffffff821115615edc57fe5b5060209081020190565b600067ffffffffffffffff821115615efa57fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015615f41578181015183820152602001615f29565b83811115610c555750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461147957600080fd5b8060020b811461147957600080fd5b63ffffffff8116811461147957600080fd5b60ff8116811461147957600080fdfea164736f6c6343000706000a000000000000000000000000216d3b49e8c5140d2499da346ab5335a75f655d8000000000000000000000000780e96775371e1c4f4cd1524a578b8f1b12ece580000000000000000000000004801ed4f1b57559f9071413d9d99b607316fd1eb0000000000000000000000004200000000000000000000000000000000000006", - "nonce": "0x15", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xa351d11889e366fa8246704cb0f1dba494aa4a8396d49229c2ba588f9123bb51", - "transactionType": "CREATE", - "contractName": "FeeOnTransferDetector", - "contractAddress": "0xdfbe641684882769918f0a8da4c4c876a75c5ab1", - "function": null, - "arguments": [ - "0x216d3b49e8c5140D2499dA346AB5335A75f655d8" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "value": "0x0", - "input": "0x60a060405234801561001057600080fd5b5060405161145938038061145983398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b6080516113c061009960003960008181610575015281816105fb0152610a0901526113c06000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806310d1e85c1461005c578063686dc35914610071578063aa3ad4e414610084578063ade44597146100ad578063da80e4dd146100cd575b600080fd5b61006f61006a366004610e46565b6100e0565b005b61006f61007f366004610edc565b6102da565b610097610092366004610edc565b6102f3565b6040516100a49190610f1d565b60405180910390f35b6100c06100bb366004610f5c565b61030e565b6040516100a49190610fe8565b61006f6100db366004611067565b6103da565b6000339050600080826001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014a91906110ad565b836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610188573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ac91906110ad565b9150915060008088116101bf57816101c1565b825b90506000806101d2878901896110ca565b6040516370a0823160e01b8152306004820152919350915060009083906001600160a01b038616906370a0823190602401602060405180830381865afa158015610220573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024491906110ec565b61024e919061111b565b9050600061025c838361053d565b905060008061026b878561055e565b9150915060008061027e8c8a8888610785565b9150915060006040518060a00160405280878152602001848152602001861515815260200185151581526020018315158152506040516020016102c19190610f1d565b6040516020818303038152906040529050805181602001fd5b6102ee6001600160a01b0384168383610941565b505050565b6102fb610e00565b6103068484846109c8565b949350505050565b60608367ffffffffffffffff8111156103295761032961112e565b60405190808252806020026020018201604052801561036257816020015b61034f610e00565b8152602001906001900390816103475790505b50905060005b848110156103d1576103a186868381811061038557610385611144565b905060200201602081019061039a919061115a565b85856109c8565b8282815181106103b3576103b3611144565b602002602001018190525080806103c990611177565b915050610368565b50949350505050565b60405163686dc35960e01b81526001600160a01b0380861660048301528416602482015260448101839052309063686dc35990606401600060405180830381600087803b15801561042a57600080fd5b505af192505050801561043b575060015b6104ba573d808015610469576040519150601f19603f3d011682016040523d82523d6000602084013e61046e565b606091505b5060448151101561047e57600080fd5b6004810190508080602001905181019061049891906111b4565b60405162461bcd60e51b81526004016104b1919061128d565b60405180910390fd5b6040516370a0823160e01b81526001600160a01b03848116600483015260009183918716906370a0823190602401602060405180830381865afa158015610505573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061052991906110ec565b6040805192909114156020830152016102c1565b600061055761271084610550858261111b565b9190610c66565b9392505050565b6040516370a0823160e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015260009182918291908616906370a0823190602401602060405180830381865afa1580156105cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f091906110ec565b90503063da80e4dd867f00000000000000000000000000000000000000000000000000000000000000008761062581876112a0565b6040516001600160e01b031960e087901b1681526001600160a01b03948516600482015293909216602484015260448301526064820152608401600060405180830381600087803b15801561067957600080fd5b505af192505050801561068a575060015b61077d573d8080156106b8576040519150601f19603f3d011682016040523d82523d6000602084013e6106bd565b606091505b50602081511115610764576004810190506000818060200190518101906106e491906111b4565b60408051808201909152600f81526e1514905394d1915497d19052531151608a1b6020918201528151908201209091507f74070f287f0ec8bf99f019cdcc4e806934e7ec77618231bede1aa47e84c9848e01610743576001935061075e565b80604051631fa44c4b60e21b81526004016104b1919061128d565b5061077b565b8080602001905181019061077891906112c3565b93505b505b509250929050565b6040516370a0823160e01b81526001600160a01b03858116600483015260009182918291908716906370a0823190602401602060405180830381865afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f791906110ec565b60405163686dc35960e01b81526001600160a01b0380891660048301528916602482015260448101879052909150309063686dc35990606401600060405180830381600087803b15801561084a57600080fd5b505af192505050801561085b575060015b61089c573d808015610889576040519150601f19603f3d011682016040523d82523d6000602084013e61088e565b606091505b508493506001925050610937565b6040516370a0823160e01b81526001600160a01b03888116600483015260009183918916906370a0823190602401602060405180830381865afa1580156108e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090b91906110ec565b610915919061111b565b90506000610923828861111b565b90506109328161271089610c66565b945050505b5094509492505050565b600060405163a9059cbb60e01b81526001600160a01b0384166004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806109c25760405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b60448201526064016104b1565b50505050565b6109d0610e00565b826001600160a01b0316846001600160a01b031603610a025760405163100dac0560e11b815260040160405180910390fd5b6000610a2f7f00000000000000000000000000000000000000000000000000000000000000008686610c8c565b60408051600481526024810182526020810180516001600160e01b0316630dfe168160e01b17905290519192506000916001600160a01b03841691610a73916112de565b600060405180830381855afa9150503d8060008114610aae576040519150601f19603f3d011682016040523d82523d6000602084013e610ab3565b606091505b509150508051600003610ad9576040516310df924f60e31b815260040160405180910390fd5b600081806020019051810190610aef91906110ad565b9050600080826001600160a01b0316896001600160a01b031614610b1557600087610b19565b8660005b6040516370a0823160e01b815230600482015291935091506000906001600160a01b038b16906370a0823190602401602060405180830381865afa158015610b65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8991906110ec565b90506000869050806001600160a01b031663022c0d9f858530868e604051602001610bbe929190918252602082015260400190565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401610bec94939291906112fa565b600060405180830381600087803b158015610c0657600080fd5b505af1925050508015610c17575060015b610c58573d808015610c45576040519150601f19603f3d011682016040523d82523d6000602084013e610c4a565b606091505b50610c5481610d65565b9850505b505050505050509392505050565b6000826000190484118302158202610c7d57600080fd5b50910281810615159190040190565b6000806000610c9b8585610d9d565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b1660348201529193509150869060480160405160208183030381529060405280519060200120604051602001610d439291906001600160f81b0319815260609290921b6bffffffffffffffffffffffff1916600183015260158201527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f603582015260550190565b60408051601f1981840301815291905280516020909101209695505050505050565b610d6d610e00565b815160a014610d7e57815182602001fd5b81806020019051810190610d929190611331565b92915050565b919050565b600080826001600160a01b0316846001600160a01b031603610dbe57600080fd5b826001600160a01b0316846001600160a01b031610610dde578284610de1565b83835b90925090506001600160a01b038216610df957600080fd5b9250929050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b6001600160a01b0381168114610e4357600080fd5b50565b600080600080600060808688031215610e5e57600080fd5b8535610e6981610e2e565b94506020860135935060408601359250606086013567ffffffffffffffff80821115610e9457600080fd5b818801915088601f830112610ea857600080fd5b813581811115610eb757600080fd5b896020828501011115610ec957600080fd5b9699959850939650602001949392505050565b600080600060608486031215610ef157600080fd5b8335610efc81610e2e565b92506020840135610f0c81610e2e565b929592945050506040919091013590565b60a08101610d92828480518252602081015160208301526040810151151560408301526060810151151560608301526080810151151560808301525050565b60008060008060608587031215610f7257600080fd5b843567ffffffffffffffff80821115610f8a57600080fd5b818701915087601f830112610f9e57600080fd5b813581811115610fad57600080fd5b8860208260051b8501011115610fc257600080fd5b60209283019650945050850135610fd881610e2e565b9396929550929360400135925050565b6020808252825182820181905260009190848201906040850190845b8181101561105b5761104883855180518252602081015160208301526040810151151560408301526060810151151560608301526080810151151560808301525050565b9284019260a09290920191600101611004565b50909695505050505050565b6000806000806080858703121561107d57600080fd5b843561108881610e2e565b9350602085013561109881610e2e565b93969395505050506040820135916060013590565b6000602082840312156110bf57600080fd5b815161055781610e2e565b600080604083850312156110dd57600080fd5b50508035926020909101359150565b6000602082840312156110fe57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610d9257610d92611105565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60006020828403121561116c57600080fd5b813561055781610e2e565b60006001820161118957611189611105565b5060010190565b60005b838110156111ab578181015183820152602001611193565b50506000910152565b6000602082840312156111c657600080fd5b815167ffffffffffffffff808211156111de57600080fd5b818401915084601f8301126111f257600080fd5b8151818111156112045761120461112e565b604051601f8201601f19908116603f0116810190838211818310171561122c5761122c61112e565b8160405282815287602084870101111561124557600080fd5b611256836020830160208801611190565b979650505050505050565b60008151808452611279816020860160208601611190565b601f01601f19169290920160200192915050565b6020815260006105576020830184611261565b80820180821115610d9257610d92611105565b80518015158114610d9857600080fd5b6000602082840312156112d557600080fd5b610557826112b3565b600082516112f0818460208701611190565b9190910192915050565b84815283602082015260018060a01b03831660408201526080606082015260006113276080830184611261565b9695505050505050565b600060a0828403121561134357600080fd5b60405160a0810181811067ffffffffffffffff821117156113665761136661112e565b80604052508251815260208301516020820152611385604084016112b3565b6040820152611396606084016112b3565b60608201526113a7608084016112b3565b6080820152939250505056fea164736f6c6343000813000a000000000000000000000000216d3b49e8c5140d2499da346ab5335a75f655d8", - "nonce": "0x16", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x0c1eb8a3d340b717b178201453170a611ddae1c348a84115bac3148bec5a83f2", - "transactionType": "CREATE2", - "contractName": "UniversalRouter", - "contractAddress": "0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd", - "function": null, - "arguments": [ - "(0x000000000022D473030F116dDEE9F6B43aC78BA3, 0x4200000000000000000000000000000000000006, 0x216d3b49e8c5140D2499dA346AB5335A75f655d8, 0x780E96775371e1C4F4cD1524a578B8f1b12ECE58, 0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f, 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54, 0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95, 0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb, 0x12A98709BB5D0641D61458f85dcAFbE17AC2d05c)" - ], - "transaction": { - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x00000000000000000000000000000000000000000000000000000000000000006101a0604052346102d657604051601f614f3938819003918201601f19168301916001600160401b038311848410176102c257808492610120946040528339810103126102d6576040519061012082016001600160401b038111838210176102c25760405261006d816102f9565b825261007b602082016102f9565b6020830190815261008e604083016102f9565b604084019081526100a1606084016102f9565b93606081019485526080840151946080820195865260a08501519560a083019687526100cf60c087016102f9565b9660c084019788526100f66101006100e960e08a016102f9565b988960e0880152016102f9565b97886101008601526101066102da565b6001600160a01b03988916815298881660208a0190815290519451965190989796871696908116959416936101396102da565b968752602087019586525192519151905160405190936001600160a01b0393841693169060808101906001600160401b038211818310176102c257604091825282815260208101948552808201938452606001948552608091909152905160a05290516001600160a01b0390811660c052915160e052610100929092529151821661012052915181166101405291518216610160529151166101805251614c2b908161030e82396080518181816115d90152818161182701526137e4015260a0518181816115b80152818161184901526137c3015260c05181612ee6015260e05181612f39015261010051818181609e01528181610449015281816105b1015281816123240152818161288d0152818161431b015281816143ac015281816144b4015281816146350152614a45015261012051818181602f01528181611cb40152611e270152610140518181816112450152818161206201526133610152610160518181816106e301528181612458015261255101526101805181818161052701526129860152f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60408051919082016001600160401b038111838210176102c257604052565b51906001600160a01b03821682036102d65756fe60c060405260043610156100c6575b3615610018575f80fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633141580610086575b61005e57005b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016331415610058565b5f3560e01c806324856bc3146108685780633593564c14610707578063817122dc1461069957806391dd73461461054b578063d0c9f6cb146104dd578063d737d0c71461046d578063dc4c90d3146103ff5763fa461e330361000e57346102e05760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760243560043560443567ffffffffffffffff81116102e057610177903690600401610942565b5f8313918215806103f5575b6103cd578181016040828203126102e057813567ffffffffffffffff81116102e057820181601f820112156102e05780356101bd81612c69565b926101cb6040519485612c28565b818452602082840101116102e0575f928160208094018483013701015260208101359173ffffffffffffffffffffffffffffffffffffffff83168093036102e05761021591612e12565b90601790602b83106103a5578035968760601c9561024362ffffff8585013560601c9a60481c168a89612e65565b73ffffffffffffffffffffffffffffffffffffffff3391160361037d571561037357508685105b156102805750505061027e93503391612f86565b005b91935091939482602b0180602b116103465784106102e457508282116102e05781019103907f80000000000000000000000000000000000000000000000000000000000000008410156102e05761027e936102db3391612ca3565b613018565b5f80fd5b925050507faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6929291925c821161031e5761027e923391612f86565b7f739dbe52000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b955084871061026a565b7f32b13d91000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f3b99b53d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f316cf0eb000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f851315610183565b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760207f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102e05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e05761059a903690600401610942565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610671576105e091613404565b90818303610649575f5b83811061061d57610619604051610602602082612c28565b5f81526040519182916020835260208301906109a1565b0390f35b8061064361062e60019387896109e4565b3560f81c61063d838787610a6e565b91613ac3565b016105ea565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e057610751903690600401610942565b60243567ffffffffffffffff81116102e057610771903690600401610970565b916044354211610840573330146108375773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c1661080f576107ea93337f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d610a89565b5f7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b61027e93610a89565b7f5bf6f916000000000000000000000000000000000000000000000000000000005f5260045ffd5b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e0576108b2903690600401610942565b60243567ffffffffffffffff81116102e0576108d2903690600401610970565b913330146108375773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c1661080f576107ea93337f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d610a89565b9181601f840112156102e05782359167ffffffffffffffff83116102e057602083818601950101116102e057565b9181601f840112156102e05782359167ffffffffffffffff83116102e0576020808501948460051b0101116102e057565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b908210156109f0570190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102e0570180359067ffffffffffffffff82116102e0576020019181360383136102e057565b908210156109f057610a859160051b810190610a1d565b9091565b9290808203612bb7579291905f915b848310610aa6575050505050565b9091929394610ab68487876109e4565b3592610ac3858285610a6e565b979092606097603f8760f81c1695600196602181105f14612a1c5760108110156122b15760088110156115245780610eeb5750610b0560208701359b87612e3a565b9590608088013515610ee4577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c9c5b610b3f89356131e2565b9d9188816080527f80000000000000000000000000000000000000000000000000000000000000008314610e58575b50505b604260a052602b7f80000000000000000000000000000000000000000000000000000000000000008210156102e05760a0518f908a10610e52575030915b8982116102e05760409173ffffffffffffffffffffffffffffffffffffffff5f6080513595610cb2610c2b610c5d85610c018b60601c6017608051013560601c62ffffff8183109e60481c1691612e65565b16968a8614610e37576401000276a49b5b878b519485938d60208601526060850190608051612ccf565b91168b830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b8488519a8b98899788967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528b6024870152604486015216606484015260a0608484015260a48301906109a1565b03925af1908115610e2c575f905f92610df0575b610cd6935015610de95750612ca3565b60a0519096908110610d1d573090806017116102e0576080805160170190527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe90196610b71565b50979396929a50979490989360409091013511610dc1575b159081610d96575b50610d4f575060010191909392610a98565b90610d926040519283927f2c4029e900000000000000000000000000000000000000000000000000000000845260048401526040602484015260448301906109a1565b0390fd5b7f8000000000000000000000000000000000000000000000000000000000000000915016155f610d3d565b7f39d35496000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050612ca3565b9150506040823d8211610e24575b81610e0b60409383612c28565b810103126102e057816020610cd6935191015191610cc6565b3d9150610dfe565b6040513d5f823e3d90fd5b73fffd8963efd1fc6a506488495d951d5263988d259b610c12565b91610baf565b6014919250106103a5576020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301523560601c5afa908115610e2c575f91610eb3575b505f80610b6e565b90506020813d8211610edc575b81610ecd60209383612c28565b810103126102e057515f610eab565b3d9150610ec0565b309c610b35565b6001819c929a97939b96999598949c145f14611024575090610f1260208201359282612e3a565b60808301351561101d577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b6040610f4c85356131e2565b9401357faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6925d7f80000000000000000000000000000000000000000000000000000000000000008510156102e057610fa6936102db86612ca3565b9091901561100e5750610fb890612ca3565b03610fe6575f7faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6925d5b610d35565b7fd4e0248e000000000000000000000000000000000000000000000000000000005f5260045ffd5b6110189150612ca3565b610fb8565b3091610f40565b6002810361106e5750610fe191604081013591507f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c61106760208301356131e2565b9135613348565b93949193909290600381036112a1575050508135820163ffffffff60208401351683019163ffffffff83351693602080850194860101910110611294577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c926040519273ffffffffffffffffffffffffffffffffffffffff60208501957f2a2d80d10000000000000000000000000000000000000000000000000000000087521660248501526060604485015260e484019280357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156102e05781016020813591019467ffffffffffffffff82116102e0578160071b360386136102e05781906060608489015252610104860194905f905b80821061127657505050936111ff5f9694829461122b9460408973ffffffffffffffffffffffffffffffffffffffff6111c360208e9d01612d3c565b1660a4880152013560c48601527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc858403016064860152612ccf565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b51908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b91610d35565b909195608080826112896001948b612d9d565b019701920190611187565b633b99b53d5f526004601cfd5b91949390925090600481036113fa57506112be60208201356131e2565b9073ffffffffffffffffffffffffffffffffffffffff8060408301351691351680155f1461133457504790811061130c57806112fc575b5050610d35565b611305916134c8565b5f806112f5565b7f6a12f104000000000000000000000000000000000000000000000000000000005f5260045ffd5b91604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481875afa928315610e2c575f936113c7575b50821061139f578161138e575b505050610d35565b61139792613a14565b5f8080611386565b7f675cae38000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092506020813d82116113f2575b816113e260209383612c28565b810103126102e05751915f611379565b3d91506113d5565b600581036114215750806040610fe19201359061141a60208201356131e2565b903561326c565b600681036114f9575060408101359073ffffffffffffffffffffffffffffffffffffffff61145260208301356131e2565b9135168061146e5750611468610fe192476139d2565b906134c8565b906040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481865afa908115610e2c575f916114c6575b50610fe1936114c0916139d2565b91613a14565b90506020813d82116114f1575b816114e060209383612c28565b810103126102e05751610fe16114b2565b3d91506114d3565b7fd76a1e9e000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6008819c929a97939b96999598949c145f146117d9575061154a6020830135918361319d565b906080840135156117d2577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b61158385356131e2565b9282156109f057611593826131c1565b83600110156109f0576115b56115fd916115af602086016131c1565b906141ee565b907f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614226565b9485816117b8575b5050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82018281116103465761165a61165573ffffffffffffffffffffffffffffffffffffffff92858561324f565b6131c1565b1693604051927f70a0823100000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff8516928360048601526020856024818a5afa948515610e2c575f9561177b575b50946116c8929160209596613586565b6024604051809581937f70a0823100000000000000000000000000000000000000000000000000000000835260048301525afa918215610e2c575f92611747575b506040611719929301359261325f565b1015610d35577f849eaf98000000000000000000000000000000000000000000000000000000005f5260045ffd5b91506020823d8211611773575b8161176160209383612c28565b810103126102e0579051906040611709565b3d9150611754565b92919450946020833d82116117b0575b8161179860209383612c28565b810103126102e05791519194919390916116c86116b8565b3d915061178b565b6117ca926117c5856131c1565b612f86565b5f8085611605565b3091611579565b60098103611b4357506117ec908261319d565b608083013515611b3c577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b61182484356131e2565b917f0000000000000000000000000000000000000000000000000000000000000000937f0000000000000000000000000000000000000000000000000000000000000000955f9560028510611b14576020820135977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601868111610346579190825b6118fd575050506040013586116118d55782156109f057610fe195856118d0926117c5856131c1565b613586565b7f8ab0bc16000000000000000000000000000000000000000000000000000000005f5260045ffd5b90919897507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901978989116103465761193e6116556119609a898961324f565b61195561194f6116558d8b8b61324f565b826141ee565b8185879d939d614226565b90604051907f0902f1ac00000000000000000000000000000000000000000000000000000000825260608260048173ffffffffffffffffffffffffffffffffffffffff87165afa918215610e2c575f905f93611ab7575b5073ffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8082931694169d169116145f14611ab15799905b9980158015611aa9575b611a815782611a0891613988565b916103e88302928084046103e8149015171561034657611a279161325f565b6103e58102908082046103e5149015171561034657611a459161399b565b6001810180911161034657988015610346577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019190826118a7565b7f7b9c8916000000000000000000000000000000000000000000000000000000005f5260045ffd5b5081156119fa565b906119f0565b6dffffffffffffffffffffffffffff80945073ffffffffffffffffffffffffffffffffffffffff9250611b01839260603d8111611b0d575b611af98183612c28565b810190613550565b509590935050506119b7565b503d611aef565b7f20db8267000000000000000000000000000000000000000000000000000000005f5260045ffd5b309161181a565b93949193909290600a8103611c445750505063ffffffff60c08301351682019063ffffffff82351690836020808501948401019101106112945760a061122b5f946111ff86957f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c9560405195869473ffffffffffffffffffffffffffffffffffffffff60208701997f2b67b570000000000000000000000000000000000000000000000000000000008b52166024870152611c026044870182612d9d565b73ffffffffffffffffffffffffffffffffffffffff611c2360808301612d3c565b1660c4870152013560e4850152610100610104850152610124840191612ccf565b91949390929091600b8103611dfb575050611c64602082013591356131e2565b90807f80000000000000000000000000000000000000000000000000000000000000008103611dcc575050475b80611c9d575050610d35565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102e057604051907fd0e30db00000000000000000000000000000000000000000000000000000000082525f8260048186885af1918215610e2c5773ffffffffffffffffffffffffffffffffffffffff92611dbc575b501690308203611d3f575b506112f5565b60446020925f60405195869485937fa9059cbb000000000000000000000000000000000000000000000000000000008552600485015260248401525af18015610e2c57611d8e575b8080611d39565b611dae9060203d8111611db5575b611da68183612c28565b810190613237565b505f611d87565b503d611d9c565b5f611dc691612c28565b5f611d2e565b471015611c91577f6a12f104000000000000000000000000000000000000000000000000000000005f5260045ffd5b600c8103611f65575050611e0f81356131e2565b9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481855afa928315610e2c575f93611f31575b5060200135821061130c5781611ea357505050610d35565b803b156102e0575f80916024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528760048401525af18015610e2c57611f21575b503073ffffffffffffffffffffffffffffffffffffffff831603611f11575b80611386565b611f1a916134c8565b5f80611f0b565b5f611f2b91612c28565b5f611eec565b9092506020813d8211611f5d575b81611f4c60209383612c28565b810103126102e05751916020611e8b565b3d9150611f3f565b600d819c939c9b929597989b99949699145f146121ac57508a358b0198893594611f976020808d019e8d030187612f79565b116103a55773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c169a935f5b8681101561203d578c73ffffffffffffffffffffffffffffffffffffffff61200760208f8560071b01016131c1565b160361201557600101611fd8565b7fe7002877000000000000000000000000000000000000000000000000000000005f5260045ffd5b50989593979694929b919a50985073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102e0576040517f0d58b1db000000000000000000000000000000000000000000000000000000008152602060048201526024810184905292839160448301915f905b8082106120fe5750505091815f81819503925af18015610e2c576120ee575b50610d35565b5f6120f891612c28565b5f6120e8565b9193509160808060019273ffffffffffffffffffffffffffffffffffffffff61212688612d3c565b16815273ffffffffffffffffffffffffffffffffffffffff61214a60208901612d3c565b16602082015273ffffffffffffffffffffffffffffffffffffffff61217160408901612d3c565b16604082015273ffffffffffffffffffffffffffffffffffffffff61219860608901612d3c565b1660608201520194019201859392916120c9565b80929b93989550600e919a97969450145f146114f95750604051907f70a0823100000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff813516600483015260208260248173ffffffffffffffffffffffffffffffffffffffff84860135165afa918215610e2c575f9261227d575b5060400135111580610fe15791506040517fa328167200000000000000000000000000000000000000000000000000000000602082015260048152611270602482612c28565b9091506020813d82116122a9575b8161229860209383612c28565b810103126102e05751906040612237565b3d915061228b565b6010819c929a97939b96999598949c145f146123cc575061230a915f9160405193849283927f48c89491000000000000000000000000000000000000000000000000000000008452602060048501526024840191612ccf565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610e2c576123565750610d35565b3d805f833e6123658183612c28565b8101906020818303126102e05780519067ffffffffffffffff82116102e0570181601f820112156102e057805161239b81612c69565b926123a96040519485612c28565b818452602082840101116102e0575f928160208094018483015e0101525f6120e8565b80929495506011919350145f146124ae5750907fffffffff000000000000000000000000000000000000000000000000000000008135167f7ac2ff7b0000000000000000000000000000000000000000000000000000000081036124835750815f929183926040519283928337810183815203908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b7ff801e525000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b601281036127ad57507f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c917fffffffff000000000000000000000000000000000000000000000000000000008135167f0c49ccbe0000000000000000000000000000000000000000000000000000000081148015612784575b801561275b575b156124835750600481013573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016936040517f6352211e000000000000000000000000000000000000000000000000000000008152826004820152602081602481895afa908115610e2c5773ffffffffffffffffffffffffffffffffffffffff9182915f9161273d575b50169116908082149182156126a9575b8215612638575b50501561260d575091815f809481946040519384928337810182815203925af190611270612d0d565b7fbb25d4c5000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b909150604051917fe985e9c500000000000000000000000000000000000000000000000000000000835260048301526024820152602081604481885afa908115610e2c575f9161268b575b505f806125e4565b6126a3915060203d8111611db557611da68183612c28565b5f612683565b91506040517f081812fc0000000000000000000000000000000000000000000000000000000081528360048201526020816024818a5afa908115610e2c57839173ffffffffffffffffffffffffffffffffffffffff915f9161270f575b501614916125dd565b612730915060203d8111612736575b6127288183612c28565b81019061349c565b5f612706565b503d61271e565b612755915060203d8111612736576127288183612c28565b5f6125cd565b507f42966c6800000000000000000000000000000000000000000000000000000000811461252f565b507ffc6f7865000000000000000000000000000000000000000000000000000000008114612528565b601381036128b85750505f809160405173ffffffffffffffffffffffffffffffffffffffff60a060208301937f6276cbbe0000000000000000000000000000000000000000000000000000000085528261280682612d3c565b1660248501528261281960208301612d3c565b16604485015262ffffff61282f60408301612d5d565b16606485015261284160608201612d6d565b60020b60848501528261285660808301612d3c565b1660a485015201351660c482015260c4815261287360e482612c28565b51908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b601481036114f957507fffffffff000000000000000000000000000000000000000000000000000000008235167fdd46508f0000000000000000000000000000000000000000000000000000000081036124835750806004116102e05761294d6129477ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830160048501612e12565b90612e12565b5f5b8181106129b1575050505f91829147918160405192839283378101848152039173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b6129bc8183856109e4565b3560f81c8015908115612a11575b8115612a06575b506129de5760010161294f565b7f5d1d0f9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b60039150145f6129d1565b6001811491506129ca565b9098959199506021819b939b989598979497145f146114f9575090612a4091613404565b612a836040959395519460208601967f24856bc3000000000000000000000000000000000000000000000000000000008852604060248801526064870191612ccf565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc858503016044860152818452602084019160208160051b86010194845f907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603015b848310612b3d5750505050505050509181612b2e5f94938594037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b519082305af190611270612d0d565b90919293949596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08582030188528835828112156102e0578301906020823592019167ffffffffffffffff81116102e05780360383136102e057612ba760209283928b95612ccf565b9a01980196959493019190612ae9565b7fff633a38000000000000000000000000000000000000000000000000000000005f5260045ffd5b60a0810190811067ffffffffffffffff821117612bfb57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612bfb57604052565b67ffffffffffffffff8111612bfb57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b7f80000000000000000000000000000000000000000000000000000000000000008114610346575f0390565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b3d15612d37573d90612d1e82612c69565b91612d2c6040519384612c28565b82523d5f602084013e565b606090565b359073ffffffffffffffffffffffffffffffffffffffff821682036102e057565b359062ffffff821682036102e057565b35908160020b82036102e057565b908160209103126102e0575190565b359065ffffffffffff821682036102e057565b65ffffffffffff612e0c6060809373ffffffffffffffffffffffffffffffffffffffff612dc982612d3c565b16865273ffffffffffffffffffffffffffffffffffffffff612ded60208301612d3c565b16602087015283612e0060408301612d8a565b16604087015201612d8a565b16910152565b909163ffffffff82351682019263ffffffff8435169260208086019585010191011061129457565b909163ffffffff60608301351682019263ffffffff8435169260208086019585010191011061129457565b9073ffffffffffffffffffffffffffffffffffffffff9283821684841611612f71575b62ffffff90846040519381602086019616865216604084015216606082015260608152612eb6608082612c28565b5190206040517fff00000000000000000000000000000000000000000000000000000000000000602082019081527f000000000000000000000000000000000000000000000000000000000000000060601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602183015260358201929092527f00000000000000000000000000000000000000000000000000000000000000006055820152612f6a81607581016111ff565b5190201690565b909190612e88565b9190820180921161034657565b9092919073ffffffffffffffffffffffffffffffffffffffff84163003612fb357612fb1935061326c565b565b919273ffffffffffffffffffffffffffffffffffffffff8411612ff05773ffffffffffffffffffffffffffffffffffffffff612fb1941692613348565b7fc4bd89a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b939290602b82106103a5578235938460601c92601785013560601c9380851094859760481c62ffffff169061304c92612e65565b73ffffffffffffffffffffffffffffffffffffffff1692845f1460409673ffffffffffffffffffffffffffffffffffffffff80956130e15f9661313495613182576401000276a4925b846130af8e51978f94899560208701526060860191612ccf565b91168d830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284612c28565b89519b8c998a9889977f128acb080000000000000000000000000000000000000000000000000000000089521660048801526024870152604486015216606484015260a0608484015260a48301906109a1565b03925af18015610e2c575f925f9161314b57509192565b9250506040823d60401161317a575b8161316760409383612c28565b810103126102e057602082519201519192565b3d915061315a565b73fffd8963efd1fc6a506488495d951d5263988d2592613095565b9160608301358301916131ba602084359581860195030185612f79565b116103a557565b3573ffffffffffffffffffffffffffffffffffffffff811681036102e05790565b73ffffffffffffffffffffffffffffffffffffffff8116600181036132285750507f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c90565b60020361323457503090565b90565b908160209103126102e0575180151581036102e05790565b91908110156109f05760051b0190565b9190820391821161034657565b90919073ffffffffffffffffffffffffffffffffffffffff16806132945750612fb1916134c8565b7f800000000000000000000000000000000000000000000000000000000000000082146132c6575b91612fb192613a14565b9050604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481855afa8015610e2c575f90613314575b909250906132bc565b506020833d602011613340575b8161332e60209383612c28565b810103126102e057612fb1925161330b565b3d9150613321565b919273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102e0575f73ffffffffffffffffffffffffffffffffffffffff9384829681608496816040519b8c9a8b997f36c78516000000000000000000000000000000000000000000000000000000008b521660048a01521660248801521660448601521660648401525af18015610e2c576133fa5750565b5f612fb191612c28565b604081351891606082019363ffffffff6040840135169363ffffffe0601f8601169060608201602086013518179084019260608401359463ffffffff861694641fffffffe0608082019760051b1680915f925b80841061346f57506080925001019101101761129457565b90916020809163ffffffe0601f60808089890101359b848d18179b88010135011601019301929190613457565b908160209103126102e0575173ffffffffffffffffffffffffffffffffffffffff811681036102e05790565b5f80809381935af1156134d757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152fd5b51906dffffffffffffffffffffffffffff821682036102e057565b908160609103126102e05761356481613535565b91604061357360208401613535565b92015163ffffffff811681036102e05790565b91600282106139605781156109f05761359e836131c1565b82600110156109f0576135ba906115af602086979596016131c1565b50927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101937ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8201955f906020937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08501965b8884106136415750505050505050505050565b61364f61165585848661324f565b9473ffffffffffffffffffffffffffffffffffffffff61367661165560018801868861324f565b921695604051917f0902f1ac0000000000000000000000000000000000000000000000000000000083526060836004818b5afa918215610e2c57895f945f9461390d575b5073ffffffffffffffffffffffffffffffffffffffff806dffffffffffffffffffffffffffff80602496979816971693169416841494855f146139075791935b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082528d60048301525afa918215610e2c575f926138d8575b50808203928115928380156138d0575b611a8157826103e586029586046103e514911417156103465761376d9084613988565b916103e882029182046103e8141715610346576137939261378d91612f79565b9061399b565b90156138c9575f90915b8b8610156138c057906137be613808926115af61165560028a01888a61324f565b8193917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614226565b915b96604051906138198a83612c28565b5f82528b368b840137803b156102e057613894945f8094604051978895869485937f022c0d9f0000000000000000000000000000000000000000000000000000000085526004850152602484015273ffffffffffffffffffffffffffffffffffffffff891660448401526080606484015260848301906109a1565b03925af1918215610e2c576001926138b0575b5093019261362e565b5f6138ba91612c28565b5f6138a7565b5087905f61380a565b5f9161379d565b50811561374a565b9091508981813d8311613900575b6138f08183612c28565b810103126102e05751905f61373a565b503d6138e6565b936136fa565b6dffffffffffffffffffffffffffff9550602493945073ffffffffffffffffffffffffffffffffffffffff86613951829360603d8111611b0d57611af98183612c28565b509890989796505050506136ba565b7fae52ad0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b8181029291811591840414171561034657565b81156139a5570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61271082116139ec57612710916139e891613988565b0490565b7fdeaa01e6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f9182604492602095604051937fa9059cbb000000000000000000000000000000000000000000000000000000008552600485015260248401525af13d15601f3d1160015f511416171615613a6557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152fd5b929190600b84101561401c5760078403613c3557613ae292935061474f565b6020810190613af1828261475d565b90505f92613afe836131c1565b90613b0b604085016146bc565b906fffffffffffffffffffffffffffffffff821615613c1c575b92915f915b838310613bab5750505050506060016fffffffffffffffffffffffffffffffff80613b54836146bc565b169216918210613b62575050565b613b7c6fffffffffffffffffffffffffffffffff916146bc565b7f8b063d73000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b8496506fffffffffffffffffffffffffffffffff613c0091613be7613be086613bda613c059798999a8c61475d565b906147b1565b9586614ad8565b613bf46080880188610a1d565b949093165f0391614938565b614bff565b946001613c1287936131c1565b9194930191613b2a565b9050613c2f613c2a83614314565b6148f3565b90613b25565b60068403613d2c57613c489293506146ad565b613c5460c082016146bc565b6fffffffffffffffffffffffffffffffff811615613cdb575b613cbe613c0060e092613c9d6fffffffffffffffffffffffffffffffff613c9660a088016146d9565b9216612ca3565b90613cac610100870187610a1d565b929091613cb936896146e6565b614938565b91016fffffffffffffffffffffffffffffffff80613b54836146bc565b50613ce860a082016146d9565b15613d125760e0613cbe613c00613d09613c2a613d04866131c1565b614314565b92505050613c6d565b60e0613cbe613c00613d09613c2a613d04602087016131c1565b60098403613ecf57613d3f92935061474f565b6020810190613d4e828261475d565b5f939150613d5e604084016146bc565b613d67846131c1565b916fffffffffffffffffffffffffffffffff821615613ebb575b92919290815b613e0457505050506060016fffffffffffffffffffffffffffffffff80613dad836146bc565b169216918211613dbb575050565b613dd56fffffffffffffffffffffffffffffffff916146bc565b7f12bacdd3000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b829395506fffffffffffffffffffffffffffffffff613e7b91613e61613e5a613e31613e8596978a61475d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901916147b1565b9889614ad8565b90613e6f60808b018b610a1d565b94909316911590614938565b600f0b5f036148f3565b937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613eb186926131c1565b9392019081613d87565b9050613ec9613c2a8361462e565b90613d81565b60088414613f06575050505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b613f119293506146ad565b613f1d60c082016146bc565b6fffffffffffffffffffffffffffffffff811615613fa1575b613f84613c2a613f7c6fffffffffffffffffffffffffffffffff60e094613f5f60a088016146d9565b613f6d610100890189610a1d565b9390921690613cb9368a6146e6565b600f0b612ca3565b91016fffffffffffffffffffffffffffffffff80613dad836146bc565b50613fae60a082016146d9565b15613ff15760e0613f84613c2a613f7c6fffffffffffffffffffffffffffffffff613fe6613c2a613fe1602089016131c1565b61462e565b945050505050613f36565b60e0613f84613c2a613f7c6fffffffffffffffffffffffffffffffff613fe6613c2a613fe1886131c1565b92600c81036140a05750614030919261461b565b9061403a8161462e565b91808311614070575090612fb1917f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c90614495565b90507f12bacdd3000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b600f810361412357506140b3919261461b565b906140bd81614314565b918083106140f3575090612fb1917f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c9061438d565b90507f8b063d73000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b600b810361417c575061413a90612fb192936142fc565b156141715761416b827f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c92614454565b91614495565b61416b823092614454565b600e81036141af57506141a36141996141a992612fb194956142fc565b92829492916131e2565b92614440565b9161438d565b92601084146141c057505050613edb565b612fb19293506141d66141df926141a9926142fc565b929193906131e2565b916141e984614314565b6139d2565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8216105f14610a855791565b91612f6a9073ffffffffffffffffffffffffffffffffffffffff947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519181602084019460601b16845260601b1660348201526028815261428a604882612c28565b5190206111ff604051938492602084019687917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000605594927fff00000000000000000000000000000000000000000000000000000000000000855260601b166001840152601583015260358201520190565b90606011611294578035916040602083013592013590565b61433f81307f00000000000000000000000000000000000000000000000000000000000000006147f1565b905f821261434b575090565b73ffffffffffffffffffffffffffffffffffffffff907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091801561443b5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102e0575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610e2c576133fa5750565b505050565b9081614450576132349150614314565b5090565b907f8000000000000000000000000000000000000000000000000000000000000000820361448657613234915061488b565b8161445057613234915061462e565b5f9183156146155773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102e05773ffffffffffffffffffffffffffffffffffffffff604051917fa584119400000000000000000000000000000000000000000000000000000000835216908160048201525f8160248183885af18015610e2c57614600575b50806145b35750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156145a7575061457c5750565b61459d9060203d6020116145a0575b6145958183612c28565b810190612d7b565b50565b503d61458b565b604051903d90823e3d90fd5b839483602094936145c393612f86565b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156145a7575061457c5750565b61460d9194505f90612c28565b5f925f614534565b50505050565b9190604011611294576020823592013590565b61465981307f00000000000000000000000000000000000000000000000000000000000000006147f1565b905f821361466b575061323490612ca3565b73ffffffffffffffffffffffffffffffffffffffff907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90610140116112945780350190565b356fffffffffffffffffffffffffffffffff811681036102e05790565b3580151581036102e05790565b91908260a09103126102e0576040516146fe81612bdf565b608061474a81839561470f81612d3c565b855261471d60208201612d3c565b602086015261472e60408201612d5d565b604086015261473f60608201612d6d565b606086015201612d3c565b910152565b9060a0116112945780350190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102e0570180359067ffffffffffffffff82116102e057602001918160051b360383136102e057565b91908110156109f05760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61813603018212156102e0570190565b73ffffffffffffffffffffffffffffffffffffffff809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa908115610e2c575f9161485c575090565b90506020813d602011614883575b8161487760209383612c28565b810103126102e0575190565b3d915061486a565b73ffffffffffffffffffffffffffffffffffffffff16806148ab57504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115610e2c575f9161485c575090565b906fffffffffffffffffffffffffffffffff821680920361491057565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092908315614abd576401000276a4905b60405194606086019386851067ffffffffffffffff861117612bfb5773ffffffffffffffffffffffffffffffffffffffff9788608095614a2b946020986040521515998a8152888101908a82528360408201931683526040519c8d998a997ff3cd914c000000000000000000000000000000000000000000000000000000008b528281511660048c0152828d8201511660248c015262ffffff60408201511660448c0152606081015160020b60648c0152015116608489015251151560a48801525160c4870152511660e4850152610120610104850152610124840191612ccf565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1928315610e2c575f93614a89575b505f1303614a8357600f0b90565b60801d90565b9092506020813d602011614ab5575b81614aa560209383612c28565b810103126102e05751915f614a75565b3d9150614a98565b73fffd8963efd1fc6a506488495d951d5263988d2590614949565b905f6080604051614ae881612bdf565b8281528260208201528260408201528260608201520152614b08826131c1565b73ffffffffffffffffffffffffffffffffffffffff82169173ffffffffffffffffffffffffffffffffffffffff82168084105f14614be0575073ffffffffffffffffffffffffffffffffffffffff905b1680921492602081013562ffffff81168091036102e0576040820135918260020b8093036102e057606001359273ffffffffffffffffffffffffffffffffffffffff84168094036102e05773ffffffffffffffffffffffffffffffffffffffff9060405195614bc687612bdf565b865216602085015260408401526060830152608082015291565b91505073ffffffffffffffffffffffffffffffffffffffff8291614b58565b5f81600f0b12614910576fffffffffffffffffffffffffffffffff169056fea164736f6c634300081a000a000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba30000000000000000000000004200000000000000000000000000000000000006000000000000000000000000216d3b49e8c5140d2499da346ab5335a75f655d8000000000000000000000000780e96775371e1c4f4cd1524a578b8f1b12ece5896e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b540000000000000000000000009cb26a7183b2f4515945dc52cb4195b0d2d06c950000000000000000000000004801ed4f1b57559f9071413d9d99b607316fd1eb00000000000000000000000012a98709bb5d0641d61458f85dcafbe17ac2d05c", - "nonce": "0x17", - "chainId": "0x515" - }, - "additionalContracts": [], - "isFixedGasLimit": false } ], "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x32af50", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xf5f1e527c5ecd1701a79367f003162686402f0e05b0667a99d733ec184740118", - "transactionIndex": "0xb", - "blockHash": "0x4bf66e5dfca0f478b2c04a84c7a065cf4f2c5680f185f10ea143a99f7a0417a5", - "blockNumber": "0xa3a97b", - "gasUsed": "0x2e8ff7", - "effectiveGasPrice": "0xf433c", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0x216d3b49e8c5140d2499da346ab5335a75f655d8", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x14975766f3", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x188ffb9694e6e", - "l1GasPrice": "0x9cf9947e", - "l1GasUsed": "0x152f1" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x4d84a3", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x41283e07dd1b8bdf71e42dbeddb46ae5c99f527a025b6a532e5fc11d6b37713a", - "transactionIndex": "0xb", - "blockHash": "0xee340daf3311fe7b9399d80e79762350dfd4a6fc60cd6463b0804918a4d37f0e", - "blockNumber": "0xa3a980", - "gasUsed": "0x487566", - "effectiveGasPrice": "0xf433c", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x13cc64ab25", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x1c816ef042eec", - "l1GasPrice": "0x97b48955", - "l1GasUsed": "0x1991b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x581e97", - "logs": [ - { - "address": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "topics": [ - "0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000007d68837a1940cf2749ff0b3e6abed23ac6f9a04" - ], - "data": "0x", - "blockHash": "0x2d639f4e6fe224bf570d47ee89a0e8624990b9c6fac3a89859a33dd3cb376bda", - "blockNumber": "0xa3a985", - "transactionHash": "0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083", - "transactionIndex": "0xe", - "logIndex": "0x2", - "removed": false - }, - { - "address": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "topics": [ - "0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc", - "0x00000000000000000000000000000000000000000000000000000000000001f4", - "0x000000000000000000000000000000000000000000000000000000000000000a" - ], - "data": "0x", - "blockHash": "0x2d639f4e6fe224bf570d47ee89a0e8624990b9c6fac3a89859a33dd3cb376bda", - "blockNumber": "0xa3a985", - "transactionHash": "0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083", - "transactionIndex": "0xe", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "topics": [ - "0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc", - "0x0000000000000000000000000000000000000000000000000000000000000bb8", - "0x000000000000000000000000000000000000000000000000000000000000003c" - ], - "data": "0x", - "blockHash": "0x2d639f4e6fe224bf570d47ee89a0e8624990b9c6fac3a89859a33dd3cb376bda", - "blockNumber": "0xa3a985", - "transactionHash": "0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083", - "transactionIndex": "0xe", - "logIndex": "0x4", - "removed": false - }, - { - "address": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "topics": [ - "0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc", - "0x0000000000000000000000000000000000000000000000000000000000002710", - "0x00000000000000000000000000000000000000000000000000000000000000c8" - ], - "data": "0x", - "blockHash": "0x2d639f4e6fe224bf570d47ee89a0e8624990b9c6fac3a89859a33dd3cb376bda", - "blockNumber": "0xa3a985", - "transactionHash": "0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083", - "transactionIndex": "0xe", - "logIndex": "0x5", - "removed": false - } - ], - "logsBloom": "0x00000000000000000100000000040020000020000000000000080000800000000400000000000800080000000000000000004000040000000020000000000000000000000000002000000000000000000000000000000040000004000000000000000000021000000000000000000800400080000000000000000000000000004000000000000000010000000000000000000010004000000000000000000040000000000000000000000000000100000000000000000000000000000000000000000001000000000000000000000000000000000000080000000000000020000000000000000004000000200040000000000000000000000000000100000000", - "type": "0x2", - "transactionHash": "0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083", - "transactionIndex": "0xe", - "blockHash": "0x2d639f4e6fe224bf570d47ee89a0e8624990b9c6fac3a89859a33dd3cb376bda", - "blockNumber": "0xa3a985", - "gasUsed": "0x530490", - "effectiveGasPrice": "0xf433d", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x13cc64ab25", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x380164a736dfc", - "l1GasPrice": "0x97b48955", - "l1GasUsed": "0x323c6" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x3f66c", - "logs": [ - { - "address": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "topics": [ - "0xc66a3fdf07232cdd185febcc6579d408c241b47ae2f9907d84be655141eeaecc", - "0x0000000000000000000000000000000000000000000000000000000000000064", - "0x0000000000000000000000000000000000000000000000000000000000000001" - ], - "data": "0x", - "blockHash": "0x892dbb0014345505468314f9cbdd3cde6fcd00744901b3d33bbfb6e4fa754817", - "blockNumber": "0xa3a98b", - "transactionHash": "0x7fa9041d354d4f40e97e7534ec4d0adb6f054bcfed887baead47134ac338f37e", - "transactionIndex": "0x9", - "logIndex": "0x0", - "removed": false - } - ], - "logsBloom": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000c0000000000000000002000000000000000000000000000040000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000040000000000000000000000000200000000000000000000000008000000000000000", - "type": "0x2", - "transactionHash": "0x7fa9041d354d4f40e97e7534ec4d0adb6f054bcfed887baead47134ac338f37e", - "transactionIndex": "0x9", - "blockHash": "0x892dbb0014345505468314f9cbdd3cde6fcd00744901b3d33bbfb6e4fa754817", - "blockNumber": "0xa3a98b", - "gasUsed": "0xbaa2", - "effectiveGasPrice": "0xf433e", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "contractAddress": null, - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x124da3022f", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x67121be2516", - "l1GasPrice": "0x9302ce2d", - "l1GasUsed": "0x640" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x4db8c", - "logs": [ - { - "address": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "topics": [ - "0xb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c", - "0x00000000000000000000000007d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "0x00000000000000000000000007d68837a1940cf2749ff0b3e6abed23ac6f9a04" - ], - "data": "0x", - "blockHash": "0xbeba3e1cff130a7c724d343e76b634b6bf5b51e91b2fb8f2ef8728ff14027448", - "blockNumber": "0xa3a98f", - "transactionHash": "0xd665fa250323cf3019f7218dd47d893152a51c7d9469511b61f89bf6811783f9", - "transactionIndex": "0xc", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000040000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000040000000000000000000000000000100000000", - "type": "0x2", - "transactionHash": "0xd665fa250323cf3019f7218dd47d893152a51c7d9469511b61f89bf6811783f9", - "transactionIndex": "0xc", - "blockHash": "0xbeba3e1cff130a7c724d343e76b634b6bf5b51e91b2fb8f2ef8728ff14027448", - "blockNumber": "0xa3a98f", - "gasUsed": "0x6464", - "effectiveGasPrice": "0xf433e", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x780e96775371e1c4f4cd1524a578b8f1b12ece58", - "contractAddress": null, - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x124da3022f", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x67121be2516", - "l1GasPrice": "0x9302ce2d", - "l1GasUsed": "0x640" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x18c797", + "cumulativeGasUsed": "0x5947c6", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xdbba5f58a37aef8302e125c1efd65e1b9df6af1c595709d52a946fc5273b299a", - "transactionIndex": "0xa", - "blockHash": "0x83d789d592644b57e29e913d87fe2d13d4420311aad4b4c638b34c46dd5bfcef", - "blockNumber": "0xa3a993", - "gasUsed": "0x55f30", - "effectiveGasPrice": "0xf433e", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x124da3022f", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x3dd01a392a77", - "l1GasPrice": "0x9302ce2d", - "l1GasUsed": "0x3bf8" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x212088", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x42feb903896a21a0a834bc7c93d8ce84536d215d20700bf251e3945d2f9c18cc", - "transactionIndex": "0xe", - "blockHash": "0xe193f70e1b212cd5ef65aa36b9c9610ea538df98539b2ccf30e9b387994a00c4", - "blockNumber": "0xa3a997", - "gasUsed": "0x1c068d", - "effectiveGasPrice": "0xf433e", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x124da3022f", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0xeba6bb7a856b", - "l1GasPrice": "0x9302ce2d", - "l1GasUsed": "0xe4a1" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x94ac6", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x292818c36fae4db0af323455839cc579f71ffd348a9ecfe5ce00a68cc5bdf6fe", - "transactionIndex": "0xa", - "blockHash": "0x0f22eddea4727dd8882a3bfd703bbc11254219d9c09d4bb38d4b7fcc6fac356e", - "blockNumber": "0xa3a99b", - "gasUsed": "0x55f6c", - "effectiveGasPrice": "0xf433e", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0xa2705406f5f6deeff977edc4eb52617e06b9e7ff", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x10ebc90eff", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x34504f4dffab", - "l1GasPrice": "0x8a720ec0", - "l1GasUsed": "0x36e6" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x555a66", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4c6469b634c0bf639d5378f34b3921036ebfc8325b2f7ea72035b989baa645c4", - "transactionIndex": "0xa", - "blockHash": "0x58a9b24428090c8d5febd1ef2d21557fae9db5b45927d316ba9a41c9a1706549", - "blockNumber": "0xa3a9a0", - "gasUsed": "0x51a32f", - "effectiveGasPrice": "0xf433e", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", + "transactionHash": "0x170028b613a6daf839e60de54b8dcc7e230909a6eed67d3e444324ec063c3d6a", + "transactionIndex": "0x46", + "blockHash": "0x9a23b4ad37e3c6d056b48ad67f0d089d53fb83989d5c55494cc9c11c03524b2e", + "blockNumber": "0x13f3c3b", + "gasUsed": "0x274da6", + "effectiveGasPrice": "0x2faf080", + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x10ebc90eff", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x2671c5bb45efd", - "l1GasPrice": "0x8a720ec0", - "l1GasUsed": "0x28585" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x1653aa", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4e51427044c31aa31d8283c69ab97d63d211cdd66924de4de9e14a9692222f91", - "transactionIndex": "0xb", - "blockHash": "0x9fc8794f9ceaf26327a52307f73c057cde67786e2553a1505098a2277c9e779a", - "blockNumber": "0xa3a9a5", - "gasUsed": "0x124a6b", - "effectiveGasPrice": "0xf433f", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0x420f4be1fc1710f7a1fbfdcaf5e29deaa9da446e", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x1309423560", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0xc8bad08e68fe", - "l1GasPrice": "0x86e07d5b", - "l1GasUsed": "0xbb46" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd6ae7", - "logs": [ - { - "address": "0x1872c8f792bb8321f9ef2f531e98e53572d3f293", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000420f4be1fc1710f7a1fbfdcaf5e29deaa9da446e" - ], - "data": "0x", - "blockHash": "0x1e1d92258cebf8d5890b8e9d21686177666761fa64e26ec91864d2031ca18579", - "blockNumber": "0xa3a9aa", - "transactionHash": "0xe5238180df540e174ac6085ee196d6921b278e80eb3a2a836fe8f45f9cdca358", - "transactionIndex": "0x9", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0x522496d5f0f2250e82dddaea827fcbebd445edcd", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000007d68837a1940cf2749ff0b3e6abed23ac6f9a04" - ], - "data": "0x", - "blockHash": "0x1e1d92258cebf8d5890b8e9d21686177666761fa64e26ec91864d2031ca18579", - "blockNumber": "0xa3a9aa", - "transactionHash": "0xe5238180df540e174ac6085ee196d6921b278e80eb3a2a836fe8f45f9cdca358", - "transactionIndex": "0x9", - "logIndex": "0x4", - "removed": false - }, - { - "address": "0x1872c8f792bb8321f9ef2f531e98e53572d3f293", - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000522496d5f0f2250e82dddaea827fcbebd445edcd", - "blockHash": "0x1e1d92258cebf8d5890b8e9d21686177666761fa64e26ec91864d2031ca18579", - "blockNumber": "0xa3a9aa", - "transactionHash": "0xe5238180df540e174ac6085ee196d6921b278e80eb3a2a836fe8f45f9cdca358", - "transactionIndex": "0x9", - "logIndex": "0x5", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000080000000400000000000000000800000000080000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000002000001000000000000000004000000000802000000020000000000000000000800000000800000000010000000000000400000000000000000000000000000000000000000000000020000000000800000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000000000000020000000100000000000000000000040000000000000000080000000000100000000", - "type": "0x2", - "transactionHash": "0xe5238180df540e174ac6085ee196d6921b278e80eb3a2a836fe8f45f9cdca358", - "transactionIndex": "0x9", - "blockHash": "0x1e1d92258cebf8d5890b8e9d21686177666761fa64e26ec91864d2031ca18579", - "blockNumber": "0xa3a9aa", - "gasUsed": "0x98d8c", - "effectiveGasPrice": "0xf433f", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0x1872c8f792bb8321f9ef2f531e98e53572d3f293", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x1309423560", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x82a09e2f5e52", - "l1GasPrice": "0x86e07d5b", - "l1GasUsed": "0x79df" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x5c6842", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x1e18ec55902dcaac896d262b31ccf5658967e02f723034a9547bd1cbdd9e9546", - "transactionIndex": "0xa", - "blockHash": "0xc2d8295c1b7cd7df5ae3fb136b1851a7b1fc2cf18b78a9bdb92a317394ab502e", - "blockNumber": "0xa3a9af", - "gasUsed": "0x538288", - "effectiveGasPrice": "0xf433f", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0x4801ed4f1b57559f9071413d9d99b607316fd1eb", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x1309423560", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x33f9dbcd469c8", - "l1GasPrice": "0x77ee9778", - "l1GasUsed": "0x307f6" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x17bcf0", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x4602ffd6b2503ef1d402059c90840b6180f82c63e621ad84783d2dcfbb4b570f", - "transactionIndex": "0x4", - "blockHash": "0xe5ede78e37fe25c738c32c0ea789befc1ea62ed1e17d522642bdfda003a8cdd5", - "blockNumber": "0xa3a9b4", - "gasUsed": "0x15cd1a", - "effectiveGasPrice": "0xf4340", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0x9171c97d7b17278e5fce1996cd5dda682bddaf43", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x1309423560", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0xe3443bfc32cc", - "l1GasPrice": "0x77ee9778", - "l1GasUsed": "0xd40e" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x25e4b0", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x7c1be94d3a1c61ed3cdd80b420b88cab0913daff6385b12971d068735530cb91", - "transactionIndex": "0x5", - "blockHash": "0x5196de64b66f9ba05c4fff55d0043a4e818a4c63c45f8f7149ebfd9f698086b3", - "blockNumber": "0xa3a9b9", - "gasUsed": "0x21952a", - "effectiveGasPrice": "0xf4340", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0xbeeabec0220a09048dbe86790b59510a2e1ff5d2", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x1309423560", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x15251e16749ab", - "l1GasPrice": "0x77ee9778", - "l1GasUsed": "0x13bad" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x515289", - "logs": [ - { - "address": "0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000007d68837a1940cf2749ff0b3e6abed23ac6f9a04" - ], - "data": "0x", - "blockHash": "0x00857f585cfac64e5f1f02e0654fe96abdd5a5bec761abd3c4294e35e95242c1", - "blockNumber": "0xa3a9be", - "transactionHash": "0x80dc9fcf2bf641b132aa848faf58fa1b2ae325bbe52ce49b2b339d8eaf35f392", - "transactionIndex": "0x2", - "logIndex": "0x1", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000001000000000000000004000000000000000000020000000000000000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000020000000000000000000000000000040000000000000000000000000000100000000", - "type": "0x2", - "transactionHash": "0x80dc9fcf2bf641b132aa848faf58fa1b2ae325bbe52ce49b2b339d8eaf35f392", - "transactionIndex": "0x2", - "blockHash": "0x00857f585cfac64e5f1f02e0654fe96abdd5a5bec761abd3c4294e35e95242c1", - "blockNumber": "0xa3a9be", - "gasUsed": "0x502b92", - "effectiveGasPrice": "0xf4340", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x156a6a80b8", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x3388c50fd077f", - "l1GasPrice": "0x83f72937", - "l1GasUsed": "0x2abe5" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x518deb", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x45d83185fb5dc4310dfc9ea4a79f012fb1b1018583ef7da9d28614dba6cd45c4", - "transactionIndex": "0x2", - "blockHash": "0x51c014dd13b0ebe16641689e5c91398c7e1e72c713fd1886df436cf93fb1a2c2", - "blockNumber": "0xa3a9c4", - "gasUsed": "0x506b8a", - "effectiveGasPrice": "0xf4341", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x06e356052ae91916fc95a1e65544d0ed60a49632", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x156a6a80b8", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x40619c41016e8", - "l1GasPrice": "0x83f72937", - "l1GasUsed": "0x35662" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x1cca37", - "logs": [ - { - "address": "0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x00000000000000000000000006e356052ae91916fc95a1e65544d0ed60a49632" - ], - "data": "0x", - "blockHash": "0x800d3c5685e9389b6c1935188e35a1f076be09f4c92a9163f9408f77b0b60e48", - "blockNumber": "0xa3a9c9", - "transactionHash": "0x8e2dea22951b012a77ebd82b3dac1c95db7f1686ebf3c13bd68fe08448bd7bb8", - "transactionIndex": "0x4", - "logIndex": "0x2", - "removed": false - }, - { - "address": "0xda819c1c482fd15fe343ac3c42f3f7b2fe54d18c", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x00000000000000000000000007d68837a1940cf2749ff0b3e6abed23ac6f9a04" - ], - "data": "0x", - "blockHash": "0x800d3c5685e9389b6c1935188e35a1f076be09f4c92a9163f9408f77b0b60e48", - "blockNumber": "0xa3a9c9", - "transactionHash": "0x8e2dea22951b012a77ebd82b3dac1c95db7f1686ebf3c13bd68fe08448bd7bb8", - "transactionIndex": "0x4", - "logIndex": "0x3", - "removed": false - }, - { - "address": "0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f", - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000da819c1c482fd15fe343ac3c42f3f7b2fe54d18c", - "blockHash": "0x800d3c5685e9389b6c1935188e35a1f076be09f4c92a9163f9408f77b0b60e48", - "blockNumber": "0xa3a9c9", - "transactionHash": "0x8e2dea22951b012a77ebd82b3dac1c95db7f1686ebf3c13bd68fe08448bd7bb8", - "transactionIndex": "0x4", - "logIndex": "0x4", - "removed": false - } - ], - "logsBloom": "0x0000000000000000000000000000000040000400000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800a000001000000000000000004000000000000000000020000000000000008000800000000800010000000000000000000400000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000020000000000000000000000000000000000000000020000000000000000000000000000000010400000000000000000020000000000000040000800000000040000000000000000000000000000100000000", - "type": "0x2", - "transactionHash": "0x8e2dea22951b012a77ebd82b3dac1c95db7f1686ebf3c13bd68fe08448bd7bb8", - "transactionIndex": "0x4", - "blockHash": "0x800d3c5685e9389b6c1935188e35a1f076be09f4c92a9163f9408f77b0b60e48", - "blockNumber": "0xa3a9c9", - "gasUsed": "0x993b5", - "effectiveGasPrice": "0xf4342", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x14975766f3", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x8ef8876af4c6", - "l1GasPrice": "0x7894efed", - "l1GasUsed": "0x7b56" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x510550", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x12e8bb585f23cc0eccf248918c93f2c4acc771f993db4c0a850c744dad5509fa", - "transactionIndex": "0x1", - "blockHash": "0xc2d57ec1b56d1cb3c9bc8d060b6ce7284eadf148ada879b0d0db1d3274a7cbf0", - "blockNumber": "0xa3a9ce", - "gasUsed": "0x5059c6", - "effectiveGasPrice": "0xf4342", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x12a98709bb5d0641d61458f85dcafbe17ac2d05c", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x14975766f3", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x3574084d11d64", - "l1GasPrice": "0x7894efed", - "l1GasUsed": "0x2e1cc" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x1bd4b0", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x78146adcc717333a2b38865e840ecf2b984dfb8a7f22f8d16764c52b7416a446", - "transactionIndex": "0x7", - "blockHash": "0x4a52916e5dddeeb7c82bcfc769bea4ad18e3a8eb6e3ba7fdd532ba2e6dbc4f0f", - "blockNumber": "0xa3a9d2", - "gasUsed": "0x13f624", - "effectiveGasPrice": "0xf4343", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xb2b34025a07af3925313b6b46f8046ee8ffba30b", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x14975766f3", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0xbbb5920a779f", - "l1GasPrice": "0x827ed4e0", - "l1GasUsed": "0xa1eb" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xe0f39", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x0a50102128ad120a0d1b87e3aee576bf0de2133f1d7c2bf548bcb6a301103945", - "transactionIndex": "0x3", - "blockHash": "0xb54f649124f1126a637d156c0aa3b40f466d40600dd185da0b21d781277b509c", - "blockNumber": "0xa3a9d7", - "gasUsed": "0xc6ce1", - "effectiveGasPrice": "0xf4343", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x792d13207744f132943cdde4d37ec89f20ae3b0d", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x14975766f3", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x6f76cdc0f390", - "l1GasPrice": "0x827ed4e0", - "l1GasUsed": "0x6026" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x2503e9", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xc86ecedaedffade8c5d352f87c5204ff9763f1254f0c609ff7eaae88021a6eb1", - "transactionIndex": "0x3", - "blockHash": "0x0cf117ff0c8a0c28944040ba5bd95f033ae6b6400116fc01f2086f8cacb95559", - "blockNumber": "0xa3a9dc", - "gasUsed": "0x238f74", - "effectiveGasPrice": "0xf4343", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x14975766f3", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x1af79c47a9854", - "l1GasPrice": "0x827ed4e0", - "l1GasUsed": "0x17431" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x523902", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x28fd60fdb37a0e822cc70d2b4835d3e3146830a364d6cb9f4eea48cab2c3ff41", - "transactionIndex": "0x1", - "blockHash": "0xc0f2c1ca43db76f91e222decc6bf557966eb5e0fe9e1ef5124239547b3238139", - "blockNumber": "0xa3a9e2", - "gasUsed": "0x518d6c", - "effectiveGasPrice": "0xf4343", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0xcf21367b17d22a2e2a03904ca79a5045b18231ef", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x1309423560", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x2b6efc785a447", - "l1GasPrice": "0x7f074395", - "l1GasUsed": "0x28865" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x15616f", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xa351d11889e366fa8246704cb0f1dba494aa4a8396d49229c2ba588f9123bb51", - "transactionIndex": "0x4", - "blockHash": "0x2e123f707d5d792893a70c8622ae5b7db51f7e6b04605313f15f8d1c67c49ea5", - "blockNumber": "0xa3a9e7", - "gasUsed": "0x117dc7", - "effectiveGasPrice": "0xf4344", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": null, - "contractAddress": "0xdfbe641684882769918f0a8da4c4c876a75c5ab1", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x1309423560", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0xbf063fad8c85", - "l1GasPrice": "0x7f074395", - "l1GasUsed": "0xb23b" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x418d36", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x0c1eb8a3d340b717b178201453170a611ddae1c348a84115bac3148bec5a83f2", - "transactionIndex": "0x1", - "blockHash": "0x87b063e394ff156b5ba62e26c716a6328bc77fa356140a77e536cab43f94f322", - "blockNumber": "0xa3a9ed", - "gasUsed": "0x40e1a0", - "effectiveGasPrice": "0xf4344", - "from": "0x07d68837a1940cf2749ff0b3e6abed23ac6f9a04", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd", + "contractAddress": null, "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x10ebc90eff", + "l1BlobBaseFee": "0x1", "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x21c2f328358ec", - "l1GasPrice": "0x7f42b454", - "l1GasUsed": "0x236f1" + "l1Fee": "0x7c7d", + "l1GasPrice": "0x88", + "l1GasUsed": "0x17b40" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1737578658, + "timestamp": 1747773832, "chain": 1301, - "commit": "77d52a7" + "commit": "5addf85" } \ No newline at end of file diff --git a/deployments/11155111.md b/deployments/11155111.md index ea716e1c..7b9f74d0 100644 --- a/deployments/11155111.md +++ b/deployments/11155111.md @@ -1,4 +1,4 @@ -# contracts +# ### Table of Contents @@ -15,8 +15,10 @@ - [Uniswap Interface Multicall](#uniswap-interface-multicall) - [Uniswap V3 Factory](#uniswap-v3-factory) - [Permit2](#permit2) + - [U E R C20 Factory](#u-e-r-c20-factory) - [Deployment History](#deployment-history) - - [Tue Oct 22 2024](#tue-oct-22-2024) + - [Tue May 20 2025](#tue-may-20-2025) + - [Mon Oct 21 2024](#mon-oct-21-2024) - [Tue May 23 2023](#tue-may-23-2023) - [Sat May 20 2023](#sat-may-20-2023) - [Fri May 19 2023](#fri-may-19-2023) @@ -82,20 +84,25 @@ Permit2 0x000000000022D473030F116dDEE9F6B43aC78BA3 N/A + + + UERC20Factory + 0x58b3578be439f47e393503518b5c50fb6339237f + N/A ## Contracts ### Uniswap V2 Router02 - + Address: [0xeE567Fe1712Faf6149d80dA1E6934E354124CfE3](https://sepolia.etherscan.io/address/0xeE567Fe1712Faf6149d80dA1E6934E354124CfE3) - + Deployment Transaction: [0x92674b51681d2e99e71e03bd387bc0f0e79f2412302b49ed5626d1fa2311bab9](https://sepolia.etherscan.io/tx/0x92674b51681d2e99e71e03bd387bc0f0e79f2412302b49ed5626d1fa2311bab9) - - - + + + Mon, 21 Oct 2024 22:00:12 UTC @@ -103,15 +110,15 @@ Mon, 21 Oct 2024 22:00:12 UTC --- ### Universal Router - + Address: [0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD](https://sepolia.etherscan.io/address/0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD) - + Deployment Transaction: [0xa3fd4cd5c0acb5b28e03cd56d79bb64b4c5b6288775bee424d4f4cd1cce83a8a](https://sepolia.etherscan.io/tx/0xa3fd4cd5c0acb5b28e03cd56d79bb64b4c5b6288775bee424d4f4cd1cce83a8a) - - - + + + Tue, 23 May 2023 13:19:48 UTC @@ -119,15 +126,15 @@ Tue, 23 May 2023 13:19:48 UTC --- ### Uniswap V2 Factory - + Address: [0xB7f907f7A9eBC822a80BD25E224be42Ce0A698A0](https://sepolia.etherscan.io/address/0xB7f907f7A9eBC822a80BD25E224be42Ce0A698A0) - + Deployment Transaction: [0xa1df492f64391739f9d488cbab7c9aded7187d9804b50cbb45486f9e16c63321](https://sepolia.etherscan.io/tx/0xa1df492f64391739f9d488cbab7c9aded7187d9804b50cbb45486f9e16c63321) - - - + + + Sat, 20 May 2023 17:26:12 UTC @@ -135,15 +142,15 @@ Sat, 20 May 2023 17:26:12 UTC --- ### Swap Router02 - + Address: [0x3bFA4769FB09eefC5a80d6E87c3B9C650f7Ae48E](https://sepolia.etherscan.io/address/0x3bFA4769FB09eefC5a80d6E87c3B9C650f7Ae48E) - + Deployment Transaction: [0x472b2240da580baa6b693bbdb8c8dea560d9fc8366d1c2f3b3e4cac33ca4ff02](https://sepolia.etherscan.io/tx/0x472b2240da580baa6b693bbdb8c8dea560d9fc8366d1c2f3b3e4cac33ca4ff02) - - - + + + Fri, 19 May 2023 16:59:36 UTC @@ -151,15 +158,15 @@ Fri, 19 May 2023 16:59:36 UTC --- ### Quoter V2 - + Address: [0xEd1f6473345F45b75F8179591dd5bA1888cf2FB3](https://sepolia.etherscan.io/address/0xEd1f6473345F45b75F8179591dd5bA1888cf2FB3) - + Deployment Transaction: [0x75b32b082670e633dc92969d8fb0da99d7753e73ce19d0502898cd4dddbabada](https://sepolia.etherscan.io/tx/0x75b32b082670e633dc92969d8fb0da99d7753e73ce19d0502898cd4dddbabada) - - - + + + Fri, 19 May 2023 16:59:00 UTC @@ -167,15 +174,15 @@ Fri, 19 May 2023 16:59:00 UTC --- ### Nonfungible Position Manager - + Address: [0x1238536071E1c677A632429e3655c799b22cDA52](https://sepolia.etherscan.io/address/0x1238536071E1c677A632429e3655c799b22cDA52) - + Deployment Transaction: [0xe625b82d7b492160a58009ee5e2154135b4fa6449ed87e54dc8c4c8d21684ec0](https://sepolia.etherscan.io/tx/0xe625b82d7b492160a58009ee5e2154135b4fa6449ed87e54dc8c4c8d21684ec0) - - - + + + Fri, 19 May 2023 16:57:12 UTC @@ -183,15 +190,15 @@ Fri, 19 May 2023 16:57:12 UTC --- ### Nonfungible Token Position Descriptor - + Address: [0x5bE4DAa6982C69aD20A57F1e68cBcA3D37de6207](https://sepolia.etherscan.io/address/0x5bE4DAa6982C69aD20A57F1e68cBcA3D37de6207) - + Deployment Transaction: [0xe79a9ba2329954a4a0b84b10153ac40b05653f5ac59d85fd33dad001824b130c](https://sepolia.etherscan.io/tx/0xe79a9ba2329954a4a0b84b10153ac40b05653f5ac59d85fd33dad001824b130c) - - - + + + Fri, 19 May 2023 16:56:24 UTC @@ -199,15 +206,15 @@ Fri, 19 May 2023 16:56:24 UTC --- ### N F T Descriptor - + Address: [0x3B5E3c5E595D85fbFBC2a42ECC091e183E76697C](https://sepolia.etherscan.io/address/0x3B5E3c5E595D85fbFBC2a42ECC091e183E76697C) - + Deployment Transaction: [0xc733d5c1fe5b667347628f92ffaaa18abebdd941435ed0a5471666366e4744a7](https://sepolia.etherscan.io/tx/0xc733d5c1fe5b667347628f92ffaaa18abebdd941435ed0a5471666366e4744a7) - - - + + + Fri, 19 May 2023 16:56:00 UTC @@ -215,15 +222,15 @@ Fri, 19 May 2023 16:56:00 UTC --- ### Uniswap Interface Multicall - + Address: [0xD7F33bCdb21b359c8ee6F0251d30E94832baAd07](https://sepolia.etherscan.io/address/0xD7F33bCdb21b359c8ee6F0251d30E94832baAd07) - + Deployment Transaction: [0xea785c3e599c9224472a941f0748da4942f56d79f915e673d98e75c8c324e3d4](https://sepolia.etherscan.io/tx/0xea785c3e599c9224472a941f0748da4942f56d79f915e673d98e75c8c324e3d4) - - - + + + Fri, 19 May 2023 16:54:48 UTC @@ -231,15 +238,15 @@ Fri, 19 May 2023 16:54:48 UTC --- ### Uniswap V3 Factory - + Address: [0x0227628f3F023bb0B980b67D528571c95c6DaC1c](https://sepolia.etherscan.io/address/0x0227628f3F023bb0B980b67D528571c95c6DaC1c) - + Deployment Transaction: [0xed1f65d809a0989338e2e1fc0b8e3208541e48987b9ca0debcf0b37a34e9abe5](https://sepolia.etherscan.io/tx/0xed1f65d809a0989338e2e1fc0b8e3208541e48987b9ca0debcf0b37a34e9abe5) - - - + + + Fri, 19 May 2023 16:53:48 UTC @@ -247,28 +254,63 @@ Fri, 19 May 2023 16:53:48 UTC --- ### Permit2 - + Address: [0x000000000022D473030F116dDEE9F6B43aC78BA3](https://sepolia.etherscan.io/address/0x000000000022D473030F116dDEE9F6B43aC78BA3) - + Deployment Transaction: [0x363df5deeead44d8fd38425f3986e3e81946a6c59d8b68fe33926cc700713173](https://sepolia.etherscan.io/tx/0x363df5deeead44d8fd38425f3986e3e81946a6c59d8b68fe33926cc700713173) - - - + + + Fri, 25 Nov 2022 14:19:48 UTC +--- + +### U E R C20 Factory + +Address: [0x58b3578be439f47e393503518b5c50fb6339237f](https://sepolia.etherscan.io/address/0x58b3578be439f47e393503518b5c50fb6339237f) + +Deployment Transaction: [0xe62cda122ca2adcf828362a33347dd80c850e79603dd17b933c83b2fb85c5650](https://sepolia.etherscan.io/tx/0xe62cda122ca2adcf828362a33347dd80c850e79603dd17b933c83b2fb85c5650) + + + +Commit Hash: [5addf85](git@github.com:Uniswap/contracts/commit/5addf85) + +Tue, 20 May 2025 20:48:25 UTC + + + ## Deployment History - -### Tue Oct 22 2024 + +### Tue May 20 2025 + + +Deployed contracts: + +
+ + U E R C20 Factory + + + + + +
Commit hash: 5addf85
+
+ + +### Mon Oct 21 2024 + + Deployed contracts: - +
Uniswap V2 Router02 @@ -288,16 +330,16 @@ Deployed contracts: 0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14 -
+ ### Tue May 23 2023 + - - + Deployed contracts: - +
Universal Router @@ -313,16 +355,16 @@ Deployed contracts: {"permit2":"0x000000000022D473030F116dDEE9F6B43aC78BA3","weth9":"0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14","seaportV1_5":"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC","seaportV1_4":"0x00000000000001ad428e4906aE43D8F9852d0dD6","openseaConduit":"0x1E0049783F008A0085193E00003D00cd54003c71","nftxZap":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","x2y2":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","foundation":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","sudoswap":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","elementMarket":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","nft20Zap":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","cryptopunks":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","looksRareV2":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","routerRewardsDistributor":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","looksRareRewardsDistributor":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","looksRareToken":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","v2Factory":"0x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B","v3Factory":"0x0227628f3F023bb0B980b67D528571c95c6DaC1c","pairInitCodeHash":"0x0000000000000000000000000000000000000000000000000000000000000000","poolInitCodeHash":"0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54"} -
+ ### Sat May 20 2023 + - - + Deployed contracts: - +
Uniswap V2 Factory @@ -338,16 +380,16 @@ Deployed contracts: 0x3344BBDCeb8f6fb52de759c127E4A44EFb40432A -
+ ### Fri May 19 2023 + - - + Deployed contracts: - +
Swap Router02 @@ -463,16 +505,16 @@ Deployed contracts:
-
+ ### Fri Nov 25 2022 + - - + Deployed contracts: - +
Permit2 @@ -480,5 +522,5 @@ Deployed contracts:
-
+ \ No newline at end of file diff --git a/deployments/1301.md b/deployments/1301.md index 39640c90..da3229a8 100644 --- a/deployments/1301.md +++ b/deployments/1301.md @@ -1,4 +1,4 @@ -# contracts +# ### Table of Contents @@ -23,7 +23,9 @@ - [Swap Router02](#swap-router02) - [Fee On Transfer Detector](#fee-on-transfer-detector) - [Universal Router](#universal-router) + - [U E R C20 Superchain Factory](#u-e-r-c20-superchain-factory) - [Deployment History](#deployment-history) + - [Tue May 20 2025](#tue-may-20-2025) - [Wed Jan 22 2025](#wed-jan-22-2025) ## Summary @@ -34,112 +36,117 @@ Version UniswapV2Factory - 0x216d3b49e8c5140d2499da346ab5335a75f655d8 + 0x216d3b49e8c5140d2499da346ab5335a75f655d8 N/A UniswapV2Router02 - 0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed + 0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed N/A UniswapV3Factory - 0x780e96775371e1c4f4cd1524a578b8f1b12ece58 + 0x780e96775371e1c4f4cd1524a578b8f1b12ece58 N/A UniswapInterfaceMulticall - 0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9 + 0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9 N/A QuoterV2 - 0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c + 0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c N/A TickLens - 0xa2705406f5f6deeff977edc4eb52617e06b9e7ff + 0xa2705406f5f6deeff977edc4eb52617e06b9e7ff N/A NFTDescriptor - 0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed + 0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed N/A NonfungiblePositionManager - 0x4801ed4f1b57559f9071413d9d99b607316fd1eb + 0x4801ed4f1b57559f9071413d9d99b607316fd1eb N/A V3Migrator - 0x9171c97d7b17278e5fce1996cd5dda682bddaf43 + 0x9171c97d7b17278e5fce1996cd5dda682bddaf43 N/A SwapRouter - 0xbeeabec0220a09048dbe86790b59510a2e1ff5d2 + 0xbeeabec0220a09048dbe86790b59510a2e1ff5d2 N/A PoolManager - 0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95 + 0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95 N/A PositionDescriptor - 0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f + 0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f N/A PositionManager - 0x12a98709bb5d0641d61458f85dcafbe17ac2d05c + 0x12a98709bb5d0641d61458f85dcafbe17ac2d05c N/A V4Quoter - 0xb2b34025a07af3925313b6b46f8046ee8ffba30b + 0xb2b34025a07af3925313b6b46f8046ee8ffba30b N/A StateView - 0x792d13207744f132943cdde4d37ec89f20ae3b0d + 0x792d13207744f132943cdde4d37ec89f20ae3b0d N/A Quoter - 0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034 + 0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034 N/A SwapRouter02 - 0xcf21367b17d22a2e2a03904ca79a5045b18231ef + 0xcf21367b17d22a2e2a03904ca79a5045b18231ef N/A FeeOnTransferDetector - 0xdfbe641684882769918f0a8da4c4c876a75c5ab1 + 0xdfbe641684882769918f0a8da4c4c876a75c5ab1 N/A UniversalRouter - 0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd + 0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd + N/A + + + UERC20SuperchainFactory + 0x43414b3556b6dfbb1278670871b11c73c22c93f3 N/A ## Contracts ### Uniswap V2 Factory - -Address: [0x216d3b49e8c5140d2499da346ab5335a75f655d8](https://unichain-sepolia.blockscout.com/address/0x216d3b49e8c5140d2499da346ab5335a75f655d8) - -Deployment Transaction: [0xf5f1e527c5ecd1701a79367f003162686402f0e05b0667a99d733ec184740118](https://unichain-sepolia.blockscout.com/tx/0xf5f1e527c5ecd1701a79367f003162686402f0e05b0667a99d733ec184740118) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0x216d3b49e8c5140d2499da346ab5335a75f655d8 + +Deployment Transaction: 0xf5f1e527c5ecd1701a79367f003162686402f0e05b0667a99d733ec184740118 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -147,15 +154,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Uniswap V2 Router02 - -Address: [0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed](https://unichain-sepolia.blockscout.com/address/0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed) - -Deployment Transaction: [0x41283e07dd1b8bdf71e42dbeddb46ae5c99f527a025b6a532e5fc11d6b37713a](https://unichain-sepolia.blockscout.com/tx/0x41283e07dd1b8bdf71e42dbeddb46ae5c99f527a025b6a532e5fc11d6b37713a) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed + +Deployment Transaction: 0x41283e07dd1b8bdf71e42dbeddb46ae5c99f527a025b6a532e5fc11d6b37713a + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -163,15 +170,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Uniswap V3 Factory - -Address: [0x780e96775371e1c4f4cd1524a578b8f1b12ece58](https://unichain-sepolia.blockscout.com/address/0x780e96775371e1c4f4cd1524a578b8f1b12ece58) - -Deployment Transaction: [0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083](https://unichain-sepolia.blockscout.com/tx/0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0x780e96775371e1c4f4cd1524a578b8f1b12ece58 + +Deployment Transaction: 0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -179,15 +186,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Uniswap Interface Multicall - -Address: [0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9](https://unichain-sepolia.blockscout.com/address/0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9) - -Deployment Transaction: [0xdbba5f58a37aef8302e125c1efd65e1b9df6af1c595709d52a946fc5273b299a](https://unichain-sepolia.blockscout.com/tx/0xdbba5f58a37aef8302e125c1efd65e1b9df6af1c595709d52a946fc5273b299a) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9 + +Deployment Transaction: 0xdbba5f58a37aef8302e125c1efd65e1b9df6af1c595709d52a946fc5273b299a + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -195,15 +202,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Quoter V2 - -Address: [0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c](https://unichain-sepolia.blockscout.com/address/0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c) - -Deployment Transaction: [0x42feb903896a21a0a834bc7c93d8ce84536d215d20700bf251e3945d2f9c18cc](https://unichain-sepolia.blockscout.com/tx/0x42feb903896a21a0a834bc7c93d8ce84536d215d20700bf251e3945d2f9c18cc) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c + +Deployment Transaction: 0x42feb903896a21a0a834bc7c93d8ce84536d215d20700bf251e3945d2f9c18cc + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -211,15 +218,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Tick Lens - -Address: [0xa2705406f5f6deeff977edc4eb52617e06b9e7ff](https://unichain-sepolia.blockscout.com/address/0xa2705406f5f6deeff977edc4eb52617e06b9e7ff) - -Deployment Transaction: [0x292818c36fae4db0af323455839cc579f71ffd348a9ecfe5ce00a68cc5bdf6fe](https://unichain-sepolia.blockscout.com/tx/0x292818c36fae4db0af323455839cc579f71ffd348a9ecfe5ce00a68cc5bdf6fe) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0xa2705406f5f6deeff977edc4eb52617e06b9e7ff + +Deployment Transaction: 0x292818c36fae4db0af323455839cc579f71ffd348a9ecfe5ce00a68cc5bdf6fe + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -227,15 +234,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### N F T Descriptor - -Address: [0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed](https://unichain-sepolia.blockscout.com/address/0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed) - -Deployment Transaction: [0x4c6469b634c0bf639d5378f34b3921036ebfc8325b2f7ea72035b989baa645c4](https://unichain-sepolia.blockscout.com/tx/0x4c6469b634c0bf639d5378f34b3921036ebfc8325b2f7ea72035b989baa645c4) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed + +Deployment Transaction: 0x4c6469b634c0bf639d5378f34b3921036ebfc8325b2f7ea72035b989baa645c4 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -243,15 +250,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Nonfungible Position Manager - -Address: [0x4801ed4f1b57559f9071413d9d99b607316fd1eb](https://unichain-sepolia.blockscout.com/address/0x4801ed4f1b57559f9071413d9d99b607316fd1eb) - -Deployment Transaction: [0x1e18ec55902dcaac896d262b31ccf5658967e02f723034a9547bd1cbdd9e9546](https://unichain-sepolia.blockscout.com/tx/0x1e18ec55902dcaac896d262b31ccf5658967e02f723034a9547bd1cbdd9e9546) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0x4801ed4f1b57559f9071413d9d99b607316fd1eb + +Deployment Transaction: 0x1e18ec55902dcaac896d262b31ccf5658967e02f723034a9547bd1cbdd9e9546 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -259,15 +266,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### V3 Migrator - -Address: [0x9171c97d7b17278e5fce1996cd5dda682bddaf43](https://unichain-sepolia.blockscout.com/address/0x9171c97d7b17278e5fce1996cd5dda682bddaf43) - -Deployment Transaction: [0x4602ffd6b2503ef1d402059c90840b6180f82c63e621ad84783d2dcfbb4b570f](https://unichain-sepolia.blockscout.com/tx/0x4602ffd6b2503ef1d402059c90840b6180f82c63e621ad84783d2dcfbb4b570f) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0x9171c97d7b17278e5fce1996cd5dda682bddaf43 + +Deployment Transaction: 0x4602ffd6b2503ef1d402059c90840b6180f82c63e621ad84783d2dcfbb4b570f + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -275,15 +282,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Swap Router - -Address: [0xbeeabec0220a09048dbe86790b59510a2e1ff5d2](https://unichain-sepolia.blockscout.com/address/0xbeeabec0220a09048dbe86790b59510a2e1ff5d2) - -Deployment Transaction: [0x7c1be94d3a1c61ed3cdd80b420b88cab0913daff6385b12971d068735530cb91](https://unichain-sepolia.blockscout.com/tx/0x7c1be94d3a1c61ed3cdd80b420b88cab0913daff6385b12971d068735530cb91) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0xbeeabec0220a09048dbe86790b59510a2e1ff5d2 + +Deployment Transaction: 0x7c1be94d3a1c61ed3cdd80b420b88cab0913daff6385b12971d068735530cb91 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -291,15 +298,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Pool Manager - -Address: [0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95](https://unichain-sepolia.blockscout.com/address/0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95) - -Deployment Transaction: [0x80dc9fcf2bf641b132aa848faf58fa1b2ae325bbe52ce49b2b339d8eaf35f392](https://unichain-sepolia.blockscout.com/tx/0x80dc9fcf2bf641b132aa848faf58fa1b2ae325bbe52ce49b2b339d8eaf35f392) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95 + +Deployment Transaction: 0x80dc9fcf2bf641b132aa848faf58fa1b2ae325bbe52ce49b2b339d8eaf35f392 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -307,15 +314,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Position Descriptor - -Address: [0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f](https://unichain-sepolia.blockscout.com/address/0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f) - -Deployment Transaction: [0x8e2dea22951b012a77ebd82b3dac1c95db7f1686ebf3c13bd68fe08448bd7bb8](https://unichain-sepolia.blockscout.com/tx/0x8e2dea22951b012a77ebd82b3dac1c95db7f1686ebf3c13bd68fe08448bd7bb8) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f + +Deployment Transaction: 0x8e2dea22951b012a77ebd82b3dac1c95db7f1686ebf3c13bd68fe08448bd7bb8 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -328,7 +335,7 @@ Proxy Type: TransparentUpgradeableProxy -Implementation: [0x06e356052ae91916fc95a1e65544d0ed60a49632](https://unichain-sepolia.blockscout.com/address/0x06e356052ae91916fc95a1e65544d0ed60a49632) +Implementation: 0x06e356052ae91916fc95a1e65544d0ed60a49632 @@ -342,8 +349,8 @@ Implementation: [0x06e356052ae91916fc95a1e65544d0ed60a49632](https://unichain-se N/A - 0x06e356052ae91916fc95a1e65544d0ed60a49632 - 77d52a7 + 0x06e356052ae91916fc95a1e65544d0ed60a49632 + 77d52a7 @@ -352,15 +359,15 @@ Implementation: [0x06e356052ae91916fc95a1e65544d0ed60a49632](https://unichain-se --- ### Position Manager - -Address: [0x12a98709bb5d0641d61458f85dcafbe17ac2d05c](https://unichain-sepolia.blockscout.com/address/0x12a98709bb5d0641d61458f85dcafbe17ac2d05c) - -Deployment Transaction: [0x12e8bb585f23cc0eccf248918c93f2c4acc771f993db4c0a850c744dad5509fa](https://unichain-sepolia.blockscout.com/tx/0x12e8bb585f23cc0eccf248918c93f2c4acc771f993db4c0a850c744dad5509fa) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0x12a98709bb5d0641d61458f85dcafbe17ac2d05c + +Deployment Transaction: 0x12e8bb585f23cc0eccf248918c93f2c4acc771f993db4c0a850c744dad5509fa + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -368,15 +375,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### V4 Quoter - -Address: [0xb2b34025a07af3925313b6b46f8046ee8ffba30b](https://unichain-sepolia.blockscout.com/address/0xb2b34025a07af3925313b6b46f8046ee8ffba30b) - -Deployment Transaction: [0x78146adcc717333a2b38865e840ecf2b984dfb8a7f22f8d16764c52b7416a446](https://unichain-sepolia.blockscout.com/tx/0x78146adcc717333a2b38865e840ecf2b984dfb8a7f22f8d16764c52b7416a446) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0xb2b34025a07af3925313b6b46f8046ee8ffba30b + +Deployment Transaction: 0x78146adcc717333a2b38865e840ecf2b984dfb8a7f22f8d16764c52b7416a446 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -384,15 +391,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### State View - -Address: [0x792d13207744f132943cdde4d37ec89f20ae3b0d](https://unichain-sepolia.blockscout.com/address/0x792d13207744f132943cdde4d37ec89f20ae3b0d) - -Deployment Transaction: [0x0a50102128ad120a0d1b87e3aee576bf0de2133f1d7c2bf548bcb6a301103945](https://unichain-sepolia.blockscout.com/tx/0x0a50102128ad120a0d1b87e3aee576bf0de2133f1d7c2bf548bcb6a301103945) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0x792d13207744f132943cdde4d37ec89f20ae3b0d + +Deployment Transaction: 0x0a50102128ad120a0d1b87e3aee576bf0de2133f1d7c2bf548bcb6a301103945 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -400,15 +407,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Quoter - -Address: [0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034](https://unichain-sepolia.blockscout.com/address/0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034) - -Deployment Transaction: [0xc86ecedaedffade8c5d352f87c5204ff9763f1254f0c609ff7eaae88021a6eb1](https://unichain-sepolia.blockscout.com/tx/0xc86ecedaedffade8c5d352f87c5204ff9763f1254f0c609ff7eaae88021a6eb1) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034 + +Deployment Transaction: 0xc86ecedaedffade8c5d352f87c5204ff9763f1254f0c609ff7eaae88021a6eb1 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -416,15 +423,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Swap Router02 - -Address: [0xcf21367b17d22a2e2a03904ca79a5045b18231ef](https://unichain-sepolia.blockscout.com/address/0xcf21367b17d22a2e2a03904ca79a5045b18231ef) - -Deployment Transaction: [0x28fd60fdb37a0e822cc70d2b4835d3e3146830a364d6cb9f4eea48cab2c3ff41](https://unichain-sepolia.blockscout.com/tx/0x28fd60fdb37a0e822cc70d2b4835d3e3146830a364d6cb9f4eea48cab2c3ff41) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0xcf21367b17d22a2e2a03904ca79a5045b18231ef + +Deployment Transaction: 0x28fd60fdb37a0e822cc70d2b4835d3e3146830a364d6cb9f4eea48cab2c3ff41 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -432,15 +439,15 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Fee On Transfer Detector - -Address: [0xdfbe641684882769918f0a8da4c4c876a75c5ab1](https://unichain-sepolia.blockscout.com/address/0xdfbe641684882769918f0a8da4c4c876a75c5ab1) - -Deployment Transaction: [0xa351d11889e366fa8246704cb0f1dba494aa4a8396d49229c2ba588f9123bb51](https://unichain-sepolia.blockscout.com/tx/0xa351d11889e366fa8246704cb0f1dba494aa4a8396d49229c2ba588f9123bb51) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0xdfbe641684882769918f0a8da4c4c876a75c5ab1 + +Deployment Transaction: 0xa351d11889e366fa8246704cb0f1dba494aa4a8396d49229c2ba588f9123bb51 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC @@ -448,35 +455,70 @@ Wed, 22 Jan 2025 20:44:18 UTC --- ### Universal Router - -Address: [0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd](https://unichain-sepolia.blockscout.com/address/0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd) - -Deployment Transaction: [0x0c1eb8a3d340b717b178201453170a611ddae1c348a84115bac3148bec5a83f2](https://unichain-sepolia.blockscout.com/tx/0x0c1eb8a3d340b717b178201453170a611ddae1c348a84115bac3148bec5a83f2) - - -Commit Hash: [77d52a7](https://github.com/Uniswap/contracts/commit/77d52a7) - +Address: 0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd + +Deployment Transaction: 0x0c1eb8a3d340b717b178201453170a611ddae1c348a84115bac3148bec5a83f2 + + + +Commit Hash: [77d52a7](git@github.com:Uniswap/contracts/commit/77d52a7) + Wed, 22 Jan 2025 20:44:18 UTC +--- + +### U E R C20 Superchain Factory + +Address: 0x43414b3556b6dfbb1278670871b11c73c22c93f3 + +Deployment Transaction: 0x170028b613a6daf839e60de54b8dcc7e230909a6eed67d3e444324ec063c3d6a + + + +Commit Hash: [5addf85](git@github.com:Uniswap/contracts/commit/5addf85) + +Tue, 20 May 2025 20:43:52 UTC + + + ## Deployment History - -### Wed Jan 22 2025 + +### Tue May 20 2025 + + +Deployed contracts: + +
+ + U E R C20 Superchain Factory + + + + + +
Commit hash: 5addf85
+
+ + +### Wed Jan 22 2025 + + Deployed contracts: - +
- Uniswap V2 Factory + Uniswap V2 Factory - + @@ -484,17 +526,17 @@ Deployed contracts: - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_feeToSetter0x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A040x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A04
- Uniswap V2 Router02 + Uniswap V2 Router02 - + @@ -502,41 +544,41 @@ Deployed contracts: - + - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_factory0x216d3b49e8c5140D2499dA346AB5335A75f655d80x216d3b49e8c5140D2499dA346AB5335A75f655d8
_WETH0x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- Uniswap V3 Factory + Uniswap V3 Factory - +
Commit hash: 77d52a7Commit hash: 77d52a7
- Uniswap Interface Multicall + Uniswap Interface Multicall - +
Commit hash: 77d52a7Commit hash: 77d52a7
- Quoter V2 + Quoter V2 - + @@ -544,41 +586,41 @@ Deployed contracts: - + - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_factory0x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- Tick Lens + Tick Lens - +
Commit hash: 77d52a7Commit hash: 77d52a7
- N F T Descriptor + N F T Descriptor - +
Commit hash: 77d52a7Commit hash: 77d52a7
- Nonfungible Position Manager + Nonfungible Position Manager - + @@ -586,25 +628,25 @@ Deployed contracts: - + - + - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_factory0x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
_tokenDescriptor_0x1872C8F792BB8321f9eF2F531e98e53572d3f2930x1872C8F792BB8321f9eF2F531e98e53572d3f293
- V3 Migrator + V3 Migrator - + @@ -612,25 +654,25 @@ Deployed contracts: - + - + - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_factory0x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
_nonfungiblePositionManager0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb
- Swap Router + Swap Router - + @@ -638,21 +680,21 @@ Deployed contracts: - + - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_factory0x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- Pool Manager + Pool Manager - + @@ -660,17 +702,17 @@ Deployed contracts: - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
initialOwner0x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A040x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A04
- Position Descriptor (Implementation) + Position Descriptor (Implementation) - + @@ -678,25 +720,25 @@ Deployed contracts: - + - + - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_poolManager0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C950x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95
_wrappedNative0x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
_nativeCurrencyLabelBytes0x45544800000000000000000000000000000000000000000000000000000000000x4554480000000000000000000000000000000000000000000000000000000000
- Position Manager + Position Manager - + @@ -704,11 +746,11 @@ Deployed contracts: - + - + @@ -716,21 +758,21 @@ Deployed contracts: - + - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_poolManager0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C950x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95
_permit20x000000000022D473030F116dDEE9F6B43aC78BA30x000000000022D473030F116dDEE9F6B43aC78BA3
_unsubscribeGasLimit
_tokenDescriptor0xC4Fe8f6cC445fB3F8921cEe75830F248a1D1da2F0xC4Fe8f6cC445fB3F8921cEe75830F248a1D1da2F
_weth90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- V4 Quoter + V4 Quoter - + @@ -738,17 +780,17 @@ Deployed contracts: - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_poolManager0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C950x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95
- State View + State View - + @@ -756,17 +798,17 @@ Deployed contracts: - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_poolManager0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C950x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95
- Quoter + Quoter - + @@ -774,17 +816,17 @@ Deployed contracts: - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_factory0x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
- Swap Router02 + Swap Router02 - + @@ -792,29 +834,29 @@ Deployed contracts: - + - + - + - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_factoryV20x216d3b49e8c5140D2499dA346AB5335A75f655d80x216d3b49e8c5140D2499dA346AB5335A75f655d8
factoryV30x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
_positionManager0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- Fee On Transfer Detector + Fee On Transfer Detector - + @@ -822,17 +864,17 @@ Deployed contracts: - +
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter
_factoryV20x216d3b49e8c5140D2499dA346AB5335A75f655d80x216d3b49e8c5140D2499dA346AB5335A75f655d8
- Universal Router + Universal Router - + @@ -843,5 +885,5 @@ Deployed contracts:
Commit hash: 77d52a7Commit hash: 77d52a7
Parameter{"permit2":"0x000000000022D473030F116dDEE9F6B43aC78BA3","weth9":"0x4200000000000000000000000000000000000006","v2Factory":"0x216d3b49e8c5140D2499dA346AB5335A75f655d8","v3Factory":"0x780E96775371e1C4F4cD1524a578B8f1b12ECE58","pairInitCodeHash":"0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f","poolInitCodeHash":"0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54","v4PoolManager":"0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95","v3NFTPositionManager":"0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb","v4PositionManager":"0x12A98709BB5D0641D61458f85dcAFbE17AC2d05"}
-
+ \ No newline at end of file diff --git a/deployments/index.md b/deployments/index.md index ef6d215a..f9626d4a 100644 --- a/deployments/index.md +++ b/deployments/index.md @@ -12,6 +12,7 @@ This repository contains deployment information for the following networks: | 137 | Polygon Mainnet | [View Deployment](./137.md) | | 480 | World Chain | [View Deployment](./480.md) | | 1301 | Unichain Sepolia Testnet | [View Deployment](./1301.md) | +| 1337 | Geth Testnet | [View Deployment](./1337.md) | | 1868 | Soneium | [View Deployment](./1868.md) | | 8453 | Base | [View Deployment](./8453.md) | | 10143 | Monad Testnet | [View Deployment](./10143.md) | @@ -20,6 +21,5 @@ This repository contains deployment information for the following networks: | 43114 | Avalanche C-Chain | [View Deployment](./43114.md) | | 57073 | Ink | [View Deployment](./57073.md) | | 81457 | Blast | [View Deployment](./81457.md) | -| 129412 | Chain 129412 | [View Deployment](./129412.md) | | 7777777 | Zora | [View Deployment](./7777777.md) | | 11155111 | Sepolia | [View Deployment](./11155111.md) | diff --git a/deployments/json/11155111.json b/deployments/json/11155111.json index 8a0182aa..009923ba 100644 --- a/deployments/json/11155111.json +++ b/deployments/json/11155111.json @@ -66,9 +66,30 @@ "proxy": false, "deploymentTxn": "0x363df5deeead44d8fd38425f3986e3e81946a6c59d8b68fe33926cc700713173", "timestamp": 1669385988 + }, + "UERC20Factory": { + "address": "0x58b3578be439f47e393503518b5c50fb6339237f", + "proxy": false, + "deploymentTxn": "0xe62cda122ca2adcf828362a33347dd80c850e79603dd17b933c83b2fb85c5650", + "timestamp": 1747774105, + "commitHash": "5addf85" } }, "history": [ + { + "contracts": { + "UERC20Factory": { + "address": "0x58b3578be439f47e393503518b5c50fb6339237f", + "proxy": false, + "deploymentTxn": "0xe62cda122ca2adcf828362a33347dd80c850e79603dd17b933c83b2fb85c5650", + "input": { + "constructor": {} + } + } + }, + "timestamp": 1747774105, + "commitHash": "5addf85" + }, { "contracts": { "UniswapV2Router02": { diff --git a/deployments/json/1301.json b/deployments/json/1301.json index 31b9d04b..73c47d2a 100644 --- a/deployments/json/1301.json +++ b/deployments/json/1301.json @@ -135,9 +135,30 @@ "deploymentTxn": "0x0c1eb8a3d340b717b178201453170a611ddae1c348a84115bac3148bec5a83f2", "timestamp": 1737578658, "commitHash": "77d52a7" + }, + "UERC20SuperchainFactory": { + "address": "0x43414b3556b6dfbb1278670871b11c73c22c93f3", + "proxy": false, + "deploymentTxn": "0x170028b613a6daf839e60de54b8dcc7e230909a6eed67d3e444324ec063c3d6a", + "timestamp": 1747773832, + "commitHash": "5addf85" } }, "history": [ + { + "contracts": { + "UERC20SuperchainFactory": { + "address": "0x43414b3556b6dfbb1278670871b11c73c22c93f3", + "proxy": false, + "deploymentTxn": "0x170028b613a6daf839e60de54b8dcc7e230909a6eed67d3e444324ec063c3d6a", + "input": { + "constructor": {} + } + } + }, + "timestamp": 1747773832, + "commitHash": "5addf85" + }, { "contracts": { "UniswapV2Factory": { diff --git a/script/deploy/Deploy-all.s.sol b/script/deploy/Deploy-all.s.sol index df84a031..52f0b767 100644 --- a/script/deploy/Deploy-all.s.sol +++ b/script/deploy/Deploy-all.s.sol @@ -47,9 +47,6 @@ import {UERC20FactoryDeployer} from '../../src/briefcase/deployers/uerc20-factor import {UERC20SuperchainFactoryDeployer} from '../../src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol'; -import {UERC20MetadataLibraryDeployer} from - '../../src/briefcase/deployers/uerc20-factory/UERC20MetadataLibraryDeployer.sol'; - contract Deploy is Script { using stdJson for string; @@ -444,34 +441,19 @@ contract Deploy is Script { function deployUERC20Factory() private { if (!config.readBoolOr('.protocols.uerc20-factory.deploy', false)) return; - bool deployUERC20MetadataLibrary = - config.readBoolOr('.protocols.uerc20-factory.contracts.UERC20MetadataLibrary.deploy', false); bool deployUERC20FactoryMainnet = config.readBoolOr('.protocols.uerc20-factory.contracts.UERC20Factory.deploy', false); bool deployUERC20SuperchainFactory = config.readBoolOr('.protocols.uerc20-factory.contracts.UERC20SuperchainFactory.deploy', false); - // Params - address uerc20MetadataLibrary; - - if (deployUERC20MetadataLibrary) { - console.log('deploying UERC20 Metadata Library'); - uerc20MetadataLibrary = UERC20MetadataLibraryDeployer.deploy(); - } - - if (!deployUERC20MetadataLibrary) { - uerc20MetadataLibrary = - config.readAddress('.protocols.uerc20-factory.contracts.UERC20MetadataLibrary.address'); - } - if (deployUERC20FactoryMainnet) { console.log('deploying UERC20 Factory'); - UERC20FactoryDeployer.deploy(uerc20MetadataLibrary); + UERC20FactoryDeployer.deploy(); } if (deployUERC20SuperchainFactory) { console.log('deploying UERC20 Superchain Factory'); - UERC20SuperchainFactoryDeployer.deploy(uerc20MetadataLibrary); + UERC20SuperchainFactoryDeployer.deploy(); } } diff --git a/script/deploy/tasks/11155111/task-1747774092.json b/script/deploy/tasks/11155111/task-1747774092.json new file mode 100644 index 00000000..84e47987 --- /dev/null +++ b/script/deploy/tasks/11155111/task-1747774092.json @@ -0,0 +1,469 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": true, + "address": null + }, + "UERC20SuperchainFactory": { + "deploy": false, + "address": null + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file diff --git a/script/deploy/tasks/1301/task-1747773822.json b/script/deploy/tasks/1301/task-1747773822.json new file mode 100644 index 00000000..93f06d16 --- /dev/null +++ b/script/deploy/tasks/1301/task-1747773822.json @@ -0,0 +1,469 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": false, + "address": null + }, + "UERC20SuperchainFactory": { + "deploy": true, + "address": null + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file diff --git a/script/deploy/tasks/task_template.json b/script/deploy/tasks/task_template.json index e0aa5e24..567dd3dd 100644 --- a/script/deploy/tasks/task_template.json +++ b/script/deploy/tasks/task_template.json @@ -403,29 +403,13 @@ "name": "UERC20 Factory", "deploy": false, "contracts": { - "UERC20MetadataLibrary": { - "deploy": false, - "address": null - }, "UERC20Factory": { "deploy": false, - "address": null, - "params": { - "metadataLibrary": { - "name": "UERC20 Metadata Library address", - "pointer": "protocols.uerc20-factory.contracts.UERC20MetadataLibrary" - } - } + "address": null }, "UERC20SuperchainFactory": { "deploy": false, - "address": null, - "params": { - "metadataLibrary": { - "name": "UERC20 Metadata Library address", - "pointer": "protocols.uerc20-factory.contracts.UERC20MetadataLibrary" - } - } + "address": null } } }, diff --git a/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol index e50154da..131813c5 100644 --- a/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol +++ b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol @@ -3,11 +3,10 @@ pragma solidity >= 0.8.0; import {IUERC20Factory} from '../../protocols/uerc20-factory/interfaces/IUERC20Factory.sol'; import {DeployerHelper} from '../DeployerHelper.sol'; -import {UERC20MetadataLibraryDeployer} from './UERC20MetadataLibraryDeployer.sol'; library UERC20FactoryDeployer { - function deploy(address uerc20MetadataLibrary) internal returns (IUERC20Factory uerc20Factory) { - bytes memory initcode_ = abi.encodePacked(initcode(uerc20MetadataLibrary)); + function deploy() internal returns (IUERC20Factory uerc20Factory) { + bytes memory initcode_ = abi.encodePacked(initcode()); uerc20Factory = IUERC20Factory(DeployerHelper.create2(initcode_)); } @@ -17,11 +16,8 @@ library UERC20FactoryDeployer { * @notice This initcode is generated from the following contract: * - Source Contract: src/pkgs/uerc20-factory/src/factories/UERC20Factory.sol */ - function initcode(address UERC20MetadataLibrary) internal pure returns (bytes memory) { - return abi.encodePacked( - hex'6080604052348015600e575f5ffd5b506121c28061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80632c0cf9471461004357806394a8b1d414610073578063a5ea11da14610086575b5f5ffd5b6100566100513660046108cf565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109bd565b61030a565b61008e61039c565b60405161006a9190610a6e565b5f806100a983850185610b47565b80519091506001600160a01b031633146100f157805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b6040805160c0810182528a8152602081018a90529081018790526001600160a01b038616606082015260ff8816608082015260a081018290525f806101368c82610c9a565b506020820151600182019061014b9082610c9a565b50604082015160028201556060820151600382018054608085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560a08301518051600484018054919093166001600160a01b031991909116178255602081015190919060058401906101c29082610c9a565b50604082015160028201906101d79082610c9a565b50606082015160038201906101ec9082610c9a565b505083516040515f945061020a93508d92508c918c91602001610d54565b6040516020818303038152906040528051906020012090508060405161022f90610711565b8190604051809103905ff590508015801561024c573d5f5f3e3d5ffd5b5092505f8061025b818061071e565b610268600183015f61071e565b5f600283018190556003830180546001600160a81b03191690556004830180546001600160a01b0319168155906102a2600585018261071e565b6102af600283015f61071e565b6102bc600383015f61071e565b50506040516001600160a01b03861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050979650505050505050565b5f5f858585856040516020016103239493929190610d54565b6040516020818303038152906040528051906020012090505f6040518060200161034c90610711565b601f1982820381018352601f90910116604081905261036e9190602001610d9d565b6040516020818303038152906040528051906020012090506103918282306106df565b979650505050505050565b6103a4610758565b5f6040518060c00160405290815f820180546103bf90610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546103eb90610c16565b80156104365780601f1061040d57610100808354040283529160200191610436565b820191905f5260205f20905b81548152906001019060200180831161041957829003601f168201915b5050505050815260200160018201805461044f90610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461047b90610c16565b80156104c65780601f1061049d576101008083540402835291602001916104c6565b820191905f5260205f20905b8154815290600101906020018083116104a957829003601f168201915b5050509183525050600282015460208083019190915260038301546001600160a01b03808216604080860191909152600160a01b90920460ff1660608501528151608080820190935260048601805490921681526005860180549390950194909391929184019161053690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461056290610c16565b80156105ad5780601f10610584576101008083540402835291602001916105ad565b820191905f5260205f20905b81548152906001019060200180831161059057829003601f168201915b505050505081526020016002820180546105c690610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546105f290610c16565b801561063d5780601f106106145761010080835404028352916020019161063d565b820191905f5260205f20905b81548152906001019060200180831161062057829003601f168201915b5050505050815260200160038201805461065690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461068290610c16565b80156106cd5780601f106106a4576101008083540402835291602001916106cd565b820191905f5260205f20905b8154815290600101906020018083116106b057829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b61140280610db483390190565b50805461072a90610c16565b5f825580601f10610739575050565b601f0160209004905f5260205f209081019061075591906107c7565b50565b6040518060c0016040528060608152602001606081526020015f81526020015f6001600160a01b031681526020015f60ff1681526020016107c260405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b808211156107db575f81556001016107c8565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715610815576108156107df565b60405290565b5f82601f83011261082a575f5ffd5b81356001600160401b03811115610843576108436107df565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610871576108716107df565b604052818152838201602001851015610888575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146108b4575f5ffd5b919050565b80356001600160a01b03811681146108b4575f5ffd5b5f5f5f5f5f5f5f60c0888a0312156108e5575f5ffd5b87356001600160401b038111156108fa575f5ffd5b6109068a828b0161081b565b97505060208801356001600160401b03811115610921575f5ffd5b61092d8a828b0161081b565b96505061093c604089016108a4565b945060608801359350610951608089016108b9565b925060a08801356001600160401b0381111561096b575f5ffd5b88015f80601f83018c1361097d575f5ffd5b5081356001600160401b03811115610993575f5ffd5b6020830191508b60208285010111156109aa575f5ffd5b989b979a50959850939692959293505050565b5f5f5f5f608085870312156109d0575f5ffd5b84356001600160401b038111156109e5575f5ffd5b6109f18782880161081b565b94505060208501356001600160401b03811115610a0c575f5ffd5b610a188782880161081b565b935050610a27604086016108a4565b9150610a35606086016108b9565b905092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f825160c06020840152610a8960e0840182610a40565b90506020840151601f19848303016040850152610aa68282610a40565b9150506040840151606084015260018060a01b03606085015116608084015260ff60808501511660a084015260a0840151601f198483030160c085015260018060a01b038151168252602081015160806020840152610b086080840182610a40565b905060408201518382036040850152610b218282610a40565b915050606082015191508281036060840152610b3d8183610a40565b9695505050505050565b5f60208284031215610b57575f5ffd5b81356001600160401b03811115610b6c575f5ffd5b820160808185031215610b7d575f5ffd5b610b856107f3565b610b8e826108b9565b815260208201356001600160401b03811115610ba8575f5ffd5b610bb48682850161081b565b60208301525060408201356001600160401b03811115610bd2575f5ffd5b610bde8682850161081b565b60408301525060608201356001600160401b03811115610bfc575f5ffd5b610c088682850161081b565b606083015250949350505050565b600181811c90821680610c2a57607f821691505b602082108103610c4857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610c9557805f5260205f20601f840160051c81016020851015610c735750805b601f840160051c820191505b81811015610c92575f8155600101610c7f565b50505b505050565b81516001600160401b03811115610cb357610cb36107df565b610cc781610cc18454610c16565b84610c4e565b6020601f821160018114610cf9575f8315610ce25750848201515b5f19600385901b1c1916600184901b178455610c92565b5f84815260208120601f198516915b82811015610d285787850151825560209485019460019092019101610d08565b5084821015610d4557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608081525f610d666080830187610a40565b8281036020840152610d788187610a40565b60ff95909516604084015250506001600160a01b039190911660609091015292915050565b5f82518060208501845e5f92019182525091905056fe60a060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610073919081019061035e565b80519091505f9061008490826104cb565b50602081015160019061009790826104cb565b5060808181015160ff16905260a08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100db90826104cb565b50604082015160028201906100f090826104cb565b506060820151600382019061010590826104cb565b5050506060810151604082015161011c9190610122565b50610585565b6805345cdf77eb68f44c54818101818110156101455763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101d9576101d96101a3565b60405290565b60405160c081016001600160401b03811182821017156101d9576101d96101a3565b5f82601f830112610210575f5ffd5b81516001600160401b03811115610229576102296101a3565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610257576102576101a3565b60405281815283820160200185101561026e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102a0575f5ffd5b919050565b805160ff811681146102a0575f5ffd5b5f608082840312156102c5575f5ffd5b6102cd6101b7565b90506102d88261028a565b815260208201516001600160401b038111156102f2575f5ffd5b6102fe84828501610201565b60208301525060408201516001600160401b0381111561031c575f5ffd5b61032884828501610201565b60408301525060608201516001600160401b03811115610346575f5ffd5b61035284828501610201565b60608301525092915050565b5f6020828403121561036e575f5ffd5b81516001600160401b03811115610383575f5ffd5b820160c08185031215610394575f5ffd5b61039c6101df565b81516001600160401b038111156103b1575f5ffd5b6103bd86828501610201565b82525060208201516001600160401b038111156103d8575f5ffd5b6103e486828501610201565b602083015250604082810151908201526104006060830161028a565b6060820152610411608083016102a5565b608082015260a08201516001600160401b0381111561042e575f5ffd5b61043a868285016102b5565b60a083015250949350505050565b600181811c9082168061045c57607f821691505b60208210810361047a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561019e57805f5260205f20601f840160051c810160208510156104a55750805b601f840160051c820191505b818110156104c4575f81556001016104b1565b5050505050565b81516001600160401b038111156104e4576104e46101a3565b6104f8816104f28454610448565b84610480565b6020601f82116001811461052a575f83156105135750848201515b5f19600385901b1c1916600184901b1784556104c4565b5f84815260208120601f198516915b828110156105595787850151825560209485019460019092019101610539565b508482101561057657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608051610e6561059d5f395f61015e0152610e655ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80633c130d901161008857806395d89b411161006357806395d89b41146101fa578063a9059cbb14610202578063d505accf14610215578063dd62ed3e1461022a575f5ffd5b80633c130d90146101a857806370a08231146101b05780637ecebe00146101d5575f5ffd5b806323b872dd116100c357806323b872dd14610144578063313ce567146101575780633644e51514610188578063392f37e914610190575f5ffd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f5ffd5b6100f161023d565b6040516100fe9190610b47565b60405180910390f35b61011a610115366004610b7b565b6102cc565b60405190151581526020016100fe565b6805345cdf77eb68f44c545b6040519081526020016100fe565b61011a610152366004610ba3565b61034c565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100fe565b61013661041b565b610198610497565b6040516100fe9493929190610bdd565b6100f161064e565b6101366101be366004610c31565b6387a211a2600c9081525f91909152602090205490565b6101366101e3366004610c31565b6338377508600c9081525f91909152602090205490565b6100f161089b565b61011a610210366004610b7b565b6108aa565b610228610223366004610c4a565b610921565b005b610136610238366004610cb7565b610ad5565b60605f805461024b90610ce8565b80601f016020809104026020016040519081016040528092919081815260200182805461027790610ce8565b80156102c25780601f10610299576101008083540402835291602001916102c2565b820191905f5260205f20905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba318821915176102fd57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa35060015b92915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146103a15733602052637f5e9f208117600c526034600c20805480191561039e5780851115610398576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156103c75763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060019392505050565b5f8061042561023d565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916104b590610ce8565b80601f01602080910402602001604051908101604052809291908181526020018280546104e190610ce8565b801561052c5780601f106105035761010080835404028352916020019161052c565b820191905f5260205f20905b81548152906001019060200180831161050f57829003601f168201915b50505050509080600201805461054190610ce8565b80601f016020809104026020016040519081016040528092919081815260200182805461056d90610ce8565b80156105b85780601f1061058f576101008083540402835291602001916105b8565b820191905f5260205f20905b81548152906001019060200180831161059b57829003601f168201915b5050505050908060030180546105cd90610ce8565b80601f01602080910402602001604051908101604052809291908181526020018280546105f990610ce8565b80156106445780601f1061061b57610100808354040283529160200191610644565b820191905f5260205f20905b81548152906001019060200180831161062757829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b03168252600380546060939291602084019161067f90610ce8565b80601f01602080910402602001604051908101604052809291908181526020018280546106ab90610ce8565b80156106f65780601f106106cd576101008083540402835291602001916106f6565b820191905f5260205f20905b8154815290600101906020018083116106d957829003601f168201915b5050505050815260200160028201805461070f90610ce8565b80601f016020809104026020016040519081016040528092919081815260200182805461073b90610ce8565b80156107865780601f1061075d57610100808354040283529160200191610786565b820191905f5260205f20905b81548152906001019060200180831161076957829003601f168201915b5050505050815260200160038201805461079f90610ce8565b80601f01602080910402602001604051908101604052809291908181526020018280546107cb90610ce8565b80156108165780601f106107ed57610100808354040283529160200191610816565b820191905f5260205f20905b8154815290600101906020018083116107f957829003601f168201915b505050919092525050604051631c64c49160e21b815273', - UERC20MetadataLibrary, - hex'926371931244925061085591600401610d20565b5f60405180830381865af415801561086f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108969190810190610da5565b905090565b60606001805461024b90610ce8565b5f6387a211a2600c52335f526020600c208054808411156108d25763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba3188519151761095157633f68539a5f526004601cfd5b5f61095a61023d565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64286101561099957631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610a815763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610afe57505f19610346565b50602052637f5e9f20600c9081525f91909152603490205490565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610b596020830184610b19565b9392505050565b80356001600160a01b0381168114610b76575f5ffd5b919050565b5f5f60408385031215610b8c575f5ffd5b610b9583610b60565b946020939093013593505050565b5f5f5f60608486031215610bb5575f5ffd5b610bbe84610b60565b9250610bcc60208501610b60565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f90610c0090830186610b19565b8281036040840152610c128186610b19565b90508281036060840152610c268185610b19565b979650505050505050565b5f60208284031215610c41575f5ffd5b610b5982610b60565b5f5f5f5f5f5f5f60e0888a031215610c60575f5ffd5b610c6988610b60565b9650610c7760208901610b60565b95506040880135945060608801359350608088013560ff81168114610c9a575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215610cc8575f5ffd5b610cd183610b60565b9150610cdf60208401610b60565b90509250929050565b600181811c90821680610cfc57607f821691505b602082108103610d1a57634e487b7160e01b5f52602260045260245ffd5b50919050565b602080825282516001600160a01b031682820152820151608060408301525f90610d4d60a0840182610b19565b90506040840151601f19848303016060850152610d6a8282610b19565b9150506060840151601f19848303016080850152610d888282610b19565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610db5575f5ffd5b815167ffffffffffffffff811115610dcb575f5ffd5b8201601f81018413610ddb575f5ffd5b805167ffffffffffffffff811115610df557610df5610d91565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610e2457610e24610d91565b604052818152828201602001861015610e3b575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea164736f6c634300081c000aa164736f6c634300081c000a' - ); + function initcode() internal pure returns (bytes memory) { + return + hex'6080604052348015600e575f5ffd5b506129b68061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80632c0cf9471461004357806394a8b1d414610073578063a5ea11da14610086575b5f5ffd5b6100566100513660046108cf565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109bd565b61030a565b61008e61039c565b60405161006a9190610a6e565b5f806100a983850185610b47565b80519091506001600160a01b031633146100f157805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b6040805160c0810182528a8152602081018a90529081018790526001600160a01b038616606082015260ff8816608082015260a081018290525f806101368c82610c9a565b506020820151600182019061014b9082610c9a565b50604082015160028201556060820151600382018054608085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560a08301518051600484018054919093166001600160a01b031991909116178255602081015190919060058401906101c29082610c9a565b50604082015160028201906101d79082610c9a565b50606082015160038201906101ec9082610c9a565b505083516040515f945061020a93508d92508c918c91602001610d54565b6040516020818303038152906040528051906020012090508060405161022f90610711565b8190604051809103905ff590508015801561024c573d5f5f3e3d5ffd5b5092505f8061025b818061071e565b610268600183015f61071e565b5f600283018190556003830180546001600160a81b03191690556004830180546001600160a01b0319168155906102a2600585018261071e565b6102af600283015f61071e565b6102bc600383015f61071e565b50506040516001600160a01b03861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050979650505050505050565b5f5f858585856040516020016103239493929190610d54565b6040516020818303038152906040528051906020012090505f6040518060200161034c90610711565b601f1982820381018352601f90910116604081905261036e9190602001610d9d565b6040516020818303038152906040528051906020012090506103918282306106df565b979650505050505050565b6103a4610758565b5f6040518060c00160405290815f820180546103bf90610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546103eb90610c16565b80156104365780601f1061040d57610100808354040283529160200191610436565b820191905f5260205f20905b81548152906001019060200180831161041957829003601f168201915b5050505050815260200160018201805461044f90610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461047b90610c16565b80156104c65780601f1061049d576101008083540402835291602001916104c6565b820191905f5260205f20905b8154815290600101906020018083116104a957829003601f168201915b5050509183525050600282015460208083019190915260038301546001600160a01b03808216604080860191909152600160a01b90920460ff1660608501528151608080820190935260048601805490921681526005860180549390950194909391929184019161053690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461056290610c16565b80156105ad5780601f10610584576101008083540402835291602001916105ad565b820191905f5260205f20905b81548152906001019060200180831161059057829003601f168201915b505050505081526020016002820180546105c690610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546105f290610c16565b801561063d5780601f106106145761010080835404028352916020019161063d565b820191905f5260205f20905b81548152906001019060200180831161062057829003601f168201915b5050505050815260200160038201805461065690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461068290610c16565b80156106cd5780601f106106a4576101008083540402835291602001916106cd565b820191905f5260205f20905b8154815290600101906020018083116106b057829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611bf680610db483390190565b50805461072a90610c16565b5f825580601f10610739575050565b601f0160209004905f5260205f209081019061075591906107c7565b50565b6040518060c0016040528060608152602001606081526020015f81526020015f6001600160a01b031681526020015f60ff1681526020016107c260405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b808211156107db575f81556001016107c8565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715610815576108156107df565b60405290565b5f82601f83011261082a575f5ffd5b81356001600160401b03811115610843576108436107df565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610871576108716107df565b604052818152838201602001851015610888575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146108b4575f5ffd5b919050565b80356001600160a01b03811681146108b4575f5ffd5b5f5f5f5f5f5f5f60c0888a0312156108e5575f5ffd5b87356001600160401b038111156108fa575f5ffd5b6109068a828b0161081b565b97505060208801356001600160401b03811115610921575f5ffd5b61092d8a828b0161081b565b96505061093c604089016108a4565b945060608801359350610951608089016108b9565b925060a08801356001600160401b0381111561096b575f5ffd5b88015f80601f83018c1361097d575f5ffd5b5081356001600160401b03811115610993575f5ffd5b6020830191508b60208285010111156109aa575f5ffd5b989b979a50959850939692959293505050565b5f5f5f5f608085870312156109d0575f5ffd5b84356001600160401b038111156109e5575f5ffd5b6109f18782880161081b565b94505060208501356001600160401b03811115610a0c575f5ffd5b610a188782880161081b565b935050610a27604086016108a4565b9150610a35606086016108b9565b905092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f825160c06020840152610a8960e0840182610a40565b90506020840151601f19848303016040850152610aa68282610a40565b9150506040840151606084015260018060a01b03606085015116608084015260ff60808501511660a084015260a0840151601f198483030160c085015260018060a01b038151168252602081015160806020840152610b086080840182610a40565b905060408201518382036040850152610b218282610a40565b915050606082015191508281036060840152610b3d8183610a40565b9695505050505050565b5f60208284031215610b57575f5ffd5b81356001600160401b03811115610b6c575f5ffd5b820160808185031215610b7d575f5ffd5b610b856107f3565b610b8e826108b9565b815260208201356001600160401b03811115610ba8575f5ffd5b610bb48682850161081b565b60208301525060408201356001600160401b03811115610bd2575f5ffd5b610bde8682850161081b565b60408301525060608201356001600160401b03811115610bfc575f5ffd5b610c088682850161081b565b606083015250949350505050565b600181811c90821680610c2a57607f821691505b602082108103610c4857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610c9557805f5260205f20601f840160051c81016020851015610c735750805b601f840160051c820191505b81811015610c92575f8155600101610c7f565b50505b505050565b81516001600160401b03811115610cb357610cb36107df565b610cc781610cc18454610c16565b84610c4e565b6020601f821160018114610cf9575f8315610ce25750848201515b5f19600385901b1c1916600184901b178455610c92565b5f84815260208120601f198516915b82811015610d285787850151825560209485019460019092019101610d08565b5084821015610d4557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608081525f610d666080830187610a40565b8281036020840152610d788187610a40565b60ff95909516604084015250506001600160a01b039190911660609091015292915050565b5f82518060208501845e5f92019182525091905056fe60a060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610073919081019061035e565b80519091505f9061008490826104cb565b50602081015160019061009790826104cb565b5060808181015160ff16905260a08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100db90826104cb565b50604082015160028201906100f090826104cb565b506060820151600382019061010590826104cb565b5050506060810151604082015161011c9190610122565b50610585565b6805345cdf77eb68f44c54818101818110156101455763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101d9576101d96101a3565b60405290565b60405160c081016001600160401b03811182821017156101d9576101d96101a3565b5f82601f830112610210575f5ffd5b81516001600160401b03811115610229576102296101a3565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610257576102576101a3565b60405281815283820160200185101561026e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102a0575f5ffd5b919050565b805160ff811681146102a0575f5ffd5b5f608082840312156102c5575f5ffd5b6102cd6101b7565b90506102d88261028a565b815260208201516001600160401b038111156102f2575f5ffd5b6102fe84828501610201565b60208301525060408201516001600160401b0381111561031c575f5ffd5b61032884828501610201565b60408301525060608201516001600160401b03811115610346575f5ffd5b61035284828501610201565b60608301525092915050565b5f6020828403121561036e575f5ffd5b81516001600160401b03811115610383575f5ffd5b820160c08185031215610394575f5ffd5b61039c6101df565b81516001600160401b038111156103b1575f5ffd5b6103bd86828501610201565b82525060208201516001600160401b038111156103d8575f5ffd5b6103e486828501610201565b602083015250604082810151908201526104006060830161028a565b6060820152610411608083016102a5565b608082015260a08201516001600160401b0381111561042e575f5ffd5b61043a868285016102b5565b60a083015250949350505050565b600181811c9082168061045c57607f821691505b60208210810361047a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561019e57805f5260205f20601f840160051c810160208510156104a55750805b601f840160051c820191505b818110156104c4575f81556001016104b1565b5050505050565b81516001600160401b038111156104e4576104e46101a3565b6104f8816104f28454610448565b84610480565b6020601f82116001811461052a575f83156105135750848201515b5f19600385901b1c1916600184901b1784556104c4565b5f84815260208120601f198516915b828110156105595787850151825560209485019460019092019101610539565b508482101561057657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805161165961059d5f395f61015e01526116595ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80633c130d901161008857806395d89b411161006357806395d89b41146101fa578063a9059cbb14610202578063d505accf14610215578063dd62ed3e1461022a575f5ffd5b80633c130d90146101a857806370a08231146101b05780637ecebe00146101d5575f5ffd5b806323b872dd116100c357806323b872dd14610144578063313ce567146101575780633644e51514610188578063392f37e914610190575f5ffd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f5ffd5b6100f161023d565b6040516100fe919061125d565b60405180910390f35b61011a61011536600461128a565b6102cc565b60405190151581526020016100fe565b6805345cdf77eb68f44c545b6040519081526020016100fe565b61011a6101523660046112b2565b61034c565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100fe565b61013661041c565b610198610498565b6040516100fe94939291906112ec565b6100f161064f565b6101366101be366004611340565b6387a211a2600c9081525f91909152602090205490565b6101366101e3366004611340565b6338377508600c9081525f91909152602090205490565b6100f1610831565b61011a61021036600461128a565b610840565b610228610223366004611359565b6108b7565b005b6101366102383660046113c6565b610a6b565b60605f805461024b906113f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610277906113f7565b80156102c25780601f10610299576101008083540402835291602001916102c2565b820191905f5260205f20905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba318821915176102fd57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa35060015b92915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146103a15733602052637f5e9f208117600c526034600c20805480191561039e5780851115610398576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156103c75763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f8061042661023d565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916104b6906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546104e2906113f7565b801561052d5780601f106105045761010080835404028352916020019161052d565b820191905f5260205f20905b81548152906001019060200180831161051057829003601f168201915b505050505090806002018054610542906113f7565b80601f016020809104026020016040519081016040528092919081815260200182805461056e906113f7565b80156105b95780601f10610590576101008083540402835291602001916105b9565b820191905f5260205f20905b81548152906001019060200180831161059c57829003601f168201915b5050505050908060030180546105ce906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546105fa906113f7565b80156106455780601f1061061c57610100808354040283529160200191610645565b820191905f5260205f20905b81548152906001019060200180831161062857829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b031682526003805460609361082c9390929091602084019190610687906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546106b3906113f7565b80156106fe5780601f106106d5576101008083540402835291602001916106fe565b820191905f5260205f20905b8154815290600101906020018083116106e157829003601f168201915b50505050508152602001600282018054610717906113f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610743906113f7565b801561078e5780601f106107655761010080835404028352916020019161078e565b820191905f5260205f20905b81548152906001019060200180831161077157829003601f168201915b505050505081526020016003820180546107a7906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546107d3906113f7565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b505050505081525050610aaf565b905090565b60606001805461024b906113f7565b5f6387a211a2600c52335f526020600c208054808411156108685763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba318851915176108e757633f68539a5f526004601cfd5b5f6108f061023d565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64286101561092f57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610a175763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610a9457505f19610346565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610ac2610abd83610ae8565b610bff565b604051602001610ad29190611446565b6040516020818303038152906040529050919050565b60605f610b00835f01516001600160a01b0316610c25565b604051602001610b109190611477565b60405160208183030381529060405290505f8360200151511115610b5f5780610b3c8460200151610cd3565b604051602001610b4d9291906114a8565b60405160208183030381529060405290505b60408301515115610b9b5780610b788460400151610cd3565b604051602001610b899291906114ea565b60405160208183030381529060405290505b60608301515115610bd75780610bb48460600151610cd3565b604051602001610bc5929190611515565b60405160208183030381529060405290505b80604051602001610be8919061153e565b604051602081830303815290604052915050919050565b60606103468260405180606001604052806040815260200161160d604091396001610f25565b60605f610c31836110a0565b6028602282012090915060601c60295b6001811115610cca57600782600f16118015610c7657506060838281518110610c6c57610c6c61155a565b016020015160f81c115b15610cb357602060f81b838281518110610c9257610c9261155a565b0160200180516001600160f81b0319908116909218909116905f82901a9053505b60049190911c90610cc381611582565b9050610c41565b50909392505050565b805160609082905f90610ce7906002611597565b67ffffffffffffffff811115610cff57610cff6115ae565b6040519080825280601f01601f191660200182016040528015610d29576020820181803683370190505b5090505f805b8351811015610f0e575f610d468583016020015190565b90506b100000000000000400003700600160f883901c1b1615610ed057601760fa1b8484610d73816115c2565b955081518110610d8557610d8561155a565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b03610ded57603160f91b8484610dc0816115c2565b955081518110610dd257610dd261155a565b60200101906001600160f81b03191690815f1a905350610f05565b6001600160f81b03198116600960f81b03610e1257601d60fa1b8484610dc0816115c2565b6001600160f81b03198116600560f91b03610e3757603760f91b8484610dc0816115c2565b6001600160f81b03198116600360fa1b03610e5c57603360f91b8484610dc0816115c2565b6001600160f81b03198116600d60f81b03610e8157603960f91b8484610dc0816115c2565b6001600160f81b03198116601760fa1b03610ea657601760fa1b8484610dc0816115c2565b6001600160f81b03198116601160f91b03610ecb57601160f91b8484610dc0816115c2565b610f05565b808484610edc816115c2565b955081518110610eee57610eee61155a565b60200101906001600160f81b03191690815f1a9053505b50600101610d2f565b50808252603f01601f191681016040529392505050565b606083515f03610f43575060408051602081019091525f8152610415565b5f82610f7357600385516004610f599190611597565b610f649060026115da565b610f6e91906115ed565b610f98565b600385516002610f8391906115da565b610f8d91906115ed565b610f98906004611597565b90505f8167ffffffffffffffff811115610fb457610fb46115ae565b6040519080825280601f01601f191660200182016040528015610fde576020820181803683370190505b509050600185016020820187885189016020810180515f82525b82841015611053576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450610ff8565b90525050851561109457600388510660018114611077576002811461108a57611092565b603d6001830353603d6002830353611092565b603d60018303535b505b50909695505050505050565b60606103466001600160a01b03831660146060825f6110c0846002611597565b6110cb9060026115da565b67ffffffffffffffff8111156110e3576110e36115ae565b6040519080825280601f01601f19166020018201604052801561110d576020820181803683370190505b509050600360fc1b815f815181106111275761112761155a565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106111555761115561155a565b60200101906001600160f81b03191690815f1a9053505f611177856002611597565b6111829060016115da565b90505b60018111156111f9576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106111b6576111b661155a565b1a60f81b8282815181106111cc576111cc61155a565b60200101906001600160f81b03191690815f1a90535060049290921c916111f281611582565b9050611185565b5081156112275760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610415602083018461122f565b80356001600160a01b0381168114611285575f5ffd5b919050565b5f5f6040838503121561129b575f5ffd5b6112a48361126f565b946020939093013593505050565b5f5f5f606084860312156112c4575f5ffd5b6112cd8461126f565b92506112db6020850161126f565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f9061130f9083018661122f565b8281036040840152611321818661122f565b90508281036060840152611335818561122f565b979650505050505050565b5f60208284031215611350575f5ffd5b6104158261126f565b5f5f5f5f5f5f5f60e0888a03121561136f575f5ffd5b6113788861126f565b96506113866020890161126f565b95506040880135945060608801359350608088013560ff811681146113a9575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156113d7575f5ffd5b6113e08361126f565b91506113ee6020840161126f565b90509250929050565b600181811c9082168061140b57607f821691505b60208210810361142957634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610415601d83018461142f565b6b3d9121b932b0ba37b9111d1160a11b81525f611497600c83018461142f565b601160f91b81526001019392505050565b5f6114b3828561142f565b701610112232b9b1b934b83a34b7b7111d1160791b81526114d7601182018561142f565b601160f91b815260010195945050505050565b5f6114f5828561142f565b6c1610112bb2b139b4ba32911d1160991b81526114d7600d82018561142f565b5f611520828561142f565b6a16101124b6b0b3b2911d1160a91b81526114d7600b82018561142f565b5f611549828461142f565b607d60f81b81526001019392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f816115905761159061156e565b505f190190565b80820281158282048414176103465761034661156e565b634e487b7160e01b5f52604160045260245ffd5b5f600182016115d3576115d361156e565b5060010190565b808201808211156103465761034661156e565b5f8261160757634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a'; } } diff --git a/src/briefcase/deployers/uerc20-factory/UERC20MetadataLibraryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20MetadataLibraryDeployer.sol deleted file mode 100644 index 13ad1b84..00000000 --- a/src/briefcase/deployers/uerc20-factory/UERC20MetadataLibraryDeployer.sol +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity >= 0.8.0; - -import {DeployerHelper} from '../DeployerHelper.sol'; - -library UERC20MetadataLibraryDeployer { - function deploy() internal returns (address uerc20MetadataLibrary) { - bytes memory initcode_ = abi.encodePacked(initcode()); - uerc20MetadataLibrary = DeployerHelper.create2(initcode_); - } - - /** - * @dev autogenerated - run `./script/util/create_briefcase.sh` to generate current initcode - * - * @notice This initcode is generated from the following contract: - * - Source Contract: src/pkgs/uerc20-factory/src/libraries/UERC20MetadataLibrary.sol - */ - function initcode() internal pure returns (bytes memory) { - return - hex'610bdc610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe7300000000000000000000000000000000000000003014608060405260043610610034575f3560e01c80637193124414610038575b5f5ffd5b61004b6100463660046108b1565b610061565b6040516100589190610991565b60405180910390f35b606061007461006f8361009a565b6101b1565b60405160200161008491906109dd565b6040516020818303038152906040529050919050565b60605f6100b2835f01516001600160a01b03166101dd565b6040516020016100c29190610a0e565b60405160208183030381529060405290505f836020015151111561011157806100ee846020015161028b565b6040516020016100ff929190610a3f565b60405160208183030381529060405290505b6040830151511561014d578061012a846040015161028b565b60405160200161013b929190610a81565b60405160208183030381529060405290505b606083015151156101895780610166846060015161028b565b604051602001610177929190610aac565b60405160208183030381529060405290505b8060405160200161019a9190610ad5565b604051602081830303815290604052915050919050565b60606101d782604051806060016040528060408152602001610b906040913960016104dd565b92915050565b60605f6101e98361065a565b6028602282012090915060601c60295b600181111561028257600782600f1611801561022e5750606083828151811061022457610224610af1565b016020015160f81c115b1561026b57602060f81b83828151811061024a5761024a610af1565b0160200180516001600160f81b0319908116909218909116905f82901a9053505b60049190911c9061027b81610b19565b90506101f9565b50909392505050565b805160609082905f9061029f906002610b2e565b67ffffffffffffffff8111156102b7576102b76107e9565b6040519080825280601f01601f1916602001820160405280156102e1576020820181803683370190505b5090505f805b83518110156104c6575f6102fe8583016020015190565b90506b100000000000000400003700600160f883901c1b161561048857601760fa1b848461032b81610b45565b95508151811061033d5761033d610af1565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b036103a557603160f91b848461037881610b45565b95508151811061038a5761038a610af1565b60200101906001600160f81b03191690815f1a9053506104bd565b6001600160f81b03198116600960f81b036103ca57601d60fa1b848461037881610b45565b6001600160f81b03198116600560f91b036103ef57603760f91b848461037881610b45565b6001600160f81b03198116600360fa1b0361041457603360f91b848461037881610b45565b6001600160f81b03198116600d60f81b0361043957603960f91b848461037881610b45565b6001600160f81b03198116601760fa1b0361045e57601760fa1b848461037881610b45565b6001600160f81b03198116601160f91b0361048357601160f91b848461037881610b45565b6104bd565b80848461049481610b45565b9550815181106104a6576104a6610af1565b60200101906001600160f81b03191690815f1a9053505b506001016102e7565b50808252603f01601f191681016040529392505050565b606083515f036104fb575060408051602081019091525f8152610653565b5f8261052b576003855160046105119190610b2e565b61051c906002610b5d565b6105269190610b70565b610550565b60038551600261053b9190610b5d565b6105459190610b70565b610550906004610b2e565b90505f8167ffffffffffffffff81111561056c5761056c6107e9565b6040519080825280601f01601f191660200182016040528015610596576020820181803683370190505b509050600185016020820187885189016020810180515f82525b8284101561060b576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506105b0565b90525050851561064c5760038851066001811461062f57600281146106425761064a565b603d6001830353603d600283035361064a565b603d60018303535b505b5090925050505b9392505050565b60606101d76001600160a01b03831660146060825f61067a846002610b2e565b610685906002610b5d565b67ffffffffffffffff81111561069d5761069d6107e9565b6040519080825280601f01601f1916602001820160405280156106c7576020820181803683370190505b509050600360fc1b815f815181106106e1576106e1610af1565b60200101906001600160f81b03191690815f1a905350600f60fb1b8160018151811061070f5761070f610af1565b60200101906001600160f81b03191690815f1a9053505f610731856002610b2e565b61073c906001610b5d565b90505b60018111156107b3576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061077057610770610af1565b1a60f81b82828151811061078657610786610af1565b60200101906001600160f81b03191690815f1a90535060049290921c916107ac81610b19565b905061073f565b5081156107e15760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715610820576108206107e9565b60405290565b5f82601f830112610835575f5ffd5b813567ffffffffffffffff81111561084f5761084f6107e9565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561087e5761087e6107e9565b604052818152838201602001851015610895575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156108c1575f5ffd5b813567ffffffffffffffff8111156108d7575f5ffd5b8201608081850312156108e8575f5ffd5b6108f06107fd565b81356001600160a01b0381168114610906575f5ffd5b8152602082013567ffffffffffffffff811115610921575f5ffd5b61092d86828501610826565b602083015250604082013567ffffffffffffffff81111561094c575f5ffd5b61095886828501610826565b604083015250606082013567ffffffffffffffff811115610977575f5ffd5b61098386828501610826565b606083015250949350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610653601d8301846109c6565b6b3d9121b932b0ba37b9111d1160a11b81525f610a2e600c8301846109c6565b601160f91b81526001019392505050565b5f610a4a82856109c6565b701610112232b9b1b934b83a34b7b7111d1160791b8152610a6e60118201856109c6565b601160f91b815260010195945050505050565b5f610a8c82856109c6565b6c1610112bb2b139b4ba32911d1160991b8152610a6e600d8201856109c6565b5f610ab782856109c6565b6a16101124b6b0b3b2911d1160a91b8152610a6e600b8201856109c6565b5f610ae082846109c6565b607d60f81b81526001019392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f81610b2757610b27610b05565b505f190190565b80820281158282048414176101d7576101d7610b05565b5f60018201610b5657610b56610b05565b5060010190565b808201808211156101d7576101d7610b05565b5f82610b8a57634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000a'; - } -} diff --git a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol index de1e2d93..ed667397 100644 --- a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol +++ b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol @@ -3,14 +3,10 @@ pragma solidity >= 0.8.0; import {IUERC20SuperchainFactory} from '../../protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol'; import {DeployerHelper} from '../DeployerHelper.sol'; -import {UERC20MetadataLibraryDeployer} from './UERC20MetadataLibraryDeployer.sol'; library UERC20SuperchainFactoryDeployer { - function deploy(address uerc20MetadataLibrary) - internal - returns (IUERC20SuperchainFactory uerc20SuperchainFactory) - { - bytes memory initcode_ = abi.encodePacked(initcode(uerc20MetadataLibrary)); + function deploy() internal returns (IUERC20SuperchainFactory uerc20SuperchainFactory) { + bytes memory initcode_ = abi.encodePacked(initcode()); uerc20SuperchainFactory = IUERC20SuperchainFactory(DeployerHelper.create2(initcode_)); } @@ -20,11 +16,8 @@ library UERC20SuperchainFactoryDeployer { * @notice This initcode is generated from the following contract: * - Source Contract: src/pkgs/uerc20-factory/src/factories/UERC20SuperchainFactory.sol */ - function initcode(address UERC20MetadataLibrary) internal pure returns (bytes memory) { - return abi.encodePacked( - hex'6080604052348015600e575f5ffd5b5061258b8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806312e5f742146100435780632c0cf94714610073578063a5ea11da14610086575b5f5ffd5b61005661005136600461094b565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109d7565b610130565b61008e610405565b60405161006a9190610b50565b5f5f86868686866040516020016100b6959493929190610bda565b6040516020818303038152906040528051906020012090505f604051806020016100df90610787565b601f1982820381018352601f9091011660408190526101019190602001610c28565b604051602081830303815290604052805190602001209050610124828230610755565b98975050505050505050565b5f808061013f84860186610c3e565b91509150814614801561015c575080516001600160a01b03163314155b1561019557805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b8146146101d05760408051602080820183525f8083528482019290925282518082018452828152848401528251908101909252815260608201525b6040805160e0810182528b8152602081018b9052908101889052606081018390526001600160a01b038716608082015260ff891660a082015260c081018290525f8061021c8d82610d9d565b50602082015160018201906102319082610d9d565b506040820151600282015560608201516003820155608082015160048201805460a085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560c08301518051600584018054919093166001600160a01b031991909116178255602081015190919060068401906102b29082610d9d565b50604082015160028201906102c79082610d9d565b50606082015160038201906102dc9082610d9d565b505083516040515f94506102fd93508e92508d918d91889190602001610bda565b6040516020818303038152906040528051906020012090508060405161032290610787565b8190604051809103905ff590508015801561033f573d5f5f3e3d5ffd5b5093505f8061034e8180610794565b61035b600183015f610794565b5f60028301819055600383018190556004830180546001600160a81b03191690556005830180546001600160a01b03191681559061039c6006850182610794565b6103a9600283015f610794565b6103b6600383015f610794565b50506040516001600160a01b03871681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505050979650505050505050565b61040d6107ce565b5f6040518060e00160405290815f8201805461042890610d19565b80601f016020809104026020016040519081016040528092919081815260200182805461045490610d19565b801561049f5780601f106104765761010080835404028352916020019161049f565b820191905f5260205f20905b81548152906001019060200180831161048257829003601f168201915b505050505081526020016001820180546104b890610d19565b80601f01602080910402602001604051908101604052809291908181526020018280546104e490610d19565b801561052f5780601f106105065761010080835404028352916020019161052f565b820191905f5260205f20905b81548152906001019060200180831161051257829003601f168201915b50505091835250506002820154602080830191909152600383015460408084019190915260048401546001600160a01b038082166060860152600160a01b90910460ff166080808601919091528251908101909252600585018054909116825260068501805460a09095019492939192918401916105ac90610d19565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890610d19565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b5050505050815260200160028201805461063c90610d19565b80601f016020809104026020016040519081016040528092919081815260200182805461066890610d19565b80156106b35780601f1061068a576101008083540402835291602001916106b3565b820191905f5260205f20905b81548152906001019060200180831161069657829003601f168201915b505050505081526020016003820180546106cc90610d19565b80601f01602080910402602001604051908101604052809291908181526020018280546106f890610d19565b80156107435780601f1061071a57610100808354040283529160200191610743565b820191905f5260205f20905b81548152906001019060200180831161072657829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b61172780610e5883390190565b5080546107a090610d19565b5f825580601f106107af575050565b601f0160209004905f5260205f20908101906107cb9190610843565b50565b6040518060e0016040528060608152602001606081526020015f81526020015f81526020015f6001600160a01b031681526020015f60ff16815260200161083e60405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b80821115610857575f8155600101610844565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156108915761089161085b565b60405290565b5f82601f8301126108a6575f5ffd5b81356001600160401b038111156108bf576108bf61085b565b604051601f8201601f19908116603f011681016001600160401b03811182821017156108ed576108ed61085b565b604052818152838201602001851015610904575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610930575f5ffd5b919050565b80356001600160a01b0381168114610930575f5ffd5b5f5f5f5f5f60a0868803121561095f575f5ffd5b85356001600160401b03811115610974575f5ffd5b61098088828901610897565b95505060208601356001600160401b0381111561099b575f5ffd5b6109a788828901610897565b9450506109b660408701610920565b9250606086013591506109cb60808701610935565b90509295509295909350565b5f5f5f5f5f5f5f60c0888a0312156109ed575f5ffd5b87356001600160401b03811115610a02575f5ffd5b610a0e8a828b01610897565b97505060208801356001600160401b03811115610a29575f5ffd5b610a358a828b01610897565b965050610a4460408901610920565b945060608801359350610a5960808901610935565b925060a08801356001600160401b03811115610a73575f5ffd5b8801601f81018a13610a83575f5ffd5b80356001600160401b03811115610a98575f5ffd5b8a6020828401011115610aa9575f5ffd5b602082019350809250505092959891949750929550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b0381511682525f602082015160806020850152610b146080850182610ac0565b905060408301518482036040860152610b2d8282610ac0565b91505060608301518482036060860152610b478282610ac0565b95945050505050565b602081525f825160e06020840152610b6c610100840182610ac0565b90506020840151601f19848303016040850152610b898282610ac0565b915050604084015160608401526060840151608084015260018060a01b0360808501511660a084015260ff60a08501511660c084015260c0840151601f198483030160e0850152610b478282610aee565b60a081525f610bec60a0830188610ac0565b8281036020840152610bfe8188610ac0565b60ff969096166040840152505060608101929092526001600160a01b031660809091015292915050565b5f82518060208501845e5f920191825250919050565b5f5f60408385031215610c4f575f5ffd5b8235915060208301356001600160401b03811115610c6b575f5ffd5b830160808186031215610c7c575f5ffd5b610c8461086f565b610c8d82610935565b815260208201356001600160401b03811115610ca7575f5ffd5b610cb387828501610897565b60208301525060408201356001600160401b03811115610cd1575f5ffd5b610cdd87828501610897565b60408301525060608201356001600160401b03811115610cfb575f5ffd5b610d0787828501610897565b60608301525080925050509250929050565b600181811c90821680610d2d57607f821691505b602082108103610d4b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d9857805f5260205f20601f840160051c81016020851015610d765750805b601f840160051c820191505b81811015610d95575f8155600101610d82565b50505b505050565b81516001600160401b03811115610db657610db661085b565b610dca81610dc48454610d19565b84610d51565b6020601f821160018114610dfc575f8315610de55750848201515b5f19600385901b1c1916600184901b178455610d95565b5f84815260208120601f198516915b82811015610e2b5787850151825560209485019460019092019101610e0b565b5084821015610e4857868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe60c060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100739190810190610375565b606081015160a05280519091505f9061008c90826104ec565b50602081015160019061009f90826104ec565b5060a081015160ff1660805260c08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100e390826104ec565b50604082015160028201906100f890826104ec565b506060820151600382019061010d90826104ec565b50505060608101514603610133576101338160800151826040015161013960201b60201c565b506105a6565b6805345cdf77eb68f44c548181018181101561015c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101f0576101f06101ba565b60405290565b60405160e081016001600160401b03811182821017156101f0576101f06101ba565b5f82601f830112610227575f5ffd5b81516001600160401b03811115610240576102406101ba565b604051601f8201601f19908116603f011681016001600160401b038111828210171561026e5761026e6101ba565b604052818152838201602001851015610285575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102b7575f5ffd5b919050565b805160ff811681146102b7575f5ffd5b5f608082840312156102dc575f5ffd5b6102e46101ce565b90506102ef826102a1565b815260208201516001600160401b03811115610309575f5ffd5b61031584828501610218565b60208301525060408201516001600160401b03811115610333575f5ffd5b61033f84828501610218565b60408301525060608201516001600160401b0381111561035d575f5ffd5b61036984828501610218565b60608301525092915050565b5f60208284031215610385575f5ffd5b81516001600160401b0381111561039a575f5ffd5b820160e081850312156103ab575f5ffd5b6103b36101f6565b81516001600160401b038111156103c8575f5ffd5b6103d486828501610218565b82525060208201516001600160401b038111156103ef575f5ffd5b6103fb86828501610218565b6020830152506040828101519082015260608083015190820152610421608083016102a1565b608082015261043260a083016102bc565b60a082015260c08201516001600160401b0381111561044f575f5ffd5b61045b868285016102cc565b60c083015250949350505050565b600181811c9082168061047d57607f821691505b60208210810361049b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b557805f5260205f20601f840160051c810160208510156104c65750805b601f840160051c820191505b818110156104e5575f81556001016104d2565b5050505050565b81516001600160401b03811115610505576105056101ba565b610519816105138454610469565b846104a1565b6020601f82116001811461054b575f83156105345750848201515b5f19600385901b1c1916600184901b1784556104e5565b5f84815260208120601f198516915b8281101561057a578785015182556020948501946001909201910161055a565b508482101561059757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a0516111606105c75f395f6102ae01525f6101cc01526111605ff3fe608060405234801561000f575f5ffd5b506004361061011c575f3560e01c8063392f37e9116100a9578063a9059cbb1161006e578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610296578063ef126967146102a9578063ef31f2cd146102d0575f5ffd5b8063392f37e9146101fe5780633c130d901461021657806370a082311461021e5780637ecebe001461024357806395d89b4114610268575f5ffd5b806318bf5077116100ef57806318bf50771461018a57806323b872dd1461019f5780632b8c49e3146101b2578063313ce567146101c55780633644e515146101f6575f5ffd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b5f5ffd5b61013361012e366004610dcd565b6102f6565b60405190151581526020015b60405180910390f35b610150610347565b60405161013f9190610e29565b61013361016b366004610e56565b6103d6565b6805345cdf77eb68f44c545b60405190815260200161013f565b61019d610198366004610e56565b610455565b005b6101336101ad366004610e7e565b6104df565b61019d6101c0366004610e56565b61059b565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161013f565b61017c610618565b610206610694565b60405161013f9493929190610eb8565b61015061084b565b61017c61022c366004610f0c565b6387a211a2600c9081525f91909152602090205490565b61017c610251366004610f0c565b6338377508600c9081525f91909152602090205490565b610150610a98565b61013361027e366004610e56565b610aa7565b61019d610291366004610f25565b610b0b565b61017c6102a4366004610f92565b610cbf565b61017c7f000000000000000000000000000000000000000000000000000000000000000081565b6102de6028602160991b0181565b6040516001600160a01b03909116815260200161013f565b5f6001600160e01b03198216630cccc66560e21b148061032657506001600160e01b031982166336372b0760e01b145b8061034157506001600160e01b031982166301ffc9a760e01b145b92915050565b60605f805461035590610fc3565b80601f016020809104026020016040519081016040528092919081815260200182805461038190610fc3565b80156103cc5780601f106103a3576101008083540402835291602001916103cc565b820191905f5260205f20905b8154815290600101906020018083116103af57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761040757633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b011461049057604051632e0d831f60e01b81523360048201526028602160991b0160248201526044015b60405180910390fd5b61049a8282610d03565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105345733602052637f5e9f208117600c526034600c208054801915610531578085111561052b576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c2080548085111561055a5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f5160206111345f395f51905f52602080a3505060019392505050565b336028602160991b01146105d157604051632e0d831f60e01b81523360048201526028602160991b016024820152604401610487565b6105db8282610d6c565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd4906020016104d3565b5f80610622610347565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916106b290610fc3565b80601f01602080910402602001604051908101604052809291908181526020018280546106de90610fc3565b80156107295780601f1061070057610100808354040283529160200191610729565b820191905f5260205f20905b81548152906001019060200180831161070c57829003601f168201915b50505050509080600201805461073e90610fc3565b80601f016020809104026020016040519081016040528092919081815260200182805461076a90610fc3565b80156107b55780601f1061078c576101008083540402835291602001916107b5565b820191905f5260205f20905b81548152906001019060200180831161079857829003601f168201915b5050505050908060030180546107ca90610fc3565b80601f01602080910402602001604051908101604052809291908181526020018280546107f690610fc3565b80156108415780601f1061081857610100808354040283529160200191610841565b820191905f5260205f20905b81548152906001019060200180831161082457829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b03168252600380546060939291602084019161087c90610fc3565b80601f01602080910402602001604051908101604052809291908181526020018280546108a890610fc3565b80156108f35780601f106108ca576101008083540402835291602001916108f3565b820191905f5260205f20905b8154815290600101906020018083116108d657829003601f168201915b5050505050815260200160028201805461090c90610fc3565b80601f016020809104026020016040519081016040528092919081815260200182805461093890610fc3565b80156109835780601f1061095a57610100808354040283529160200191610983565b820191905f5260205f20905b81548152906001019060200180831161096657829003601f168201915b5050505050815260200160038201805461099c90610fc3565b80601f01602080910402602001604051908101604052809291908181526020018280546109c890610fc3565b8015610a135780601f106109ea57610100808354040283529160200191610a13565b820191905f5260205f20905b8154815290600101906020018083116109f657829003601f168201915b505050919092525050604051631c64c49160e21b815273', - UERC20MetadataLibrary, - hex'9263719312449250610a5291600401610ffb565b5f60405180830381865af4158015610a6c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a939190810190611080565b905090565b60606001805461035590610fc3565b5f6387a211a2600c52335f526020600c20805480841115610acf5763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f5160206111345f395f51905f52602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba31885191517610b3b57633f68539a5f526004601cfd5b5f610b44610347565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b8357631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610c6b5763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610ce857505f19610341565b50602052637f5e9f20600c9081525f91909152603490205490565b6805345cdf77eb68f44c5481810181811015610d265763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f5160206111345f395f51905f52602080a35050565b6387a211a2600c52815f526020600c20805480831115610d935763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f5160206111345f395f51905f52602083a35050565b5f60208284031215610ddd575f5ffd5b81356001600160e01b031981168114610df4575f5ffd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610df46020830184610dfb565b80356001600160a01b0381168114610e51575f5ffd5b919050565b5f5f60408385031215610e67575f5ffd5b610e7083610e3b565b946020939093013593505050565b5f5f5f60608486031215610e90575f5ffd5b610e9984610e3b565b9250610ea760208501610e3b565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f90610edb90830186610dfb565b8281036040840152610eed8186610dfb565b90508281036060840152610f018185610dfb565b979650505050505050565b5f60208284031215610f1c575f5ffd5b610df482610e3b565b5f5f5f5f5f5f5f60e0888a031215610f3b575f5ffd5b610f4488610e3b565b9650610f5260208901610e3b565b95506040880135945060608801359350608088013560ff81168114610f75575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215610fa3575f5ffd5b610fac83610e3b565b9150610fba60208401610e3b565b90509250929050565b600181811c90821680610fd757607f821691505b602082108103610ff557634e487b7160e01b5f52602260045260245ffd5b50919050565b602080825282516001600160a01b031682820152820151608060408301525f9061102860a0840182610dfb565b90506040840151601f198483030160608501526110458282610dfb565b9150506060840151601f198483030160808501526110638282610dfb565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215611090575f5ffd5b815167ffffffffffffffff8111156110a6575f5ffd5b8201601f810184136110b6575f5ffd5b805167ffffffffffffffff8111156110d0576110d061106c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156110ff576110ff61106c565b604052818152828201602001861015611116575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081c000aa164736f6c634300081c000a' - ); + function initcode() internal pure returns (bytes memory) { + return + hex'6080604052348015600e575f5ffd5b50612d7f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806312e5f742146100435780632c0cf94714610073578063a5ea11da14610086575b5f5ffd5b61005661005136600461094f565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109db565b610130565b61008e610409565b60405161006a9190610b54565b5f5f86868686866040516020016100b6959493929190610bde565b6040516020818303038152906040528051906020012090505f604051806020016100df9061078b565b601f1982820381018352601f9091011660408190526101019190602001610c2c565b604051602081830303815290604052805190602001209050610124828230610759565b98975050505050505050565b5f808061013f84860186610c42565b91509150814614801561015c575080516001600160a01b03163314155b1561019557805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b80516040515f916101b0918d918d918d918891602001610bde565b604051602081830303815290604052805190602001209050824614610207575f8083526040805160208082018352838252808601919091528151808201835283815282860152815190810190915290815260608301525b6040805160e0810182528c8152602081018c9052908101899052606081018490526001600160a01b038816608082015260ff8a1660a082015260c081018390525f806102538e82610da1565b50602082015160018201906102689082610da1565b506040820151600282015560608201516003820155608082015160048201805460a085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560c08301518051600584018054919093166001600160a01b031991909116178255602081015190919060068401906102e99082610da1565b50604082015160028201906102fe9082610da1565b50606082015160038201906103139082610da1565b505050905050806040516103269061078b565b8190604051809103905ff5905080158015610343573d5f5f3e3d5ffd5b5093505f806103528180610798565b61035f600183015f610798565b5f60028301819055600383018190556004830180546001600160a81b03191690556005830180546001600160a01b0319168155906103a06006850182610798565b6103ad600283015f610798565b6103ba600383015f610798565b50506040516001600160a01b03871681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505050979650505050505050565b6104116107d2565b5f6040518060e00160405290815f8201805461042c90610d1d565b80601f016020809104026020016040519081016040528092919081815260200182805461045890610d1d565b80156104a35780601f1061047a576101008083540402835291602001916104a3565b820191905f5260205f20905b81548152906001019060200180831161048657829003601f168201915b505050505081526020016001820180546104bc90610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546104e890610d1d565b80156105335780601f1061050a57610100808354040283529160200191610533565b820191905f5260205f20905b81548152906001019060200180831161051657829003601f168201915b50505091835250506002820154602080830191909152600383015460408084019190915260048401546001600160a01b038082166060860152600160a01b90910460ff166080808601919091528251908101909252600585018054909116825260068501805460a09095019492939192918401916105b090610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546105dc90610d1d565b80156106275780601f106105fe57610100808354040283529160200191610627565b820191905f5260205f20905b81548152906001019060200180831161060a57829003601f168201915b5050505050815260200160028201805461064090610d1d565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90610d1d565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016003820180546106d090610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90610d1d565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611f1780610e5c83390190565b5080546107a490610d1d565b5f825580601f106107b3575050565b601f0160209004905f5260205f20908101906107cf9190610847565b50565b6040518060e0016040528060608152602001606081526020015f81526020015f81526020015f6001600160a01b031681526020015f60ff16815260200161084260405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b8082111561085b575f8155600101610848565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156108955761089561085f565b60405290565b5f82601f8301126108aa575f5ffd5b81356001600160401b038111156108c3576108c361085f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156108f1576108f161085f565b604052818152838201602001851015610908575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610934575f5ffd5b919050565b80356001600160a01b0381168114610934575f5ffd5b5f5f5f5f5f60a08688031215610963575f5ffd5b85356001600160401b03811115610978575f5ffd5b6109848882890161089b565b95505060208601356001600160401b0381111561099f575f5ffd5b6109ab8882890161089b565b9450506109ba60408701610924565b9250606086013591506109cf60808701610939565b90509295509295909350565b5f5f5f5f5f5f5f60c0888a0312156109f1575f5ffd5b87356001600160401b03811115610a06575f5ffd5b610a128a828b0161089b565b97505060208801356001600160401b03811115610a2d575f5ffd5b610a398a828b0161089b565b965050610a4860408901610924565b945060608801359350610a5d60808901610939565b925060a08801356001600160401b03811115610a77575f5ffd5b8801601f81018a13610a87575f5ffd5b80356001600160401b03811115610a9c575f5ffd5b8a6020828401011115610aad575f5ffd5b602082019350809250505092959891949750929550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b0381511682525f602082015160806020850152610b186080850182610ac4565b905060408301518482036040860152610b318282610ac4565b91505060608301518482036060860152610b4b8282610ac4565b95945050505050565b602081525f825160e06020840152610b70610100840182610ac4565b90506020840151601f19848303016040850152610b8d8282610ac4565b915050604084015160608401526060840151608084015260018060a01b0360808501511660a084015260ff60a08501511660c084015260c0840151601f198483030160e0850152610b4b8282610af2565b60a081525f610bf060a0830188610ac4565b8281036020840152610c028188610ac4565b60ff969096166040840152505060608101929092526001600160a01b031660809091015292915050565b5f82518060208501845e5f920191825250919050565b5f5f60408385031215610c53575f5ffd5b8235915060208301356001600160401b03811115610c6f575f5ffd5b830160808186031215610c80575f5ffd5b610c88610873565b610c9182610939565b815260208201356001600160401b03811115610cab575f5ffd5b610cb78782850161089b565b60208301525060408201356001600160401b03811115610cd5575f5ffd5b610ce18782850161089b565b60408301525060608201356001600160401b03811115610cff575f5ffd5b610d0b8782850161089b565b60608301525080925050509250929050565b600181811c90821680610d3157607f821691505b602082108103610d4f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d9c57805f5260205f20601f840160051c81016020851015610d7a5750805b601f840160051c820191505b81811015610d99575f8155600101610d86565b50505b505050565b81516001600160401b03811115610dba57610dba61085f565b610dce81610dc88454610d1d565b84610d55565b6020601f821160018114610e00575f8315610de95750848201515b5f19600385901b1c1916600184901b178455610d99565b5f84815260208120601f198516915b82811015610e2f5787850151825560209485019460019092019101610e0f565b5084821015610e4c57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe60c060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100739190810190610375565b606081015160a05280519091505f9061008c90826104ec565b50602081015160019061009f90826104ec565b5060a081015160ff1660805260c08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100e390826104ec565b50604082015160028201906100f890826104ec565b506060820151600382019061010d90826104ec565b50505060608101514603610133576101338160800151826040015161013960201b60201c565b506105a6565b6805345cdf77eb68f44c548181018181101561015c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101f0576101f06101ba565b60405290565b60405160e081016001600160401b03811182821017156101f0576101f06101ba565b5f82601f830112610227575f5ffd5b81516001600160401b03811115610240576102406101ba565b604051601f8201601f19908116603f011681016001600160401b038111828210171561026e5761026e6101ba565b604052818152838201602001851015610285575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102b7575f5ffd5b919050565b805160ff811681146102b7575f5ffd5b5f608082840312156102dc575f5ffd5b6102e46101ce565b90506102ef826102a1565b815260208201516001600160401b03811115610309575f5ffd5b61031584828501610218565b60208301525060408201516001600160401b03811115610333575f5ffd5b61033f84828501610218565b60408301525060608201516001600160401b0381111561035d575f5ffd5b61036984828501610218565b60608301525092915050565b5f60208284031215610385575f5ffd5b81516001600160401b0381111561039a575f5ffd5b820160e081850312156103ab575f5ffd5b6103b36101f6565b81516001600160401b038111156103c8575f5ffd5b6103d486828501610218565b82525060208201516001600160401b038111156103ef575f5ffd5b6103fb86828501610218565b6020830152506040828101519082015260608083015190820152610421608083016102a1565b608082015261043260a083016102bc565b60a082015260c08201516001600160401b0381111561044f575f5ffd5b61045b868285016102cc565b60c083015250949350505050565b600181811c9082168061047d57607f821691505b60208210810361049b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b557805f5260205f20601f840160051c810160208510156104c65750805b601f840160051c820191505b818110156104e5575f81556001016104d2565b5050505050565b81516001600160401b03811115610505576105056101ba565b610519816105138454610469565b846104a1565b6020601f82116001811461054b575f83156105345750848201515b5f19600385901b1c1916600184901b1784556104e5565b5f84815260208120601f198516915b8281101561057a578785015182556020948501946001909201910161055a565b508482101561059757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a0516119506105c75f395f6102ae01525f6101cc01526119505ff3fe608060405234801561000f575f5ffd5b506004361061011c575f3560e01c8063392f37e9116100a9578063a9059cbb1161006e578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610296578063ef126967146102a9578063ef31f2cd146102d0575f5ffd5b8063392f37e9146101fe5780633c130d901461021657806370a082311461021e5780637ecebe001461024357806395d89b4114610268575f5ffd5b806318bf5077116100ef57806318bf50771461018a57806323b872dd1461019f5780632b8c49e3146101b2578063313ce567146101c55780633644e515146101f6575f5ffd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b5f5ffd5b61013361012e3660046114df565b6102f6565b60405190151581526020015b60405180910390f35b610150610347565b60405161013f9190611534565b61013361016b366004611561565b6103d6565b6805345cdf77eb68f44c545b60405190815260200161013f565b61019d610198366004611561565b610455565b005b6101336101ad366004611589565b6104df565b61019d6101c0366004611561565b61059c565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161013f565b61017c610619565b610206610695565b60405161013f94939291906115c3565b61015061084c565b61017c61022c366004611617565b6387a211a2600c9081525f91909152602090205490565b61017c610251366004611617565b6338377508600c9081525f91909152602090205490565b610150610a2e565b61013361027e366004611561565b610a3d565b61019d610291366004611630565b610aa1565b61017c6102a436600461169d565b610c55565b61017c7f000000000000000000000000000000000000000000000000000000000000000081565b6102de6028602160991b0181565b6040516001600160a01b03909116815260200161013f565b5f6001600160e01b03198216630cccc66560e21b148061032657506001600160e01b031982166336372b0760e01b145b8061034157506001600160e01b031982166301ffc9a760e01b145b92915050565b60605f8054610355906116ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610381906116ce565b80156103cc5780601f106103a3576101008083540402835291602001916103cc565b820191905f5260205f20905b8154815290600101906020018083116103af57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761040757633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b011461049057604051632e0d831f60e01b81523360048201526028602160991b0160248201526044015b60405180910390fd5b61049a8282610c99565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105345733602052637f5e9f208117600c526034600c208054801915610531578085111561052b576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c2080548085111561055a5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f5160206119245f395f51905f52602080a3505060015b9392505050565b336028602160991b01146105d257604051632e0d831f60e01b81523360048201526028602160991b016024820152604401610487565b6105dc8282610d02565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd4906020016104d3565b5f80610623610347565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916106b3906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546106df906116ce565b801561072a5780601f106107015761010080835404028352916020019161072a565b820191905f5260205f20905b81548152906001019060200180831161070d57829003601f168201915b50505050509080600201805461073f906116ce565b80601f016020809104026020016040519081016040528092919081815260200182805461076b906116ce565b80156107b65780601f1061078d576101008083540402835291602001916107b6565b820191905f5260205f20905b81548152906001019060200180831161079957829003601f168201915b5050505050908060030180546107cb906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546107f7906116ce565b80156108425780601f1061081957610100808354040283529160200191610842565b820191905f5260205f20905b81548152906001019060200180831161082557829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b0316825260038054606093610a299390929091602084019190610884906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546108b0906116ce565b80156108fb5780601f106108d2576101008083540402835291602001916108fb565b820191905f5260205f20905b8154815290600101906020018083116108de57829003601f168201915b50505050508152602001600282018054610914906116ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610940906116ce565b801561098b5780601f106109625761010080835404028352916020019161098b565b820191905f5260205f20905b81548152906001019060200180831161096e57829003601f168201915b505050505081526020016003820180546109a4906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546109d0906116ce565b8015610a1b5780601f106109f257610100808354040283529160200191610a1b565b820191905f5260205f20905b8154815290600101906020018083116109fe57829003601f168201915b505050505081525050610d63565b905090565b606060018054610355906116ce565b5f6387a211a2600c52335f526020600c20805480841115610a655763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f5160206119245f395f51905f52602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba31885191517610ad157633f68539a5f526004601cfd5b5f610ada610347565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b1957631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610c015763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610c7e57505f19610341565b50602052637f5e9f20600c9081525f91909152603490205490565b6805345cdf77eb68f44c5481810181811015610cbc5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f5160206119245f395f51905f52602080a35050565b6387a211a2600c52815f526020600c20805480831115610d295763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f5160206119245f395f51905f52602083a35050565b6060610d76610d7183610d9c565b610eb3565b604051602001610d86919061171d565b6040516020818303038152906040529050919050565b60605f610db4835f01516001600160a01b0316610ed9565b604051602001610dc4919061174e565b60405160208183030381529060405290505f8360200151511115610e135780610df08460200151610f87565b604051602001610e0192919061177f565b60405160208183030381529060405290505b60408301515115610e4f5780610e2c8460400151610f87565b604051602001610e3d9291906117c1565b60405160208183030381529060405290505b60608301515115610e8b5780610e688460600151610f87565b604051602001610e799291906117ec565b60405160208183030381529060405290505b80604051602001610e9c9190611815565b604051602081830303815290604052915050919050565b6060610341826040518060600160405280604081526020016118e46040913960016111d9565b60605f610ee583611354565b6028602282012090915060601c60295b6001811115610f7e57600782600f16118015610f2a57506060838281518110610f2057610f20611831565b016020015160f81c115b15610f6757602060f81b838281518110610f4657610f46611831565b0160200180516001600160f81b0319908116909218909116905f82901a9053505b60049190911c90610f7781611859565b9050610ef5565b50909392505050565b805160609082905f90610f9b90600261186e565b67ffffffffffffffff811115610fb357610fb3611885565b6040519080825280601f01601f191660200182016040528015610fdd576020820181803683370190505b5090505f805b83518110156111c2575f610ffa8583016020015190565b90506b100000000000000400003700600160f883901c1b161561118457601760fa1b848461102781611899565b95508151811061103957611039611831565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b036110a157603160f91b848461107481611899565b95508151811061108657611086611831565b60200101906001600160f81b03191690815f1a9053506111b9565b6001600160f81b03198116600960f81b036110c657601d60fa1b848461107481611899565b6001600160f81b03198116600560f91b036110eb57603760f91b848461107481611899565b6001600160f81b03198116600360fa1b0361111057603360f91b848461107481611899565b6001600160f81b03198116600d60f81b0361113557603960f91b848461107481611899565b6001600160f81b03198116601760fa1b0361115a57601760fa1b848461107481611899565b6001600160f81b03198116601160f91b0361117f57601160f91b848461107481611899565b6111b9565b80848461119081611899565b9550815181106111a2576111a2611831565b60200101906001600160f81b03191690815f1a9053505b50600101610fe3565b50808252603f01601f191681016040529392505050565b606083515f036111f7575060408051602081019091525f8152610595565b5f826112275760038551600461120d919061186e565b6112189060026118b1565b61122291906118c4565b61124c565b60038551600261123791906118b1565b61124191906118c4565b61124c90600461186e565b90505f8167ffffffffffffffff81111561126857611268611885565b6040519080825280601f01601f191660200182016040528015611292576020820181803683370190505b509050600185016020820187885189016020810180515f82525b82841015611307576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506112ac565b9052505085156113485760038851066001811461132b576002811461133e57611346565b603d6001830353603d6002830353611346565b603d60018303535b505b50909695505050505050565b60606103416001600160a01b03831660146060825f61137484600261186e565b61137f9060026118b1565b67ffffffffffffffff81111561139757611397611885565b6040519080825280601f01601f1916602001820160405280156113c1576020820181803683370190505b509050600360fc1b815f815181106113db576113db611831565b60200101906001600160f81b03191690815f1a905350600f60fb1b8160018151811061140957611409611831565b60200101906001600160f81b03191690815f1a9053505f61142b85600261186e565b6114369060016118b1565b90505b60018111156114ad576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061146a5761146a611831565b1a60f81b82828151811061148057611480611831565b60200101906001600160f81b03191690815f1a90535060049290921c916114a681611859565b9050611439565b5081156114d75760405163e22e27eb60e01b81526004810186905260248101859052604401610487565b949350505050565b5f602082840312156114ef575f5ffd5b81356001600160e01b031981168114610595575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105956020830184611506565b80356001600160a01b038116811461155c575f5ffd5b919050565b5f5f60408385031215611572575f5ffd5b61157b83611546565b946020939093013593505050565b5f5f5f6060848603121561159b575f5ffd5b6115a484611546565b92506115b260208501611546565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f906115e690830186611506565b82810360408401526115f88186611506565b9050828103606084015261160c8185611506565b979650505050505050565b5f60208284031215611627575f5ffd5b61059582611546565b5f5f5f5f5f5f5f60e0888a031215611646575f5ffd5b61164f88611546565b965061165d60208901611546565b95506040880135945060608801359350608088013560ff81168114611680575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156116ae575f5ffd5b6116b783611546565b91506116c560208401611546565b90509250929050565b600181811c908216806116e257607f821691505b60208210810361170057634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610595601d830184611706565b6b3d9121b932b0ba37b9111d1160a11b81525f61176e600c830184611706565b601160f91b81526001019392505050565b5f61178a8285611706565b701610112232b9b1b934b83a34b7b7111d1160791b81526117ae6011820185611706565b601160f91b815260010195945050505050565b5f6117cc8285611706565b6c1610112bb2b139b4ba32911d1160991b81526117ae600d820185611706565b5f6117f78285611706565b6a16101124b6b0b3b2911d1160a91b81526117ae600b820185611706565b5f6118208284611706565b607d60f81b81526001019392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8161186757611867611845565b505f190190565b808202811582820484141761034157610341611845565b634e487b7160e01b5f52604160045260245ffd5b5f600182016118aa576118aa611845565b5060010190565b8082018082111561034157610341611845565b5f826118de57634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081c000aa164736f6c634300081c000a'; } } diff --git a/src/briefcase/protocols/uerc20-factory/libraries/UERC20MetadataLibrary.sol b/src/briefcase/protocols/uerc20-factory/libraries/UERC20MetadataLibrary.sol index 015b0407..50100aa0 100644 --- a/src/briefcase/protocols/uerc20-factory/libraries/UERC20MetadataLibrary.sol +++ b/src/briefcase/protocols/uerc20-factory/libraries/UERC20MetadataLibrary.sol @@ -19,7 +19,7 @@ library UERC20MetadataLibrary { /// @notice Generates a base64 encoded JSON string of the token metadata /// @param metadata The token metadata /// @return The base64 encoded JSON string - function toJSON(UERC20Metadata memory metadata) public pure returns (string memory) { + function toJSON(UERC20Metadata memory metadata) internal pure returns (string memory) { return string(abi.encodePacked('data:application/json;base64,', Base64.encode(displayMetadata(metadata)))); } diff --git a/src/pkgs/uerc20-factory b/src/pkgs/uerc20-factory index a1efcf9e..5b69661a 160000 --- a/src/pkgs/uerc20-factory +++ b/src/pkgs/uerc20-factory @@ -1 +1 @@ -Subproject commit a1efcf9e457bdd958902e43aa003501e1a4c9e7a +Subproject commit 5b69661a883f69bf061cb5f58f7898883eb5688a From cfce66fe3a4d39f5491deaf7bf3420c7ed1fbcd1 Mon Sep 17 00:00:00 2001 From: gretzke Date: Thu, 22 May 2025 21:14:40 +0200 Subject: [PATCH 06/13] enforce compiler profile --- foundry.toml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/foundry.toml b/foundry.toml index 02a68f40..96114089 100644 --- a/foundry.toml +++ b/foundry.toml @@ -65,6 +65,8 @@ compilation_restrictions = [ { paths = "src/pkgs/swap-router-contracts/contracts/**", version = "0.7.6", via_ir = false, optimizer_runs = 1000000 }, # X { paths = "src/pkgs/uniswapx/src/base/BlockNumberish.sol", version = "0.8.24" }, + # uerc20 + { paths = "src/pkgs/uerc20-factory/src/factories/**", version = "0.8.28", optimizer_runs = 50000000 }, # Briefcase { paths = "src/briefcase/protocols/v2-periphery/libraries/UniswapV2Library.sol", version = "<0.8.0" }, { paths = "src/briefcase/protocols/lib-external/solidity-lib/**", version = "<0.8.0" }, From a2c85f5090c18b25fc3419f448fd6d094bfff274 Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Tue, 3 Jun 2025 14:36:22 -0400 Subject: [PATCH 07/13] pull --- foundry.toml | 3 +- script/cli/src/screens/home.rs | 4 +- script/cli/src/screens/mod.rs | 2 + .../register_contract/get_contract_info.rs | 2 - .../cli/src/screens/register_contract/mod.rs | 1 - .../enter_address.rs | 26 ++- script/cli/src/screens/shared/mod.rs | 1 + script/cli/src/screens/verify_contract/mod.rs | 1 + .../verify_contract/verify_contract_screen.rs | 197 ++++++++++++++++++ script/cli/src/state_manager.rs | 4 +- script/cli/src/workflows/mod.rs | 1 + .../workflows/register/register_contract.rs | 16 +- script/cli/src/workflows/verify/mod.rs | 1 + .../src/workflows/verify/verify_contract.rs | 119 +++++++++++ 14 files changed, 358 insertions(+), 20 deletions(-) rename script/cli/src/screens/{register_contract => shared}/enter_address.rs (69%) create mode 100644 script/cli/src/screens/verify_contract/mod.rs create mode 100644 script/cli/src/screens/verify_contract/verify_contract_screen.rs create mode 100644 script/cli/src/workflows/verify/mod.rs create mode 100644 script/cli/src/workflows/verify/verify_contract.rs diff --git a/foundry.toml b/foundry.toml index 96114089..b607d373 100644 --- a/foundry.toml +++ b/foundry.toml @@ -50,7 +50,8 @@ compilation_restrictions = [ { paths = "src/pkgs/v3-periphery/contracts/NonfungiblePositionManager.sol", optimizer_runs = 2000 }, { paths = "src/pkgs/v3-periphery/contracts/NonfungibleTokenPositionDescriptor.sol", optimizer_runs = 1000 }, { paths = "src/pkgs/v3-periphery/contracts/libraries/NFTDescriptor.sol", optimizer_runs = 1000 }, - { paths = "src/pkgs/v3-periphery/contracts/*.sol", version = "0.7.6", via_ir = false, max_optimizer_runs = 1000000 }, + { paths = "src/pkgs/v3-periphery/contracts/SwapRouter.sol", version = "0.7.6", via_ir = false, min_optimizer_runs = 1000000 }, + { paths = "src/pkgs/v3-periphery/contracts/V3Migrator.sol", version = "0.7.6", via_ir = false, min_optimizer_runs = 1000000 }, { paths = "src/pkgs/v3-periphery/**/libraries/**", version = "<0.8.0" }, # permit2 { paths = "src/pkgs/permit2/src/**", version = "0.8.17", via_ir = true }, diff --git a/script/cli/src/screens/home.rs b/script/cli/src/screens/home.rs index d9ea8e9c..8bc589ed 100644 --- a/script/cli/src/screens/home.rs +++ b/script/cli/src/screens/home.rs @@ -4,10 +4,10 @@ use crate::screens::types::select::SelectComponent; use crate::state_manager::STATE_MANAGER; use crate::ui::Buffer; use crate::workflows::deploy::deploy_contracts::DeployContractsWorkflow; -use crate::workflows::error_workflow::ErrorWorkflow; use crate::workflows::{ config::create_config::CreateConfigWorkflow, register::register_contract::RegisterContractWorkflow, + verify::verify_contract::VerifyContractWorkflow, }; use crossterm::event::Event; @@ -64,7 +64,7 @@ impl Screen for HomeScreen { DeployContractsWorkflow::new(), )]))), 2 | 3 => Ok(ScreenResult::NextScreen(Some(vec![Box::new( - ErrorWorkflow::new("Coming soon!".to_string()), + VerifyContractWorkflow::new(), )]))), 4 => Ok(ScreenResult::NextScreen(Some(vec![Box::new( RegisterContractWorkflow::new(), diff --git a/script/cli/src/screens/mod.rs b/script/cli/src/screens/mod.rs index 6491fa0c..cd11e146 100644 --- a/script/cli/src/screens/mod.rs +++ b/script/cli/src/screens/mod.rs @@ -6,6 +6,8 @@ pub mod shared; pub mod register_contract; // screens used by the deploy contracts workflow pub mod deploy_contracts; +// screens used by the verify contract workflow +pub mod verify_contract; // home screen pub mod home; diff --git a/script/cli/src/screens/register_contract/get_contract_info.rs b/script/cli/src/screens/register_contract/get_contract_info.rs index f36f9c60..ea0edd3a 100644 --- a/script/cli/src/screens/register_contract/get_contract_info.rs +++ b/script/cli/src/screens/register_contract/get_contract_info.rs @@ -8,8 +8,6 @@ use alloy::primitives::Address; use crossterm::event::Event; use std::sync::{Arc, Mutex}; -// Tests the connection to the rpc url, fails if the connection is not successful or the chain id doesn't match the expected chain id -// chain id and rpc url MUST be set before this screen is rendered pub struct GetContractInfoScreen { execution_status: Arc>, execution_message: Arc>, diff --git a/script/cli/src/screens/register_contract/mod.rs b/script/cli/src/screens/register_contract/mod.rs index 03fb9fb1..f605a436 100644 --- a/script/cli/src/screens/register_contract/mod.rs +++ b/script/cli/src/screens/register_contract/mod.rs @@ -1,2 +1 @@ -pub mod enter_address; pub mod get_contract_info; diff --git a/script/cli/src/screens/register_contract/enter_address.rs b/script/cli/src/screens/shared/enter_address.rs similarity index 69% rename from script/cli/src/screens/register_contract/enter_address.rs rename to script/cli/src/screens/shared/enter_address.rs index d8c0f579..ab7aaa0b 100644 --- a/script/cli/src/screens/register_contract/enter_address.rs +++ b/script/cli/src/screens/shared/enter_address.rs @@ -1,23 +1,28 @@ use crate::screens::screen_manager::{Screen, ScreenResult}; use crate::screens::types::text_input::TextInputComponent; -use crate::state_manager::STATE_MANAGER; use crate::ui::Buffer; use crate::util::screen_util::validate_address; use crossterm::event::Event; +type Hook = Box Result> + Send>; + pub struct EnterAddressScreen { text_input: TextInputComponent, + title: String, + hook: Option, } impl EnterAddressScreen { - pub fn new() -> Self { + pub fn new(title: String, hook: Option) -> Self { EnterAddressScreen { text_input: TextInputComponent::new(false, "".to_string(), validate_address), + title, + hook, } } fn render_title(&self, buffer: &mut Buffer) { - buffer.append_row_text("Please enter the contract address to register\n"); + buffer.append_row_text(&self.title); } fn render_instructions(&self, buffer: &mut Buffer) { @@ -35,14 +40,13 @@ impl Screen for EnterAddressScreen { fn handle_input(&mut self, event: Event) -> Result> { let address = self.text_input.handle_input(event); - if address.is_some() && address.clone().unwrap().len() == 42 { - STATE_MANAGER - .workflow_state - .lock() - .unwrap() - .register_contract_data - .address = address; - return Ok(ScreenResult::NextScreen(None)); + if let Some(address) = address { + if address.len() == 42 { + if let Some(hook) = &self.hook { + return hook(address); + } + return Ok(ScreenResult::NextScreen(None)); + } } Ok(ScreenResult::Continue) } diff --git a/script/cli/src/screens/shared/mod.rs b/script/cli/src/screens/shared/mod.rs index e6912244..c2f871be 100644 --- a/script/cli/src/screens/shared/mod.rs +++ b/script/cli/src/screens/shared/mod.rs @@ -1,5 +1,6 @@ pub mod block_explorer; pub mod chain_id; +pub mod enter_address; pub mod enter_explorer_api_key; pub mod error_screen; pub mod generic_multi_select; diff --git a/script/cli/src/screens/verify_contract/mod.rs b/script/cli/src/screens/verify_contract/mod.rs new file mode 100644 index 00000000..61b3c6d9 --- /dev/null +++ b/script/cli/src/screens/verify_contract/mod.rs @@ -0,0 +1 @@ +pub mod verify_contract_screen; diff --git a/script/cli/src/screens/verify_contract/verify_contract_screen.rs b/script/cli/src/screens/verify_contract/verify_contract_screen.rs new file mode 100644 index 00000000..46e5102b --- /dev/null +++ b/script/cli/src/screens/verify_contract/verify_contract_screen.rs @@ -0,0 +1,197 @@ +use crate::libs::explorer::{ExplorerApiLib, SupportedExplorerType}; +use crate::screens::screen_manager::{Screen, ScreenResult}; +use crate::screens::types::select::SelectComponent; +use crate::state_manager::STATE_MANAGER; +use crate::ui::{get_spinner_frame, Buffer}; +use alloy::primitives::Address; +use crossterm::event::Event; +use regex::Regex; +use std::io::BufRead; +use std::process::Command; +use std::sync::{Arc, Mutex}; + +pub struct VerifyContractData { + pub address: Option, +} + +pub struct VerifyContractScreen { + execution_status: Arc>, + execution_message: Arc>, + select: SelectComponent, +} + +#[derive(PartialEq, Debug)] +enum ExecutionStatus { + Pending, + Success, + Failed, +} + +impl VerifyContractScreen { + pub fn new() -> Result> { + let screen = VerifyContractScreen { + select: SelectComponent::new(vec![ + "Enter another address".to_string(), + "Exit".to_string(), + ]), + execution_status: Arc::new(Mutex::new(ExecutionStatus::Pending)), + execution_message: Arc::new(Mutex::new(String::new())), + }; + + let chain_id = STATE_MANAGER + .workflow_state + .lock()? + .chain_id + .clone() + .unwrap(); + + let rpc_url = STATE_MANAGER + .workflow_state + .lock()? + .web3 + .clone() + .unwrap() + .rpc_url; + + let execution_status = Arc::clone(&screen.execution_status); + let execution_message = Arc::clone(&screen.execution_message); + + let explorer = STATE_MANAGER + .workflow_state + .lock()? + .block_explorer + .clone() + .unwrap(); + + let explorer_api_key = STATE_MANAGER + .workflow_state + .lock()? + .explorer_api_key + .clone() + .unwrap(); + + let explorer_api = ExplorerApiLib::new(explorer, explorer_api_key)?; + + let contract_address = STATE_MANAGER + .workflow_state + .lock()? + .verify_contract_data + .address + .clone() + .unwrap() + .parse::
()?; + + tokio::spawn(async move { + let mut command = &mut Command::new("forge"); + command = command + .arg("verify-contract") + .arg(format!("--chain={}", chain_id)) + .arg(format!("--rpc-url={}", rpc_url)) + .arg("-vvvv") + .arg("--watch") + .arg(format!( + "--verifier={}", + if explorer_api.explorer.explorer_type == SupportedExplorerType::Blockscout { + "blockscout" + } else { + // custom also works for etherscan + "custom" + } + )) + .arg(format!("--verifier-url={}", explorer_api.api_url)) + .arg(format!("--verifier-api-key={}", explorer_api.api_key)) + .arg("--guess-constructor-args") + .arg(format!("{}", contract_address)); + + match execute_command(&mut command) { + Ok(_) => { + *execution_status.lock().unwrap() = ExecutionStatus::Success; + *execution_message.lock().unwrap() = "".to_string(); + } + Err(e) => { + *execution_status.lock().unwrap() = ExecutionStatus::Failed; + *execution_message.lock().unwrap() = e.to_string(); + } + } + }); + + Ok(screen) + } +} + +impl Screen for VerifyContractScreen { + fn render_content(&self, buffer: &mut Buffer) -> Result<(), Box> { + if *self.execution_status.lock().unwrap() == ExecutionStatus::Pending { + buffer.append_row_text(&format!("{} Verifying contract\n", get_spinner_frame())); + } else if *self.execution_status.lock().unwrap() == ExecutionStatus::Success { + buffer.append_row_text(&format!("Contract verified successfully\n")); + self.select.render(buffer); + } else if *self.execution_status.lock().unwrap() == ExecutionStatus::Failed { + buffer.append_row_text(&format!( + "Error verifying contract: {}\n", + self.execution_message.lock().unwrap() + )); + self.select.render(buffer); + } + Ok(()) + } + + fn handle_input(&mut self, e: Event) -> Result> { + if *self.execution_status.lock().unwrap() != ExecutionStatus::Pending { + let result = self.select.handle_input(e); + if let Some(result) = result { + if result == 0 { + return Ok(ScreenResult::PreviousScreen); + } else if result == 1 { + return Ok(ScreenResult::NextScreen(None)); + } + } + } + + Ok(ScreenResult::Continue) + } + + fn execute(&mut self) -> Result<(), Box> { + Ok(()) + } +} + +fn execute_command(command: &mut Command) -> Result, Box> { + let cmd_str = format!("{:?}", command); + let re = Regex::new(r"--verifier-api-key=\S*").unwrap(); + let masked_cmd = re.replace_all(&cmd_str, "--verifier-api-key=***"); + let masked_cmd = masked_cmd.replace("\"", ""); + crate::errors::log(format!("Executing command: {}", masked_cmd)); + let mut result = command + .stdout(std::process::Stdio::piped()) + .stderr(std::process::Stdio::piped()) + .spawn()?; + + // Handle stdout + let stdout = result.stdout.take().expect("Failed to capture stdout"); + let stdout_reader = std::io::BufReader::new(stdout); + for line in stdout_reader.lines() { + let line = line?; + crate::errors::log(line); + } + + // Handle stderr + let stderr = result.stderr.take().expect("Failed to capture stderr"); + let stderr_reader = std::io::BufReader::new(stderr); + let mut error_message = String::new(); + for line in stderr_reader.lines() { + let line = line?; + crate::errors::log(line.clone()); + error_message.push_str(&line); + error_message.push('\n'); + } + match result.wait() { + Ok(status) => { + if !status.success() { + return Err(error_message.into()); + } + Ok(None) + } + Err(e) => Err(e.to_string().into()), + } +} diff --git a/script/cli/src/state_manager.rs b/script/cli/src/state_manager.rs index 7481805b..b25f3d8e 100644 --- a/script/cli/src/state_manager.rs +++ b/script/cli/src/state_manager.rs @@ -1,5 +1,5 @@ use crate::libs::web3::Web3Lib; -use crate::util::chain_config::{parse_chain_config, Chain, Explorer}; +use crate::util::chain_config::{parse_chain_config, Chain}; use crate::util::deployment_log::RegisterContractData; use crossterm::{ cursor::Show, @@ -25,6 +25,7 @@ pub struct WorkflowState { pub explorer_api_key: Option, pub block_explorer: Option, pub register_contract_data: RegisterContractData, + pub verify_contract_data: VerifyContractData, pub task: Value, pub private_key: Option, } @@ -38,6 +39,7 @@ impl WorkflowState { explorer_api_key: None, block_explorer: None, register_contract_data: RegisterContractData { address: None }, + verify_contract_data: VerifyContractData { address: None }, task: serde_json::json!({}), private_key: None, } diff --git a/script/cli/src/workflows/mod.rs b/script/cli/src/workflows/mod.rs index 26f936b5..c1f5610b 100644 --- a/script/cli/src/workflows/mod.rs +++ b/script/cli/src/workflows/mod.rs @@ -1,6 +1,7 @@ pub mod config; pub mod deploy; pub mod register; +pub mod verify; pub mod default_workflow; pub mod error_workflow; diff --git a/script/cli/src/workflows/register/register_contract.rs b/script/cli/src/workflows/register/register_contract.rs index 0c5fb275..b8ee0322 100644 --- a/script/cli/src/workflows/register/register_contract.rs +++ b/script/cli/src/workflows/register/register_contract.rs @@ -1,8 +1,9 @@ use crate::errors; -use crate::screens::register_contract::enter_address::EnterAddressScreen; use crate::screens::register_contract::get_contract_info::GetContractInfoScreen; +use crate::screens::screen_manager::ScreenResult; use crate::screens::shared::block_explorer::BlockExplorerScreen; use crate::screens::shared::chain_id::ChainIdScreen; +use crate::screens::shared::enter_address::EnterAddressScreen; use crate::screens::shared::enter_explorer_api_key::EnterExplorerApiKeyScreen; use crate::screens::shared::rpc_url::get_rpc_url_screen; use crate::screens::shared::test_connection::TestConnectionScreen; @@ -87,7 +88,18 @@ impl RegisterContractWorkflow { EnterExplorerApiKeyScreen::new()?, ))), 6 => Ok(WorkflowResult::NextScreen(Box::new( - EnterAddressScreen::new(), + EnterAddressScreen::new( + "Please enter the contract address to register\n".to_string(), + Some(Box::new(|address| { + STATE_MANAGER + .workflow_state + .lock() + .unwrap() + .register_contract_data + .address = Some(address); + Ok(ScreenResult::NextScreen(None)) + })), + ), ))), 7 => Ok(WorkflowResult::NextScreen(Box::new( GetContractInfoScreen::new()?, diff --git a/script/cli/src/workflows/verify/mod.rs b/script/cli/src/workflows/verify/mod.rs new file mode 100644 index 00000000..f3a52c23 --- /dev/null +++ b/script/cli/src/workflows/verify/mod.rs @@ -0,0 +1 @@ +pub mod verify_contract; diff --git a/script/cli/src/workflows/verify/verify_contract.rs b/script/cli/src/workflows/verify/verify_contract.rs new file mode 100644 index 00000000..ab4a75c6 --- /dev/null +++ b/script/cli/src/workflows/verify/verify_contract.rs @@ -0,0 +1,119 @@ +use crate::errors; +use crate::screens::screen_manager::ScreenResult; +use crate::screens::shared::block_explorer::BlockExplorerScreen; +use crate::screens::shared::chain_id::ChainIdScreen; +use crate::screens::shared::enter_address::EnterAddressScreen; +use crate::screens::shared::enter_explorer_api_key::EnterExplorerApiKeyScreen; +use crate::screens::shared::rpc_url::get_rpc_url_screen; +use crate::screens::shared::test_connection::TestConnectionScreen; +use crate::screens::verify_contract::verify_contract_screen::VerifyContractScreen; +use crate::state_manager::STATE_MANAGER; +use crate::workflows::error_workflow::ErrorWorkflow; +use crate::workflows::workflow_manager::{process_nested_workflows, Workflow, WorkflowResult}; + +pub struct VerifyContractWorkflow { + current_screen: usize, + child_workflows: Vec>, +} + +impl VerifyContractWorkflow { + pub fn new() -> Self { + VerifyContractWorkflow { + current_screen: 0, + child_workflows: vec![], + } + } +} + +impl Workflow for VerifyContractWorkflow { + fn next_screen( + &mut self, + new_workflows: Option>>, + ) -> Result> { + match process_nested_workflows(&mut self.child_workflows, new_workflows)? { + WorkflowResult::NextScreen(screen) => Ok(WorkflowResult::NextScreen(screen)), + WorkflowResult::Finished => { + self.current_screen += 1; + self.get_screen() + } + } + } + + fn previous_screen(&mut self) -> Result> { + if !self.child_workflows.is_empty() { + return self.child_workflows[0].previous_screen(); + } + if self.current_screen > 1 { + self.current_screen -= 1; + } + // if current screen is the test connection screen, go back to the rpc url screen + if self.current_screen == 3 { + self.current_screen = 2; + } + self.get_screen() + } + + fn handle_error( + &mut self, + error: Box, + ) -> Result> { + match self.current_screen { + 3 => { + if error.downcast_ref::().is_some() { + STATE_MANAGER.workflow_state.lock()?.web3 = None; + self.current_screen = 2; + return self.get_screen(); + } + self.display_error(error.to_string()) + } + _ => self.display_error(error.to_string()), + } + } +} + +impl VerifyContractWorkflow { + fn get_screen(&self) -> Result> { + match self.current_screen { + 1 => Ok(WorkflowResult::NextScreen(Box::new(ChainIdScreen::new( + None, + )))), + 2 => get_rpc_url_screen(), + 3 => Ok(WorkflowResult::NextScreen(Box::new( + TestConnectionScreen::new()?, + ))), + 4 => Ok(WorkflowResult::NextScreen(Box::new( + BlockExplorerScreen::new()?, + ))), + 5 => Ok(WorkflowResult::NextScreen(Box::new( + EnterExplorerApiKeyScreen::new()?, + ))), + 6 => Ok(WorkflowResult::NextScreen(Box::new( + EnterAddressScreen::new( + "Please enter the contract address to verify\n".to_string(), + Some(Box::new(|address| { + STATE_MANAGER + .workflow_state + .lock() + .unwrap() + .verify_contract_data + .address = Some(address); + Ok(ScreenResult::NextScreen(None)) + })), + ), + ))), + 7 => Ok(WorkflowResult::NextScreen(Box::new( + VerifyContractScreen::new()?, + ))), + _ => Ok(WorkflowResult::Finished), + } + } + + fn display_error( + &mut self, + error_message: String, + ) -> Result> { + self.child_workflows = vec![Box::new(ErrorWorkflow::new(error_message))]; + self.current_screen = 1000000; + self.child_workflows[0].next_screen(None) + } +} From e39408ae199d4e5cfed7959763daa54ee518dbcd Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Tue, 3 Jun 2025 14:36:49 -0400 Subject: [PATCH 08/13] update uerc20 --- script/deploy/Deploy-all.s.sol | 8 +++-- script/deploy/tasks/task_template.json | 16 +++++++-- .../uerc20-factory/UERC20FactoryDeployer.sol | 6 ++-- .../UERC20SuperchainFactoryDeployer.sol | 6 ++-- .../v3-periphery/SwapRouterDeployer.sol | 2 +- .../v3-periphery/V3MigratorDeployer.sol | 2 +- .../interfaces/ITokenFactory.sol | 34 +++++++++++-------- .../interfaces/IUERC20Factory.sol | 21 +++++++----- .../interfaces/IUERC20SuperchainFactory.sol | 10 ++++-- .../libraries/UERC20MetadataLibrary.sol | 15 +++++--- 10 files changed, 76 insertions(+), 44 deletions(-) diff --git a/script/deploy/Deploy-all.s.sol b/script/deploy/Deploy-all.s.sol index 52f0b767..5008e42a 100644 --- a/script/deploy/Deploy-all.s.sol +++ b/script/deploy/Deploy-all.s.sol @@ -446,14 +446,18 @@ contract Deploy is Script { bool deployUERC20SuperchainFactory = config.readBoolOr('.protocols.uerc20-factory.contracts.UERC20SuperchainFactory.deploy', false); + bytes32 salt; + if (deployUERC20FactoryMainnet) { + salt = config.readBytes32('.protocols.uerc20-factory.contracts.UERC20Factory.params.salt.value'); console.log('deploying UERC20 Factory'); - UERC20FactoryDeployer.deploy(); + UERC20FactoryDeployer.deploy(salt); } if (deployUERC20SuperchainFactory) { + salt = config.readBytes32('.protocols.uerc20-factory.contracts.UERC20SuperchainFactory.params.salt.value'); console.log('deploying UERC20 Superchain Factory'); - UERC20SuperchainFactoryDeployer.deploy(); + UERC20SuperchainFactoryDeployer.deploy(salt); } } diff --git a/script/deploy/tasks/task_template.json b/script/deploy/tasks/task_template.json index 567dd3dd..e9877484 100644 --- a/script/deploy/tasks/task_template.json +++ b/script/deploy/tasks/task_template.json @@ -405,11 +405,23 @@ "contracts": { "UERC20Factory": { "deploy": false, - "address": null + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } }, "UERC20SuperchainFactory": { "deploy": false, - "address": null + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } } } }, diff --git a/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol index 131813c5..4809d007 100644 --- a/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol +++ b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol @@ -5,9 +5,9 @@ import {IUERC20Factory} from '../../protocols/uerc20-factory/interfaces/IUERC20F import {DeployerHelper} from '../DeployerHelper.sol'; library UERC20FactoryDeployer { - function deploy() internal returns (IUERC20Factory uerc20Factory) { + function deploy(bytes32 salt) internal returns (IUERC20Factory uerc20Factory) { bytes memory initcode_ = abi.encodePacked(initcode()); - uerc20Factory = IUERC20Factory(DeployerHelper.create2(initcode_)); + uerc20Factory = IUERC20Factory(DeployerHelper.create2(initcode_, salt)); } /** @@ -18,6 +18,6 @@ library UERC20FactoryDeployer { */ function initcode() internal pure returns (bytes memory) { return - hex'6080604052348015600e575f5ffd5b506129b68061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80632c0cf9471461004357806394a8b1d414610073578063a5ea11da14610086575b5f5ffd5b6100566100513660046108cf565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109bd565b61030a565b61008e61039c565b60405161006a9190610a6e565b5f806100a983850185610b47565b80519091506001600160a01b031633146100f157805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b6040805160c0810182528a8152602081018a90529081018790526001600160a01b038616606082015260ff8816608082015260a081018290525f806101368c82610c9a565b506020820151600182019061014b9082610c9a565b50604082015160028201556060820151600382018054608085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560a08301518051600484018054919093166001600160a01b031991909116178255602081015190919060058401906101c29082610c9a565b50604082015160028201906101d79082610c9a565b50606082015160038201906101ec9082610c9a565b505083516040515f945061020a93508d92508c918c91602001610d54565b6040516020818303038152906040528051906020012090508060405161022f90610711565b8190604051809103905ff590508015801561024c573d5f5f3e3d5ffd5b5092505f8061025b818061071e565b610268600183015f61071e565b5f600283018190556003830180546001600160a81b03191690556004830180546001600160a01b0319168155906102a2600585018261071e565b6102af600283015f61071e565b6102bc600383015f61071e565b50506040516001600160a01b03861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050979650505050505050565b5f5f858585856040516020016103239493929190610d54565b6040516020818303038152906040528051906020012090505f6040518060200161034c90610711565b601f1982820381018352601f90910116604081905261036e9190602001610d9d565b6040516020818303038152906040528051906020012090506103918282306106df565b979650505050505050565b6103a4610758565b5f6040518060c00160405290815f820180546103bf90610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546103eb90610c16565b80156104365780601f1061040d57610100808354040283529160200191610436565b820191905f5260205f20905b81548152906001019060200180831161041957829003601f168201915b5050505050815260200160018201805461044f90610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461047b90610c16565b80156104c65780601f1061049d576101008083540402835291602001916104c6565b820191905f5260205f20905b8154815290600101906020018083116104a957829003601f168201915b5050509183525050600282015460208083019190915260038301546001600160a01b03808216604080860191909152600160a01b90920460ff1660608501528151608080820190935260048601805490921681526005860180549390950194909391929184019161053690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461056290610c16565b80156105ad5780601f10610584576101008083540402835291602001916105ad565b820191905f5260205f20905b81548152906001019060200180831161059057829003601f168201915b505050505081526020016002820180546105c690610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546105f290610c16565b801561063d5780601f106106145761010080835404028352916020019161063d565b820191905f5260205f20905b81548152906001019060200180831161062057829003601f168201915b5050505050815260200160038201805461065690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461068290610c16565b80156106cd5780601f106106a4576101008083540402835291602001916106cd565b820191905f5260205f20905b8154815290600101906020018083116106b057829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611bf680610db483390190565b50805461072a90610c16565b5f825580601f10610739575050565b601f0160209004905f5260205f209081019061075591906107c7565b50565b6040518060c0016040528060608152602001606081526020015f81526020015f6001600160a01b031681526020015f60ff1681526020016107c260405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b808211156107db575f81556001016107c8565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715610815576108156107df565b60405290565b5f82601f83011261082a575f5ffd5b81356001600160401b03811115610843576108436107df565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610871576108716107df565b604052818152838201602001851015610888575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146108b4575f5ffd5b919050565b80356001600160a01b03811681146108b4575f5ffd5b5f5f5f5f5f5f5f60c0888a0312156108e5575f5ffd5b87356001600160401b038111156108fa575f5ffd5b6109068a828b0161081b565b97505060208801356001600160401b03811115610921575f5ffd5b61092d8a828b0161081b565b96505061093c604089016108a4565b945060608801359350610951608089016108b9565b925060a08801356001600160401b0381111561096b575f5ffd5b88015f80601f83018c1361097d575f5ffd5b5081356001600160401b03811115610993575f5ffd5b6020830191508b60208285010111156109aa575f5ffd5b989b979a50959850939692959293505050565b5f5f5f5f608085870312156109d0575f5ffd5b84356001600160401b038111156109e5575f5ffd5b6109f18782880161081b565b94505060208501356001600160401b03811115610a0c575f5ffd5b610a188782880161081b565b935050610a27604086016108a4565b9150610a35606086016108b9565b905092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f825160c06020840152610a8960e0840182610a40565b90506020840151601f19848303016040850152610aa68282610a40565b9150506040840151606084015260018060a01b03606085015116608084015260ff60808501511660a084015260a0840151601f198483030160c085015260018060a01b038151168252602081015160806020840152610b086080840182610a40565b905060408201518382036040850152610b218282610a40565b915050606082015191508281036060840152610b3d8183610a40565b9695505050505050565b5f60208284031215610b57575f5ffd5b81356001600160401b03811115610b6c575f5ffd5b820160808185031215610b7d575f5ffd5b610b856107f3565b610b8e826108b9565b815260208201356001600160401b03811115610ba8575f5ffd5b610bb48682850161081b565b60208301525060408201356001600160401b03811115610bd2575f5ffd5b610bde8682850161081b565b60408301525060608201356001600160401b03811115610bfc575f5ffd5b610c088682850161081b565b606083015250949350505050565b600181811c90821680610c2a57607f821691505b602082108103610c4857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610c9557805f5260205f20601f840160051c81016020851015610c735750805b601f840160051c820191505b81811015610c92575f8155600101610c7f565b50505b505050565b81516001600160401b03811115610cb357610cb36107df565b610cc781610cc18454610c16565b84610c4e565b6020601f821160018114610cf9575f8315610ce25750848201515b5f19600385901b1c1916600184901b178455610c92565b5f84815260208120601f198516915b82811015610d285787850151825560209485019460019092019101610d08565b5084821015610d4557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608081525f610d666080830187610a40565b8281036020840152610d788187610a40565b60ff95909516604084015250506001600160a01b039190911660609091015292915050565b5f82518060208501845e5f92019182525091905056fe60a060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610073919081019061035e565b80519091505f9061008490826104cb565b50602081015160019061009790826104cb565b5060808181015160ff16905260a08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100db90826104cb565b50604082015160028201906100f090826104cb565b506060820151600382019061010590826104cb565b5050506060810151604082015161011c9190610122565b50610585565b6805345cdf77eb68f44c54818101818110156101455763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101d9576101d96101a3565b60405290565b60405160c081016001600160401b03811182821017156101d9576101d96101a3565b5f82601f830112610210575f5ffd5b81516001600160401b03811115610229576102296101a3565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610257576102576101a3565b60405281815283820160200185101561026e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102a0575f5ffd5b919050565b805160ff811681146102a0575f5ffd5b5f608082840312156102c5575f5ffd5b6102cd6101b7565b90506102d88261028a565b815260208201516001600160401b038111156102f2575f5ffd5b6102fe84828501610201565b60208301525060408201516001600160401b0381111561031c575f5ffd5b61032884828501610201565b60408301525060608201516001600160401b03811115610346575f5ffd5b61035284828501610201565b60608301525092915050565b5f6020828403121561036e575f5ffd5b81516001600160401b03811115610383575f5ffd5b820160c08185031215610394575f5ffd5b61039c6101df565b81516001600160401b038111156103b1575f5ffd5b6103bd86828501610201565b82525060208201516001600160401b038111156103d8575f5ffd5b6103e486828501610201565b602083015250604082810151908201526104006060830161028a565b6060820152610411608083016102a5565b608082015260a08201516001600160401b0381111561042e575f5ffd5b61043a868285016102b5565b60a083015250949350505050565b600181811c9082168061045c57607f821691505b60208210810361047a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561019e57805f5260205f20601f840160051c810160208510156104a55750805b601f840160051c820191505b818110156104c4575f81556001016104b1565b5050505050565b81516001600160401b038111156104e4576104e46101a3565b6104f8816104f28454610448565b84610480565b6020601f82116001811461052a575f83156105135750848201515b5f19600385901b1c1916600184901b1784556104c4565b5f84815260208120601f198516915b828110156105595787850151825560209485019460019092019101610539565b508482101561057657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805161165961059d5f395f61015e01526116595ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80633c130d901161008857806395d89b411161006357806395d89b41146101fa578063a9059cbb14610202578063d505accf14610215578063dd62ed3e1461022a575f5ffd5b80633c130d90146101a857806370a08231146101b05780637ecebe00146101d5575f5ffd5b806323b872dd116100c357806323b872dd14610144578063313ce567146101575780633644e51514610188578063392f37e914610190575f5ffd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f5ffd5b6100f161023d565b6040516100fe919061125d565b60405180910390f35b61011a61011536600461128a565b6102cc565b60405190151581526020016100fe565b6805345cdf77eb68f44c545b6040519081526020016100fe565b61011a6101523660046112b2565b61034c565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100fe565b61013661041c565b610198610498565b6040516100fe94939291906112ec565b6100f161064f565b6101366101be366004611340565b6387a211a2600c9081525f91909152602090205490565b6101366101e3366004611340565b6338377508600c9081525f91909152602090205490565b6100f1610831565b61011a61021036600461128a565b610840565b610228610223366004611359565b6108b7565b005b6101366102383660046113c6565b610a6b565b60605f805461024b906113f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610277906113f7565b80156102c25780601f10610299576101008083540402835291602001916102c2565b820191905f5260205f20905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba318821915176102fd57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa35060015b92915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146103a15733602052637f5e9f208117600c526034600c20805480191561039e5780851115610398576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156103c75763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f8061042661023d565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916104b6906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546104e2906113f7565b801561052d5780601f106105045761010080835404028352916020019161052d565b820191905f5260205f20905b81548152906001019060200180831161051057829003601f168201915b505050505090806002018054610542906113f7565b80601f016020809104026020016040519081016040528092919081815260200182805461056e906113f7565b80156105b95780601f10610590576101008083540402835291602001916105b9565b820191905f5260205f20905b81548152906001019060200180831161059c57829003601f168201915b5050505050908060030180546105ce906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546105fa906113f7565b80156106455780601f1061061c57610100808354040283529160200191610645565b820191905f5260205f20905b81548152906001019060200180831161062857829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b031682526003805460609361082c9390929091602084019190610687906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546106b3906113f7565b80156106fe5780601f106106d5576101008083540402835291602001916106fe565b820191905f5260205f20905b8154815290600101906020018083116106e157829003601f168201915b50505050508152602001600282018054610717906113f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610743906113f7565b801561078e5780601f106107655761010080835404028352916020019161078e565b820191905f5260205f20905b81548152906001019060200180831161077157829003601f168201915b505050505081526020016003820180546107a7906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546107d3906113f7565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b505050505081525050610aaf565b905090565b60606001805461024b906113f7565b5f6387a211a2600c52335f526020600c208054808411156108685763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba318851915176108e757633f68539a5f526004601cfd5b5f6108f061023d565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64286101561092f57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610a175763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610a9457505f19610346565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610ac2610abd83610ae8565b610bff565b604051602001610ad29190611446565b6040516020818303038152906040529050919050565b60605f610b00835f01516001600160a01b0316610c25565b604051602001610b109190611477565b60405160208183030381529060405290505f8360200151511115610b5f5780610b3c8460200151610cd3565b604051602001610b4d9291906114a8565b60405160208183030381529060405290505b60408301515115610b9b5780610b788460400151610cd3565b604051602001610b899291906114ea565b60405160208183030381529060405290505b60608301515115610bd75780610bb48460600151610cd3565b604051602001610bc5929190611515565b60405160208183030381529060405290505b80604051602001610be8919061153e565b604051602081830303815290604052915050919050565b60606103468260405180606001604052806040815260200161160d604091396001610f25565b60605f610c31836110a0565b6028602282012090915060601c60295b6001811115610cca57600782600f16118015610c7657506060838281518110610c6c57610c6c61155a565b016020015160f81c115b15610cb357602060f81b838281518110610c9257610c9261155a565b0160200180516001600160f81b0319908116909218909116905f82901a9053505b60049190911c90610cc381611582565b9050610c41565b50909392505050565b805160609082905f90610ce7906002611597565b67ffffffffffffffff811115610cff57610cff6115ae565b6040519080825280601f01601f191660200182016040528015610d29576020820181803683370190505b5090505f805b8351811015610f0e575f610d468583016020015190565b90506b100000000000000400003700600160f883901c1b1615610ed057601760fa1b8484610d73816115c2565b955081518110610d8557610d8561155a565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b03610ded57603160f91b8484610dc0816115c2565b955081518110610dd257610dd261155a565b60200101906001600160f81b03191690815f1a905350610f05565b6001600160f81b03198116600960f81b03610e1257601d60fa1b8484610dc0816115c2565b6001600160f81b03198116600560f91b03610e3757603760f91b8484610dc0816115c2565b6001600160f81b03198116600360fa1b03610e5c57603360f91b8484610dc0816115c2565b6001600160f81b03198116600d60f81b03610e8157603960f91b8484610dc0816115c2565b6001600160f81b03198116601760fa1b03610ea657601760fa1b8484610dc0816115c2565b6001600160f81b03198116601160f91b03610ecb57601160f91b8484610dc0816115c2565b610f05565b808484610edc816115c2565b955081518110610eee57610eee61155a565b60200101906001600160f81b03191690815f1a9053505b50600101610d2f565b50808252603f01601f191681016040529392505050565b606083515f03610f43575060408051602081019091525f8152610415565b5f82610f7357600385516004610f599190611597565b610f649060026115da565b610f6e91906115ed565b610f98565b600385516002610f8391906115da565b610f8d91906115ed565b610f98906004611597565b90505f8167ffffffffffffffff811115610fb457610fb46115ae565b6040519080825280601f01601f191660200182016040528015610fde576020820181803683370190505b509050600185016020820187885189016020810180515f82525b82841015611053576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450610ff8565b90525050851561109457600388510660018114611077576002811461108a57611092565b603d6001830353603d6002830353611092565b603d60018303535b505b50909695505050505050565b60606103466001600160a01b03831660146060825f6110c0846002611597565b6110cb9060026115da565b67ffffffffffffffff8111156110e3576110e36115ae565b6040519080825280601f01601f19166020018201604052801561110d576020820181803683370190505b509050600360fc1b815f815181106111275761112761155a565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106111555761115561155a565b60200101906001600160f81b03191690815f1a9053505f611177856002611597565b6111829060016115da565b90505b60018111156111f9576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106111b6576111b661155a565b1a60f81b8282815181106111cc576111cc61155a565b60200101906001600160f81b03191690815f1a90535060049290921c916111f281611582565b9050611185565b5081156112275760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610415602083018461122f565b80356001600160a01b0381168114611285575f5ffd5b919050565b5f5f6040838503121561129b575f5ffd5b6112a48361126f565b946020939093013593505050565b5f5f5f606084860312156112c4575f5ffd5b6112cd8461126f565b92506112db6020850161126f565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f9061130f9083018661122f565b8281036040840152611321818661122f565b90508281036060840152611335818561122f565b979650505050505050565b5f60208284031215611350575f5ffd5b6104158261126f565b5f5f5f5f5f5f5f60e0888a03121561136f575f5ffd5b6113788861126f565b96506113866020890161126f565b95506040880135945060608801359350608088013560ff811681146113a9575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156113d7575f5ffd5b6113e08361126f565b91506113ee6020840161126f565b90509250929050565b600181811c9082168061140b57607f821691505b60208210810361142957634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610415601d83018461142f565b6b3d9121b932b0ba37b9111d1160a11b81525f611497600c83018461142f565b601160f91b81526001019392505050565b5f6114b3828561142f565b701610112232b9b1b934b83a34b7b7111d1160791b81526114d7601182018561142f565b601160f91b815260010195945050505050565b5f6114f5828561142f565b6c1610112bb2b139b4ba32911d1160991b81526114d7600d82018561142f565b5f611520828561142f565b6a16101124b6b0b3b2911d1160a91b81526114d7600b82018561142f565b5f611549828461142f565b607d60f81b81526001019392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f816115905761159061156e565b505f190190565b80820281158282048414176103465761034661156e565b634e487b7160e01b5f52604160045260245ffd5b5f600182016115d3576115d361156e565b5060010190565b808201808211156103465761034661156e565b5f8261160757634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a'; + hex'6080604052348015600e575f5ffd5b5061299d8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063a255e0ad14610043578063a5ea11da14610073578063f752070e14610088575b5f5ffd5b610056610051366004610915565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b61007b610307565b60405161006a9190610a55565b610056610096366004610b01565b610645565b5f806100a984860186610b8b565b90506001600160a01b0386166100d257604051636c38382960e11b815260040160405180910390fd5b865f036100f257604051637ceabcb560e11b815260040160405180910390fd5b6040805161010081018252888152602081018590526001600160a01b038816918101829052336060820181905260ff8b166080830181905260a083018e905260c083018d905260e083018590525f8b81556001889055600280546001600160a01b031916909517909455600380546001600160a81b03191660ff60a01b1990931692909217600160a01b90910217905590600461018f8d82610ccd565b5060c082015160058201906101a49082610ccd565b5060e08201518051600683019081906101bd9082610ccd565b50602082015160018201906101d29082610ccd565b50604082015160028201906101e79082610ccd565b5050509050505f8a8a8a3387604051602001610207959493929190610d87565b6040516020818303038152906040528051906020012090508060405161022c9061070c565b8190604051809103905ff5905080158015610249573d5f5f3e3d5ffd5b505f8080556001819055600280546001600160a01b0319169055600380546001600160a81b031916905590935080610282600482610719565b61028f600583015f610719565b600682015f61029e8282610719565b6102ab600183015f610719565b6102b8600283015f610719565b50506040516001600160a01b03861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505098975050505050505050565b61030f610753565b60408051610100810182525f8054825260015460208301526002546001600160a01b03908116938301939093526003549283166060830152600160a01b90920460ff1660808201526004805491929160a08401919061036d90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461039990610c49565b80156103e45780601f106103bb576101008083540402835291602001916103e4565b820191905f5260205f20905b8154815290600101906020018083116103c757829003601f168201915b505050505081526020016005820180546103fd90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461042990610c49565b80156104745780601f1061044b57610100808354040283529160200191610474565b820191905f5260205f20905b81548152906001019060200180831161045757829003601f168201915b50505050508152602001600682016040518060600160405290815f8201805461049c90610c49565b80601f01602080910402602001604051908101604052809291908181526020018280546104c890610c49565b80156105135780601f106104ea57610100808354040283529160200191610513565b820191905f5260205f20905b8154815290600101906020018083116104f657829003601f168201915b5050505050815260200160018201805461052c90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461055890610c49565b80156105a35780601f1061057a576101008083540402835291602001916105a3565b820191905f5260205f20905b81548152906001019060200180831161058657829003601f168201915b505050505081526020016002820180546105bc90610c49565b80601f01602080910402602001604051908101604052809291908181526020018280546105e890610c49565b80156106335780601f1061060a57610100808354040283529160200191610633565b820191905f5260205f20905b81548152906001019060200180831161061657829003601f168201915b50505050508152505081525050905090565b5f5f8686868686604051602001610660959493929190610d87565b6040516020818303038152906040528051906020012090505f604051806020016106899061070c565b601f1982820381018352601f9091011660408190526106ab9190602001610dd5565b6040516020818303038152906040528051906020012090506106ce8282306106da565b98975050505050505050565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611ba580610dec83390190565b50805461072590610c49565b5f825580601f10610734575050565b601f0160209004905f5260205f209081019061075091906107c9565b50565b6040518061010001604052805f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f60ff16815260200160608152602001606081526020016107c460405180606001604052806060815260200160608152602001606081525090565b905290565b5b808211156107dd575f81556001016107ca565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715610817576108176107e1565b60405290565b5f82601f83011261082c575f5ffd5b81356001600160401b03811115610845576108456107e1565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610873576108736107e1565b60405281815283820160200185101561088a575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146108b6575f5ffd5b919050565b80356001600160a01b03811681146108b6575f5ffd5b5f5f83601f8401126108e1575f5ffd5b5081356001600160401b038111156108f7575f5ffd5b60208301915083602082850101111561090e575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b03121561092c575f5ffd5b88356001600160401b03811115610941575f5ffd5b61094d8b828c0161081d565b98505060208901356001600160401b03811115610968575f5ffd5b6109748b828c0161081d565b97505061098360408a016108a6565b95506060890135945061099860808a016108bb565b935060a08901356001600160401b038111156109b2575f5ffd5b6109be8b828c016108d1565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815160608452610a1960608501826109d7565b905060208301518482036020860152610a3282826109d7565b91505060408301518482036040860152610a4c82826109d7565b95945050505050565b6020815281516020820152602082015160408201525f6040830151610a8560608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160ff811660a08401525060a083015161010060c0840152610ac56101208401826109d7565b905060c0840151601f198483030160e0850152610ae282826109d7565b91505060e0840151601f1984830301610100850152610a4c8282610a05565b5f5f5f5f5f60a08688031215610b15575f5ffd5b85356001600160401b03811115610b2a575f5ffd5b610b368882890161081d565b95505060208601356001600160401b03811115610b51575f5ffd5b610b5d8882890161081d565b945050610b6c604087016108a6565b9250610b7a606087016108bb565b949793965091946080013592915050565b5f60208284031215610b9b575f5ffd5b81356001600160401b03811115610bb0575f5ffd5b820160608185031215610bc1575f5ffd5b610bc96107f5565b81356001600160401b03811115610bde575f5ffd5b610bea8682850161081d565b82525060208201356001600160401b03811115610c05575f5ffd5b610c118682850161081d565b60208301525060408201356001600160401b03811115610c2f575f5ffd5b610c3b8682850161081d565b604083015250949350505050565b600181811c90821680610c5d57607f821691505b602082108103610c7b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610cc857805f5260205f20601f840160051c81016020851015610ca65750805b601f840160051c820191505b81811015610cc5575f8155600101610cb2565b50505b505050565b81516001600160401b03811115610ce657610ce66107e1565b610cfa81610cf48454610c49565b84610c81565b6020601f821160018114610d2c575f8315610d155750848201515b5f19600385901b1c1916600184901b178455610cc5565b5f84815260208120601f198516915b82811015610d5b5787850151825560209485019460019092019101610d3b565b5084821015610d7857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f610d9960a08301886109d7565b8281036020840152610dab81886109d7565b60ff96909616604084015250506001600160a01b0392909216606083015260809091015292915050565b5f82518060208501845e5f92019182525091905056fe610100604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610074919081019061035f565b90508060a001515f908161008891906104e8565b505f60405161009791906105a2565b60405190819003902060805260c08101516001906100b590826104e8565b50608081015160ff1660e090815260608201516001600160a01b031660c052602082015160a052810151805160029081906100f090826104e8565b506020820151600182019061010590826104e8565b506040820151600282019061011a90826104e8565b5050506040810151815161012e9190610134565b50610613565b6805345cdf77eb68f44c54818101818110156101575763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156101ec576101ec6101b5565b60405290565b80516001600160a01b0381168114610208575f5ffd5b919050565b805160ff81168114610208575f5ffd5b5f82601f83011261022c575f5ffd5b81516001600160401b03811115610245576102456101b5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610273576102736101b5565b60405281815283820160200185101561028a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102b6575f5ffd5b604051606081016001600160401b03811182821017156102d8576102d86101b5565b604052825190915081906001600160401b038111156102f5575f5ffd5b6103018582860161021d565b82525060208301516001600160401b0381111561031c575f5ffd5b6103288582860161021d565b60208301525060408301516001600160401b03811115610346575f5ffd5b6103528582860161021d565b6040830152505092915050565b5f6020828403121561036f575f5ffd5b81516001600160401b03811115610384575f5ffd5b82016101008185031215610396575f5ffd5b61039e6101c9565b81518152602080830151908201526103b8604083016101f2565b60408201526103c9606083016101f2565b60608201526103da6080830161020d565b608082015260a08201516001600160401b038111156103f7575f5ffd5b6104038682850161021d565b60a08301525060c08201516001600160401b03811115610421575f5ffd5b61042d8682850161021d565b60c08301525060e08201516001600160401b0381111561044b575f5ffd5b610457868285016102a6565b60e083015250949350505050565b600181811c9082168061047957607f821691505b60208210810361049757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b057805f5260205f20601f840160051c810160208510156104c25750805b601f840160051c820191505b818110156104e1575f81556001016104ce565b5050505050565b81516001600160401b03811115610501576105016101b5565b6105158161050f8454610465565b8461049d565b6020601f821160018114610547575f83156105305750848201515b5f19600385901b1c1916600184901b1784556104e1565b5f84815260208120601f198516915b828110156105765787850151825560209485019460019092019101610556565b508482101561059357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105af81610465565b6001821680156105c657600181146105db57610608565b60ff1983168652811515820286019350610608565b865f5260205f205f5b83811015610600578154888201526001909101906020016105e4565b505081860193505b509195945050505050565b60805160a05160c05160e05161155861064d5f395f6101cd01525f61013701525f6102b001525f818161050401526109ce01526115585ff3fe608060405234801561000f575f5ffd5b5060043610610106575f3560e01c8063392f37e91161009e57806395d89b411161006e57806395d89b4114610268578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610298578063f56a499f146102ab575f5ffd5b8063392f37e9146101ff5780633c130d901461021657806370a082311461021e5780637ecebe0014610243575f5ffd5b806318160ddd116100d957806318160ddd1461019957806323b872dd146101b3578063313ce567146101c65780633644e515146101f7575f5ffd5b806301ffc9a71461010a57806302d05d3f1461013257806306fdde0314610171578063095ea7b314610186575b5f5ffd5b61011d610118366004611148565b6102d2565b60405190151581526020015b60405180910390f35b6101597f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610129565b610179610323565b604051610129919061119d565b61011d6101943660046111ca565b6103b2565b6805345cdf77eb68f44c545b604051908152602001610129565b61011d6101c13660046111f2565b610431565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610129565b6101a5610501565b6102076105a3565b6040516101299392919061122c565b61017961074b565b6101a561022c36600461126e565b6387a211a2600c9081525f91909152602090205490565b6101a561025136600461126e565b6338377508600c9081525f91909152602090205490565b610179610916565b61011d61027e3660046111ca565b610925565b610296610291366004611287565b61099c565b005b6101a56102a63660046112f4565b610b76565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b031982166301ffc9a760e01b148061030257506001600160e01b031982166336372b0760e01b145b8061031d57506001600160e01b03198216634ec7fbed60e11b145b92915050565b60605f805461033190611325565b80601f016020809104026020016040519081016040528092919081815260200182805461035d90611325565b80156103a85780601f1061037f576101008083540402835291602001916103a8565b820191905f5260205f20905b81548152906001019060200180831161038b57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba318821915176103e357633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146104865733602052637f5e9f208117600c526034600c208054801915610483578085111561047d576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156104ac5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000008061053a57610530610323565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b6002805481906105b290611325565b80601f01602080910402602001604051908101604052809291908181526020018280546105de90611325565b80156106295780601f1061060057610100808354040283529160200191610629565b820191905f5260205f20905b81548152906001019060200180831161060c57829003601f168201915b50505050509080600101805461063e90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461066a90611325565b80156106b55780601f1061068c576101008083540402835291602001916106b5565b820191905f5260205f20905b81548152906001019060200180831161069857829003601f168201915b5050505050908060020180546106ca90611325565b80601f01602080910402602001604051908101604052809291908181526020018280546106f690611325565b80156107415780601f1061071857610100808354040283529160200191610741565b820191905f5260205f20905b81548152906001019060200180831161072457829003601f168201915b5050505050905083565b606061091160026040518060600160405290815f8201805461076c90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461079890611325565b80156107e35780601f106107ba576101008083540402835291602001916107e3565b820191905f5260205f20905b8154815290600101906020018083116107c657829003601f168201915b505050505081526020016001820180546107fc90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461082890611325565b80156108735780601f1061084a57610100808354040283529160200191610873565b820191905f5260205f20905b81548152906001019060200180831161085657829003601f168201915b5050505050815260200160028201805461088c90611325565b80601f01602080910402602001604051908101604052809291908181526020018280546108b890611325565b80156109035780601f106108da57610100808354040283529160200191610903565b820191905f5260205f20905b8154815290600101906020018083116108e657829003601f168201915b505050505081525050610bba565b905090565b60606001805461033190611325565b5f6387a211a2600c52335f526020600c2080548084111561094d5763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba318851915176109cc57633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610a04576109fa610323565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610a3a57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610b225763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610b9f57505f1961031d565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610bcd610bc883610bf3565b610d55565b604051602001610bdd9190611374565b6040516020818303038152906040529050919050565b60605f604051602001610c0d90607b60f81b815260010190565b60408051601f198184030181529190528351519091505f9015610c5e5781610c37855f0151610d7b565b604051602001610c489291906113a5565b6040516020818303038152906040529150600190505b60208401515115610cc7578015610c925781604051602001610c8091906113e5565b60405160208183030381529060405291505b81610ca08560200151610d7b565b604051602001610cb1929190611402565b6040516020818303038152906040529150600190505b60408401515115610d2c578015610cfb5781604051602001610ce991906113e5565b60405160208183030381529060405291505b81610d098560400151610d7b565b604051602001610d1a92919061142b565b60405160208183030381529060405291505b81604051602001610d3d9190611452565b60405160208183030381529060405292505050919050565b606061031d8260405180606001604052806040815260200161150c604091396001610fcd565b805160609082905f90610d8f906002611482565b67ffffffffffffffff811115610da757610da7611499565b6040519080825280601f01601f191660200182016040528015610dd1576020820181803683370190505b5090505f805b8351811015610fb6575f610dee8583016020015190565b90506b100000000000000400003700600160f883901c1b1615610f7857601760fa1b8484610e1b816114ad565b955081518110610e2d57610e2d6114c5565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b03610e9557603160f91b8484610e68816114ad565b955081518110610e7a57610e7a6114c5565b60200101906001600160f81b03191690815f1a905350610fad565b6001600160f81b03198116600960f81b03610eba57601d60fa1b8484610e68816114ad565b6001600160f81b03198116600560f91b03610edf57603760f91b8484610e68816114ad565b6001600160f81b03198116600360fa1b03610f0457603360f91b8484610e68816114ad565b6001600160f81b03198116600d60f81b03610f2957603960f91b8484610e68816114ad565b6001600160f81b03198116601760fa1b03610f4e57601760fa1b8484610e68816114ad565b6001600160f81b03198116601160f91b03610f7357601160f91b8484610e68816114ad565b610fad565b808484610f84816114ad565b955081518110610f9657610f966114c5565b60200101906001600160f81b03191690815f1a9053505b50600101610dd7565b50808252603f01601f191681016040529392505050565b606083515f03610feb575060408051602081019091525f81526104fa565b5f8261101b576003855160046110019190611482565b61100c9060026114d9565b61101691906114ec565b611040565b60038551600261102b91906114d9565b61103591906114ec565b611040906004611482565b90505f8167ffffffffffffffff81111561105c5761105c611499565b6040519080825280601f01601f191660200182016040528015611086576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156110fb576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506110a0565b90525050851561113c5760038851066001811461111f57600281146111325761113a565b603d6001830353603d600283035361113a565b603d60018303535b505b50909695505050505050565b5f60208284031215611158575f5ffd5b81356001600160e01b0319811681146104fa575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6104fa602083018461116f565b80356001600160a01b03811681146111c5575f5ffd5b919050565b5f5f604083850312156111db575f5ffd5b6111e4836111af565b946020939093013593505050565b5f5f5f60608486031215611204575f5ffd5b61120d846111af565b925061121b602085016111af565b929592945050506040919091013590565b606081525f61123e606083018661116f565b8281036020840152611250818661116f565b90508281036040840152611264818561116f565b9695505050505050565b5f6020828403121561127e575f5ffd5b6104fa826111af565b5f5f5f5f5f5f5f60e0888a03121561129d575f5ffd5b6112a6886111af565b96506112b4602089016111af565b95506040880135945060608801359350608088013560ff811681146112d7575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611305575f5ffd5b61130e836111af565b915061131c602084016111af565b90509250929050565b600181811c9082168061133957607f821691505b60208210810361135757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6104fa601d83018461135d565b5f6113b0828561135d565b6e113232b9b1b934b83a34b7b7111d1160891b81526113d2600f82018561135d565b601160f91b815260010195945050505050565b5f6113f0828461135d565b61016160f51b81526002019392505050565b5f61140d828561135d565b6a113bb2b139b4ba32911d1160a91b81526113d2600b82018561135d565b5f611436828561135d565b681134b6b0b3b2911d1160b91b81526113d2600982018561135d565b5f61145d828461135d565b607d60f81b81526001019392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761031d5761031d61146e565b634e487b7160e01b5f52604160045260245ffd5b5f600182016114be576114be61146e565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561031d5761031d61146e565b5f8261150657634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a'; } } diff --git a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol index ed667397..611941d2 100644 --- a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol +++ b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol @@ -5,9 +5,9 @@ import {IUERC20SuperchainFactory} from '../../protocols/uerc20-factory/interface import {DeployerHelper} from '../DeployerHelper.sol'; library UERC20SuperchainFactoryDeployer { - function deploy() internal returns (IUERC20SuperchainFactory uerc20SuperchainFactory) { + function deploy(bytes32 salt) internal returns (IUERC20SuperchainFactory uerc20SuperchainFactory) { bytes memory initcode_ = abi.encodePacked(initcode()); - uerc20SuperchainFactory = IUERC20SuperchainFactory(DeployerHelper.create2(initcode_)); + uerc20SuperchainFactory = IUERC20SuperchainFactory(DeployerHelper.create2(initcode_, salt)); } /** @@ -18,6 +18,6 @@ library UERC20SuperchainFactoryDeployer { */ function initcode() internal pure returns (bytes memory) { return - hex'6080604052348015600e575f5ffd5b50612d7f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806312e5f742146100435780632c0cf94714610073578063a5ea11da14610086575b5f5ffd5b61005661005136600461094f565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109db565b610130565b61008e610409565b60405161006a9190610b54565b5f5f86868686866040516020016100b6959493929190610bde565b6040516020818303038152906040528051906020012090505f604051806020016100df9061078b565b601f1982820381018352601f9091011660408190526101019190602001610c2c565b604051602081830303815290604052805190602001209050610124828230610759565b98975050505050505050565b5f808061013f84860186610c42565b91509150814614801561015c575080516001600160a01b03163314155b1561019557805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b80516040515f916101b0918d918d918d918891602001610bde565b604051602081830303815290604052805190602001209050824614610207575f8083526040805160208082018352838252808601919091528151808201835283815282860152815190810190915290815260608301525b6040805160e0810182528c8152602081018c9052908101899052606081018490526001600160a01b038816608082015260ff8a1660a082015260c081018390525f806102538e82610da1565b50602082015160018201906102689082610da1565b506040820151600282015560608201516003820155608082015160048201805460a085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560c08301518051600584018054919093166001600160a01b031991909116178255602081015190919060068401906102e99082610da1565b50604082015160028201906102fe9082610da1565b50606082015160038201906103139082610da1565b505050905050806040516103269061078b565b8190604051809103905ff5905080158015610343573d5f5f3e3d5ffd5b5093505f806103528180610798565b61035f600183015f610798565b5f60028301819055600383018190556004830180546001600160a81b03191690556005830180546001600160a01b0319168155906103a06006850182610798565b6103ad600283015f610798565b6103ba600383015f610798565b50506040516001600160a01b03871681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505050979650505050505050565b6104116107d2565b5f6040518060e00160405290815f8201805461042c90610d1d565b80601f016020809104026020016040519081016040528092919081815260200182805461045890610d1d565b80156104a35780601f1061047a576101008083540402835291602001916104a3565b820191905f5260205f20905b81548152906001019060200180831161048657829003601f168201915b505050505081526020016001820180546104bc90610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546104e890610d1d565b80156105335780601f1061050a57610100808354040283529160200191610533565b820191905f5260205f20905b81548152906001019060200180831161051657829003601f168201915b50505091835250506002820154602080830191909152600383015460408084019190915260048401546001600160a01b038082166060860152600160a01b90910460ff166080808601919091528251908101909252600585018054909116825260068501805460a09095019492939192918401916105b090610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546105dc90610d1d565b80156106275780601f106105fe57610100808354040283529160200191610627565b820191905f5260205f20905b81548152906001019060200180831161060a57829003601f168201915b5050505050815260200160028201805461064090610d1d565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90610d1d565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016003820180546106d090610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90610d1d565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611f1780610e5c83390190565b5080546107a490610d1d565b5f825580601f106107b3575050565b601f0160209004905f5260205f20908101906107cf9190610847565b50565b6040518060e0016040528060608152602001606081526020015f81526020015f81526020015f6001600160a01b031681526020015f60ff16815260200161084260405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b8082111561085b575f8155600101610848565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156108955761089561085f565b60405290565b5f82601f8301126108aa575f5ffd5b81356001600160401b038111156108c3576108c361085f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156108f1576108f161085f565b604052818152838201602001851015610908575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610934575f5ffd5b919050565b80356001600160a01b0381168114610934575f5ffd5b5f5f5f5f5f60a08688031215610963575f5ffd5b85356001600160401b03811115610978575f5ffd5b6109848882890161089b565b95505060208601356001600160401b0381111561099f575f5ffd5b6109ab8882890161089b565b9450506109ba60408701610924565b9250606086013591506109cf60808701610939565b90509295509295909350565b5f5f5f5f5f5f5f60c0888a0312156109f1575f5ffd5b87356001600160401b03811115610a06575f5ffd5b610a128a828b0161089b565b97505060208801356001600160401b03811115610a2d575f5ffd5b610a398a828b0161089b565b965050610a4860408901610924565b945060608801359350610a5d60808901610939565b925060a08801356001600160401b03811115610a77575f5ffd5b8801601f81018a13610a87575f5ffd5b80356001600160401b03811115610a9c575f5ffd5b8a6020828401011115610aad575f5ffd5b602082019350809250505092959891949750929550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b0381511682525f602082015160806020850152610b186080850182610ac4565b905060408301518482036040860152610b318282610ac4565b91505060608301518482036060860152610b4b8282610ac4565b95945050505050565b602081525f825160e06020840152610b70610100840182610ac4565b90506020840151601f19848303016040850152610b8d8282610ac4565b915050604084015160608401526060840151608084015260018060a01b0360808501511660a084015260ff60a08501511660c084015260c0840151601f198483030160e0850152610b4b8282610af2565b60a081525f610bf060a0830188610ac4565b8281036020840152610c028188610ac4565b60ff969096166040840152505060608101929092526001600160a01b031660809091015292915050565b5f82518060208501845e5f920191825250919050565b5f5f60408385031215610c53575f5ffd5b8235915060208301356001600160401b03811115610c6f575f5ffd5b830160808186031215610c80575f5ffd5b610c88610873565b610c9182610939565b815260208201356001600160401b03811115610cab575f5ffd5b610cb78782850161089b565b60208301525060408201356001600160401b03811115610cd5575f5ffd5b610ce18782850161089b565b60408301525060608201356001600160401b03811115610cff575f5ffd5b610d0b8782850161089b565b60608301525080925050509250929050565b600181811c90821680610d3157607f821691505b602082108103610d4f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d9c57805f5260205f20601f840160051c81016020851015610d7a5750805b601f840160051c820191505b81811015610d99575f8155600101610d86565b50505b505050565b81516001600160401b03811115610dba57610dba61085f565b610dce81610dc88454610d1d565b84610d55565b6020601f821160018114610e00575f8315610de95750848201515b5f19600385901b1c1916600184901b178455610d99565b5f84815260208120601f198516915b82811015610e2f5787850151825560209485019460019092019101610e0f565b5084821015610e4c57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe60c060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100739190810190610375565b606081015160a05280519091505f9061008c90826104ec565b50602081015160019061009f90826104ec565b5060a081015160ff1660805260c08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100e390826104ec565b50604082015160028201906100f890826104ec565b506060820151600382019061010d90826104ec565b50505060608101514603610133576101338160800151826040015161013960201b60201c565b506105a6565b6805345cdf77eb68f44c548181018181101561015c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101f0576101f06101ba565b60405290565b60405160e081016001600160401b03811182821017156101f0576101f06101ba565b5f82601f830112610227575f5ffd5b81516001600160401b03811115610240576102406101ba565b604051601f8201601f19908116603f011681016001600160401b038111828210171561026e5761026e6101ba565b604052818152838201602001851015610285575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102b7575f5ffd5b919050565b805160ff811681146102b7575f5ffd5b5f608082840312156102dc575f5ffd5b6102e46101ce565b90506102ef826102a1565b815260208201516001600160401b03811115610309575f5ffd5b61031584828501610218565b60208301525060408201516001600160401b03811115610333575f5ffd5b61033f84828501610218565b60408301525060608201516001600160401b0381111561035d575f5ffd5b61036984828501610218565b60608301525092915050565b5f60208284031215610385575f5ffd5b81516001600160401b0381111561039a575f5ffd5b820160e081850312156103ab575f5ffd5b6103b36101f6565b81516001600160401b038111156103c8575f5ffd5b6103d486828501610218565b82525060208201516001600160401b038111156103ef575f5ffd5b6103fb86828501610218565b6020830152506040828101519082015260608083015190820152610421608083016102a1565b608082015261043260a083016102bc565b60a082015260c08201516001600160401b0381111561044f575f5ffd5b61045b868285016102cc565b60c083015250949350505050565b600181811c9082168061047d57607f821691505b60208210810361049b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b557805f5260205f20601f840160051c810160208510156104c65750805b601f840160051c820191505b818110156104e5575f81556001016104d2565b5050505050565b81516001600160401b03811115610505576105056101ba565b610519816105138454610469565b846104a1565b6020601f82116001811461054b575f83156105345750848201515b5f19600385901b1c1916600184901b1784556104e5565b5f84815260208120601f198516915b8281101561057a578785015182556020948501946001909201910161055a565b508482101561059757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a0516119506105c75f395f6102ae01525f6101cc01526119505ff3fe608060405234801561000f575f5ffd5b506004361061011c575f3560e01c8063392f37e9116100a9578063a9059cbb1161006e578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610296578063ef126967146102a9578063ef31f2cd146102d0575f5ffd5b8063392f37e9146101fe5780633c130d901461021657806370a082311461021e5780637ecebe001461024357806395d89b4114610268575f5ffd5b806318bf5077116100ef57806318bf50771461018a57806323b872dd1461019f5780632b8c49e3146101b2578063313ce567146101c55780633644e515146101f6575f5ffd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b5f5ffd5b61013361012e3660046114df565b6102f6565b60405190151581526020015b60405180910390f35b610150610347565b60405161013f9190611534565b61013361016b366004611561565b6103d6565b6805345cdf77eb68f44c545b60405190815260200161013f565b61019d610198366004611561565b610455565b005b6101336101ad366004611589565b6104df565b61019d6101c0366004611561565b61059c565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161013f565b61017c610619565b610206610695565b60405161013f94939291906115c3565b61015061084c565b61017c61022c366004611617565b6387a211a2600c9081525f91909152602090205490565b61017c610251366004611617565b6338377508600c9081525f91909152602090205490565b610150610a2e565b61013361027e366004611561565b610a3d565b61019d610291366004611630565b610aa1565b61017c6102a436600461169d565b610c55565b61017c7f000000000000000000000000000000000000000000000000000000000000000081565b6102de6028602160991b0181565b6040516001600160a01b03909116815260200161013f565b5f6001600160e01b03198216630cccc66560e21b148061032657506001600160e01b031982166336372b0760e01b145b8061034157506001600160e01b031982166301ffc9a760e01b145b92915050565b60605f8054610355906116ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610381906116ce565b80156103cc5780601f106103a3576101008083540402835291602001916103cc565b820191905f5260205f20905b8154815290600101906020018083116103af57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761040757633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b011461049057604051632e0d831f60e01b81523360048201526028602160991b0160248201526044015b60405180910390fd5b61049a8282610c99565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105345733602052637f5e9f208117600c526034600c208054801915610531578085111561052b576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c2080548085111561055a5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f5160206119245f395f51905f52602080a3505060015b9392505050565b336028602160991b01146105d257604051632e0d831f60e01b81523360048201526028602160991b016024820152604401610487565b6105dc8282610d02565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd4906020016104d3565b5f80610623610347565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916106b3906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546106df906116ce565b801561072a5780601f106107015761010080835404028352916020019161072a565b820191905f5260205f20905b81548152906001019060200180831161070d57829003601f168201915b50505050509080600201805461073f906116ce565b80601f016020809104026020016040519081016040528092919081815260200182805461076b906116ce565b80156107b65780601f1061078d576101008083540402835291602001916107b6565b820191905f5260205f20905b81548152906001019060200180831161079957829003601f168201915b5050505050908060030180546107cb906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546107f7906116ce565b80156108425780601f1061081957610100808354040283529160200191610842565b820191905f5260205f20905b81548152906001019060200180831161082557829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b0316825260038054606093610a299390929091602084019190610884906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546108b0906116ce565b80156108fb5780601f106108d2576101008083540402835291602001916108fb565b820191905f5260205f20905b8154815290600101906020018083116108de57829003601f168201915b50505050508152602001600282018054610914906116ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610940906116ce565b801561098b5780601f106109625761010080835404028352916020019161098b565b820191905f5260205f20905b81548152906001019060200180831161096e57829003601f168201915b505050505081526020016003820180546109a4906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546109d0906116ce565b8015610a1b5780601f106109f257610100808354040283529160200191610a1b565b820191905f5260205f20905b8154815290600101906020018083116109fe57829003601f168201915b505050505081525050610d63565b905090565b606060018054610355906116ce565b5f6387a211a2600c52335f526020600c20805480841115610a655763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f5160206119245f395f51905f52602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba31885191517610ad157633f68539a5f526004601cfd5b5f610ada610347565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b1957631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610c015763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610c7e57505f19610341565b50602052637f5e9f20600c9081525f91909152603490205490565b6805345cdf77eb68f44c5481810181811015610cbc5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f5160206119245f395f51905f52602080a35050565b6387a211a2600c52815f526020600c20805480831115610d295763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f5160206119245f395f51905f52602083a35050565b6060610d76610d7183610d9c565b610eb3565b604051602001610d86919061171d565b6040516020818303038152906040529050919050565b60605f610db4835f01516001600160a01b0316610ed9565b604051602001610dc4919061174e565b60405160208183030381529060405290505f8360200151511115610e135780610df08460200151610f87565b604051602001610e0192919061177f565b60405160208183030381529060405290505b60408301515115610e4f5780610e2c8460400151610f87565b604051602001610e3d9291906117c1565b60405160208183030381529060405290505b60608301515115610e8b5780610e688460600151610f87565b604051602001610e799291906117ec565b60405160208183030381529060405290505b80604051602001610e9c9190611815565b604051602081830303815290604052915050919050565b6060610341826040518060600160405280604081526020016118e46040913960016111d9565b60605f610ee583611354565b6028602282012090915060601c60295b6001811115610f7e57600782600f16118015610f2a57506060838281518110610f2057610f20611831565b016020015160f81c115b15610f6757602060f81b838281518110610f4657610f46611831565b0160200180516001600160f81b0319908116909218909116905f82901a9053505b60049190911c90610f7781611859565b9050610ef5565b50909392505050565b805160609082905f90610f9b90600261186e565b67ffffffffffffffff811115610fb357610fb3611885565b6040519080825280601f01601f191660200182016040528015610fdd576020820181803683370190505b5090505f805b83518110156111c2575f610ffa8583016020015190565b90506b100000000000000400003700600160f883901c1b161561118457601760fa1b848461102781611899565b95508151811061103957611039611831565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b036110a157603160f91b848461107481611899565b95508151811061108657611086611831565b60200101906001600160f81b03191690815f1a9053506111b9565b6001600160f81b03198116600960f81b036110c657601d60fa1b848461107481611899565b6001600160f81b03198116600560f91b036110eb57603760f91b848461107481611899565b6001600160f81b03198116600360fa1b0361111057603360f91b848461107481611899565b6001600160f81b03198116600d60f81b0361113557603960f91b848461107481611899565b6001600160f81b03198116601760fa1b0361115a57601760fa1b848461107481611899565b6001600160f81b03198116601160f91b0361117f57601160f91b848461107481611899565b6111b9565b80848461119081611899565b9550815181106111a2576111a2611831565b60200101906001600160f81b03191690815f1a9053505b50600101610fe3565b50808252603f01601f191681016040529392505050565b606083515f036111f7575060408051602081019091525f8152610595565b5f826112275760038551600461120d919061186e565b6112189060026118b1565b61122291906118c4565b61124c565b60038551600261123791906118b1565b61124191906118c4565b61124c90600461186e565b90505f8167ffffffffffffffff81111561126857611268611885565b6040519080825280601f01601f191660200182016040528015611292576020820181803683370190505b509050600185016020820187885189016020810180515f82525b82841015611307576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506112ac565b9052505085156113485760038851066001811461132b576002811461133e57611346565b603d6001830353603d6002830353611346565b603d60018303535b505b50909695505050505050565b60606103416001600160a01b03831660146060825f61137484600261186e565b61137f9060026118b1565b67ffffffffffffffff81111561139757611397611885565b6040519080825280601f01601f1916602001820160405280156113c1576020820181803683370190505b509050600360fc1b815f815181106113db576113db611831565b60200101906001600160f81b03191690815f1a905350600f60fb1b8160018151811061140957611409611831565b60200101906001600160f81b03191690815f1a9053505f61142b85600261186e565b6114369060016118b1565b90505b60018111156114ad576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061146a5761146a611831565b1a60f81b82828151811061148057611480611831565b60200101906001600160f81b03191690815f1a90535060049290921c916114a681611859565b9050611439565b5081156114d75760405163e22e27eb60e01b81526004810186905260248101859052604401610487565b949350505050565b5f602082840312156114ef575f5ffd5b81356001600160e01b031981168114610595575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105956020830184611506565b80356001600160a01b038116811461155c575f5ffd5b919050565b5f5f60408385031215611572575f5ffd5b61157b83611546565b946020939093013593505050565b5f5f5f6060848603121561159b575f5ffd5b6115a484611546565b92506115b260208501611546565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f906115e690830186611506565b82810360408401526115f88186611506565b9050828103606084015261160c8185611506565b979650505050505050565b5f60208284031215611627575f5ffd5b61059582611546565b5f5f5f5f5f5f5f60e0888a031215611646575f5ffd5b61164f88611546565b965061165d60208901611546565b95506040880135945060608801359350608088013560ff81168114611680575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156116ae575f5ffd5b6116b783611546565b91506116c560208401611546565b90509250929050565b600181811c908216806116e257607f821691505b60208210810361170057634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610595601d830184611706565b6b3d9121b932b0ba37b9111d1160a11b81525f61176e600c830184611706565b601160f91b81526001019392505050565b5f61178a8285611706565b701610112232b9b1b934b83a34b7b7111d1160791b81526117ae6011820185611706565b601160f91b815260010195945050505050565b5f6117cc8285611706565b6c1610112bb2b139b4ba32911d1160991b81526117ae600d820185611706565b5f6117f78285611706565b6a16101124b6b0b3b2911d1160a91b81526117ae600b820185611706565b5f6118208284611706565b607d60f81b81526001019392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8161186757611867611845565b505f190190565b808202811582820484141761034157610341611845565b634e487b7160e01b5f52604160045260245ffd5b5f600182016118aa576118aa611845565b5060010190565b8082018082111561034157610341611845565b5f826118de57634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081c000aa164736f6c634300081c000a'; + hex'6080604052348015600e575f5ffd5b50612dab8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806340c84ea014610043578063a255e0ad14610073578063a5ea11da14610086575b5f5ffd5b6100566100513660046109d0565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b610056610081366004610aac565b610133565b61008e610490565b60405161006a9190610bee565b5f5f8787878787876040516020016100b896959493929190610ca6565b6040516020818303038152906040528051906020012090505f604051806020016100e190610807565b601f1982820381018352601f9091011660408190526101039190602001610cfc565b6040516020818303038152906040528051906020012090506101268282306107d5565b9998505050505050505050565b5f80808061014386880188610d12565b9250925092508246036101d857336001600160a01b038316146101915760405160016223c24760e11b031981523360048201526001600160a01b038316602482015260440160405180910390fd5b6001600160a01b0388166101b857604051636c38382960e11b815260040160405180910390fd5b885f036101d857604051637ceabcb560e11b815260040160405180910390fd5b5f8c8c8c86868a6040516020016101f496959493929190610ca6565b6040516020818303038152906040528051906020012090508346146102425760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a6001600160a01b03168152602001846001600160a01b031681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506080820151816004015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c08201518160050190816103429190610e71565b5060e082015160068201906103579082610e71565b506101008201518051600783019081906103719082610e71565b50602082015160018201906103869082610e71565b506040820151600282019061039b9082610e71565b505050905050806040516103ae90610807565b8190604051809103905ff59050801580156103cb573d5f5f3e3d5ffd5b505f80805560018190556002819055600380546001600160a01b0319169055600480546001600160a81b031916905590955080610409600582610814565b610416600683015f610814565b600782015f6104258282610814565b610432600183015f610814565b61043f600283015f610814565b50506040516001600160a01b03881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b61049861084e565b60408051610120810182525f805482526001546020830152600254928201929092526003546001600160a01b0390811660608301526004549081166080830152600160a01b900460ff1660a08201526005805491929160c0840191906104fd90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461052990610ded565b80156105745780601f1061054b57610100808354040283529160200191610574565b820191905f5260205f20905b81548152906001019060200180831161055757829003601f168201915b5050505050815260200160068201805461058d90610ded565b80601f01602080910402602001604051908101604052809291908181526020018280546105b990610ded565b80156106045780601f106105db57610100808354040283529160200191610604565b820191905f5260205f20905b8154815290600101906020018083116105e757829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461062c90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461065890610ded565b80156106a35780601f1061067a576101008083540402835291602001916106a3565b820191905f5260205f20905b81548152906001019060200180831161068657829003601f168201915b505050505081526020016001820180546106bc90610ded565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890610ded565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b5050505050815260200160028201805461074c90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461077890610ded565b80156107c35780601f1061079a576101008083540402835291602001916107c3565b820191905f5260205f20905b8154815290600101906020018083116107a657829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611e7380610f2c83390190565b50805461082090610ded565b5f825580601f1061082f575050565b601f0160209004905f5260205f209081019061084b91906108ca565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f60ff16815260200160608152602001606081526020016108c560405180606001604052806060815260200160608152602001606081525090565b905290565b5b808211156108de575f81556001016108cb565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715610918576109186108e2565b60405290565b5f82601f83011261092d575f5ffd5b81356001600160401b03811115610946576109466108e2565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610974576109746108e2565b60405281815283820160200185101561098b575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146109b7575f5ffd5b919050565b6001600160a01b038116811461084b575f5ffd5b5f5f5f5f5f5f60c087890312156109e5575f5ffd5b86356001600160401b038111156109fa575f5ffd5b610a0689828a0161091e565b96505060208701356001600160401b03811115610a21575f5ffd5b610a2d89828a0161091e565b955050610a3c604088016109a7565b9350606087013592506080870135610a53816109bc565b9598949750929591949360a090920135925050565b5f5f83601f840112610a78575f5ffd5b5081356001600160401b03811115610a8e575f5ffd5b602083019150836020828501011115610aa5575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610ac3575f5ffd5b88356001600160401b03811115610ad8575f5ffd5b610ae48b828c0161091e565b98505060208901356001600160401b03811115610aff575f5ffd5b610b0b8b828c0161091e565b975050610b1a60408a016109a7565b9550606089013594506080890135610b31816109bc565b935060a08901356001600160401b03811115610b4b575f5ffd5b610b578b828c01610a68565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815160608452610bb26060850182610b70565b905060208301518482036020860152610bcb8282610b70565b91505060408301518482036040860152610be58282610b70565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610c2860808401826001600160a01b03169052565b5060808301516001600160a01b03811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610c68610140840182610b70565b905060e0840151601f1984830301610100850152610c868282610b70565b915050610100840151601f1984830301610120850152610be58282610b9e565b60c081525f610cb860c0830189610b70565b8281036020840152610cca8189610b70565b60ff979097166040840152505060608101939093526001600160a01b0391909116608083015260a09091015292915050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610d24575f5ffd5b833592506020840135610d36816109bc565b915060408401356001600160401b03811115610d50575f5ffd5b840160608187031215610d61575f5ffd5b610d696108f6565b81356001600160401b03811115610d7e575f5ffd5b610d8a8882850161091e565b82525060208201356001600160401b03811115610da5575f5ffd5b610db18882850161091e565b60208301525060408201356001600160401b03811115610dcf575f5ffd5b610ddb8882850161091e565b60408301525080925050509250925092565b600181811c90821680610e0157607f821691505b602082108103610e1f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610e6c57805f5260205f20601f840160051c81016020851015610e4a5750805b601f840160051c820191505b81811015610e69575f8155600101610e56565b50505b505050565b81516001600160401b03811115610e8a57610e8a6108e2565b610e9e81610e988454610ded565b84610e25565b6020601f821160018114610ed0575f8315610eb95750848201515b5f19600385901b1c1916600184901b178455610e69565b5f84815260208120601f198516915b82811015610eff5787850151825560209485019460019092019101610edf565b5084821015610f1c57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e051610100516117fb6106785f395f61030201525f61022101525f61016301525f61033701525f81816106800152610b3701526117fb5ff3fe608060405234801561000f575f5ffd5b5060043610610132575f3560e01c8063392f37e9116100b4578063a9059cbb11610079578063a9059cbb146102c4578063d505accf146102d7578063dd62ed3e146102ea578063ef126967146102fd578063ef31f2cd14610324578063f56a499f14610332575f5ffd5b8063392f37e9146102535780633c130d901461026a57806370a08231146102725780637ecebe001461029757806395d89b41146102bc575f5ffd5b806318bf5077116100fa57806318bf5077146101df57806323b872dd146101f45780632b8c49e314610207578063313ce5671461021a5780633644e5151461024b575f5ffd5b806301ffc9a71461013657806302d05d3f1461015e57806306fdde031461019d578063095ea7b3146101b257806318160ddd146101c5575b5f5ffd5b6101496101443660046113cb565b610359565b60405190151581526020015b60405180910390f35b6101857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610155565b6101a5610384565b6040516101559190611420565b6101496101c036600461144d565b610413565b6805345cdf77eb68f44c545b604051908152602001610155565b6101f26101ed36600461144d565b610492565b005b610149610202366004611475565b610543565b6101f261021536600461144d565b610600565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610155565b6101d161067d565b61025b61071f565b604051610155939291906114af565b6101a56108c7565b6101d16102803660046114f1565b6387a211a2600c9081525f91909152602090205490565b6101d16102a53660046114f1565b6338377508600c9081525f91909152602090205490565b6101a5610a92565b6101496102d236600461144d565b610aa1565b6101f26102e536600461150a565b610b05565b6101d16102f8366004611577565b610cdf565b6101d17f000000000000000000000000000000000000000000000000000000000000000081565b6101856028602160991b0181565b6101d17f000000000000000000000000000000000000000000000000000000000000000081565b5f61036382610d23565b8061037e57506001600160e01b03198216630cccc66560e21b145b92915050565b60605f8054610392906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546103be906115a8565b80156104095780601f106103e057610100808354040283529160200191610409565b820191905f5260205f20905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761044457633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b01146104cd57604051632e0d831f60e01b81523360048201526028602160991b0160248201526044015b60405180910390fd5b6001600160a01b0382166104f457604051636c38382960e11b815260040160405180910390fd5b6104fe8282610d73565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105985733602052637f5e9f208117600c526034600c208054801915610595578085111561058f576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156105be5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f5160206117cf5f395f51905f52602080a3505060015b9392505050565b336028602160991b011461063657604051632e0d831f60e01b81523360048201526028602160991b0160248201526044016104c4565b6106408282610ddc565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610537565b5f7f0000000000000000000000000000000000000000000000000000000000000000806106b6576106ac610384565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061072e906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461075a906115a8565b80156107a55780601f1061077c576101008083540402835291602001916107a5565b820191905f5260205f20905b81548152906001019060200180831161078857829003601f168201915b5050505050908060010180546107ba906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546107e6906115a8565b80156108315780601f1061080857610100808354040283529160200191610831565b820191905f5260205f20905b81548152906001019060200180831161081457829003601f168201915b505050505090806002018054610846906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610872906115a8565b80156108bd5780601f10610894576101008083540402835291602001916108bd565b820191905f5260205f20905b8154815290600101906020018083116108a057829003601f168201915b5050505050905083565b6060610a8d60026040518060600160405290815f820180546108e8906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610914906115a8565b801561095f5780601f106109365761010080835404028352916020019161095f565b820191905f5260205f20905b81548152906001019060200180831161094257829003601f168201915b50505050508152602001600182018054610978906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546109a4906115a8565b80156109ef5780601f106109c6576101008083540402835291602001916109ef565b820191905f5260205f20905b8154815290600101906020018083116109d257829003601f168201915b50505050508152602001600282018054610a08906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a34906115a8565b8015610a7f5780601f10610a5657610100808354040283529160200191610a7f565b820191905f5260205f20905b815481529060010190602001808311610a6257829003601f168201915b505050505081525050610e3d565b905090565b606060018054610392906115a8565b5f6387a211a2600c52335f526020600c20805480841115610ac95763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f5160206117cf5f395f51905f52602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba31885191517610b3557633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610b6d57610b63610384565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610ba357631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610c8b5763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610d0857505f1961037e565b50602052637f5e9f20600c9081525f91909152603490205490565b5f6001600160e01b031982166301ffc9a760e01b1480610d5357506001600160e01b031982166336372b0760e01b145b8061037e57506001600160e01b03198216634ec7fbed60e11b1492915050565b6805345cdf77eb68f44c5481810181811015610d965763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f5160206117cf5f395f51905f52602080a35050565b6387a211a2600c52815f526020600c20805480831115610e035763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f5160206117cf5f395f51905f52602083a35050565b6060610e50610e4b83610e76565b610fd8565b604051602001610e6091906115f7565b6040516020818303038152906040529050919050565b60605f604051602001610e9090607b60f81b815260010190565b60408051601f198184030181529190528351519091505f9015610ee15781610eba855f0151610ffe565b604051602001610ecb929190611628565b6040516020818303038152906040529150600190505b60208401515115610f4a578015610f155781604051602001610f039190611668565b60405160208183030381529060405291505b81610f238560200151610ffe565b604051602001610f34929190611685565b6040516020818303038152906040529150600190505b60408401515115610faf578015610f7e5781604051602001610f6c9190611668565b60405160208183030381529060405291505b81610f8c8560400151610ffe565b604051602001610f9d9291906116ae565b60405160208183030381529060405291505b81604051602001610fc091906116d5565b60405160208183030381529060405292505050919050565b606061037e8260405180606001604052806040815260200161178f604091396001611250565b805160609082905f90611012906002611705565b67ffffffffffffffff81111561102a5761102a61171c565b6040519080825280601f01601f191660200182016040528015611054576020820181803683370190505b5090505f805b8351811015611239575f6110718583016020015190565b90506b100000000000000400003700600160f883901c1b16156111fb57601760fa1b848461109e81611730565b9550815181106110b0576110b0611748565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b0361111857603160f91b84846110eb81611730565b9550815181106110fd576110fd611748565b60200101906001600160f81b03191690815f1a905350611230565b6001600160f81b03198116600960f81b0361113d57601d60fa1b84846110eb81611730565b6001600160f81b03198116600560f91b0361116257603760f91b84846110eb81611730565b6001600160f81b03198116600360fa1b0361118757603360f91b84846110eb81611730565b6001600160f81b03198116600d60f81b036111ac57603960f91b84846110eb81611730565b6001600160f81b03198116601760fa1b036111d157601760fa1b84846110eb81611730565b6001600160f81b03198116601160f91b036111f657601160f91b84846110eb81611730565b611230565b80848461120781611730565b95508151811061121957611219611748565b60200101906001600160f81b03191690815f1a9053505b5060010161105a565b50808252603f01601f191681016040529392505050565b606083515f0361126e575060408051602081019091525f81526105f9565b5f8261129e576003855160046112849190611705565b61128f90600261175c565b611299919061176f565b6112c3565b6003855160026112ae919061175c565b6112b8919061176f565b6112c3906004611705565b90505f8167ffffffffffffffff8111156112df576112df61171c565b6040519080825280601f01601f191660200182016040528015611309576020820181803683370190505b509050600185016020820187885189016020810180515f82525b8284101561137e576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450611323565b9052505085156113bf576003885106600181146113a257600281146113b5576113bd565b603d6001830353603d60028303536113bd565b603d60018303535b505b50909695505050505050565b5f602082840312156113db575f5ffd5b81356001600160e01b0319811681146105f9575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105f960208301846113f2565b80356001600160a01b0381168114611448575f5ffd5b919050565b5f5f6040838503121561145e575f5ffd5b61146783611432565b946020939093013593505050565b5f5f5f60608486031215611487575f5ffd5b61149084611432565b925061149e60208501611432565b929592945050506040919091013590565b606081525f6114c160608301866113f2565b82810360208401526114d381866113f2565b905082810360408401526114e781856113f2565b9695505050505050565b5f60208284031215611501575f5ffd5b6105f982611432565b5f5f5f5f5f5f5f60e0888a031215611520575f5ffd5b61152988611432565b965061153760208901611432565b95506040880135945060608801359350608088013560ff8116811461155a575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611588575f5ffd5b61159183611432565b915061159f60208401611432565b90509250929050565b600181811c908216806115bc57607f821691505b6020821081036115da57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6105f9601d8301846115e0565b5f61163382856115e0565b6e113232b9b1b934b83a34b7b7111d1160891b8152611655600f8201856115e0565b601160f91b815260010195945050505050565b5f61167382846115e0565b61016160f51b81526002019392505050565b5f61169082856115e0565b6a113bb2b139b4ba32911d1160a91b8152611655600b8201856115e0565b5f6116b982856115e0565b681134b6b0b3b2911d1160b91b815261165560098201856115e0565b5f6116e082846115e0565b607d60f81b81526001019392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761037e5761037e6116f1565b634e487b7160e01b5f52604160045260245ffd5b5f60018201611741576117416116f1565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561037e5761037e6116f1565b5f8261178957634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081c000aa164736f6c634300081c000a'; } } diff --git a/src/briefcase/deployers/v3-periphery/SwapRouterDeployer.sol b/src/briefcase/deployers/v3-periphery/SwapRouterDeployer.sol index 94debfc4..9e35e4ca 100644 --- a/src/briefcase/deployers/v3-periphery/SwapRouterDeployer.sol +++ b/src/briefcase/deployers/v3-periphery/SwapRouterDeployer.sol @@ -19,6 +19,6 @@ library SwapRouterDeployer { */ function initcode() internal pure returns (bytes memory) { return - hex'60c06040526000196000553480156200001757600080fd5b5060405162002778380380620027788339810160408190526200003a9162000076565b6001600160601b0319606092831b8116608052911b1660a052620000ad565b80516001600160a01b03811681146200007157600080fd5b919050565b6000806040838503121562000089578182fd5b620000948362000059565b9150620000a46020840162000059565b90509250929050565b60805160601c60a05160601c61266f620001096000398061011252806104c752806105b2528061063f528061067f528061076a5280611721528061176752806117db525080610ba3528061109e52806118b6525061266f6000f3fe6080604052600436106101025760003560e01c8063c04b8d5911610095578063df2ab5bb11610064578063df2ab5bb14610284578063e0e189a014610297578063f28c0498146102aa578063f3995c67146102bd578063fa461e33146102d057610172565b8063c04b8d5914610236578063c2e3140a14610249578063c45a01551461025c578063db3e21981461027157610172565b80634aa4a4fc116100d15780634aa4a4fc146101ce5780639b2c0a37146101f0578063a4a78f0c14610203578063ac9650d81461021657610172565b806312210e8a14610177578063414bf3891461017f5780634659a494146101a857806349404b7c146101bb57610172565b3661017257336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610170576040805162461bcd60e51b81526020600482015260096024820152684e6f7420574554483960b81b604482015290519081900360640190fd5b005b600080fd5b6101706102f0565b61019261018d36600461222a565b610302565b60405161019f9190612583565b60405180910390f35b6101706101b6366004611fa8565b610429565b6101706101c9366004612331565b6104c3565b3480156101da57600080fd5b506101e361063d565b60405161019f9190612420565b6101706101fe366004612360565b610661565b610170610211366004611fa8565b61082d565b610229610224366004612008565b6108be565b60405161019f919061247a565b61019261024436600461217f565b6109fe565b610170610257366004611fa8565b610b12565b34801561026857600080fd5b506101e3610ba1565b61019261027f36600461222a565b610bc5565b610170610292366004611f09565b610cec565b6101706102a5366004611f4a565b610dca565b6101926102b8366004612246565b610ef1565b6101706102cb366004611fa8565b610fe7565b3480156102dc57600080fd5b506101706102eb36600461209a565b611059565b471561030057610300334761116c565b565b600081608001358061031261125b565b111561035b576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b6103f460a08401356103736080860160608701611ee6565b610384610100870160e08801611ee6565b604080518082019091528061039c60208a018a611ee6565b6103ac60608b0160408c0161230e565b6103bc60408c0160208d01611ee6565b6040516020016103ce939291906123d5565b6040516020818303038152906040528152602001336001600160a01b031681525061125f565b91508260c001358210156104235760405162461bcd60e51b815260040161041a90612519565b60405180910390fd5b50919050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b1580156104a357600080fd5b505af11580156104b7573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561053257600080fd5b505afa158015610546573d6000803e3d6000fd5b505050506040513d602081101561055c57600080fd5b50519050828110156105aa576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e7420574554483960701b604482015290519081900360640190fd5b8015610638577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561061657600080fd5b505af115801561062a573d6000803e3d6000fd5b50505050610638828261116c565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610672575060648211155b61067b57600080fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d602081101561071457600080fd5b5051905084811015610762576040805162461bcd60e51b8152602060048201526012602482015271496e73756666696369656e7420574554483960701b604482015290519081900360640190fd5b8015610826577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156107ce57600080fd5b505af11580156107e2573d6000803e3d6000fd5b5050505060006127106107fe85846113b190919063ffffffff16565b8161080557fe5b049050801561081857610818838261116c565b6108248582840361116c565b505b5050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561087e57600080fd5b505afa158015610892573d6000803e3d6000fd5b505050506040513d60208110156108a857600080fd5b5051101561082457610824868686868686610429565b60608167ffffffffffffffff811180156108d757600080fd5b5060405190808252806020026020018201604052801561090b57816020015b60608152602001906001900390816108f65790505b50905060005b828110156109f7576000803086868581811061092957fe5b905060200281019061093b919061258c565b604051610949929190612410565b600060405180830381855af49150503d8060008114610984576040519150601f19603f3d011682016040523d82523d6000602084013e610989565b606091505b5091509150816109d5576044815110156109a257600080fd5b600481019050808060200190518101906109bc9190612115565b60405162461bcd60e51b815260040161041a91906124da565b808484815181106109e257fe5b60209081029190910101525050600101610911565b5092915050565b6000816040015180610a0e61125b565b1115610a57576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b335b6000610a6885600001516113db565b9050610ab4856060015182610a81578660200151610a83565b305b60006040518060400160405280610a9d8b600001516113e7565b8152602001876001600160a01b031681525061125f565b60608601528015610ad4578451309250610acd906113f6565b8552610ae1565b8460600151935050610ae7565b50610a59565b8360800151831015610b0b5760405162461bcd60e51b815260040161041a90612519565b5050919050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015610b6157600080fd5b505afa158015610b75573d6000803e3d6000fd5b505050506040513d6020811015610b8b57600080fd5b5051101561082457610824868686868686610fe7565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000816080013580610bd561125b565b1115610c1e576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b610cba60a0840135610c366080860160608701611ee6565b610c47610100870160e08801611ee6565b6040518060400160405280886020016020810190610c659190611ee6565b610c7560608b0160408c0161230e565b610c8260208c018c611ee6565b604051602001610c94939291906123d5565b6040516020818303038152906040528152602001336001600160a01b031681525061140d565b91508260c00135821115610ce05760405162461bcd60e51b815260040161041a906124ed565b50600019600055919050565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d3b57600080fd5b505afa158015610d4f573d6000803e3d6000fd5b505050506040513d6020811015610d6557600080fd5b5051905082811015610db3576040805162461bcd60e51b815260206004820152601260248201527124b739bab33334b1b4b2b73a103a37b5b2b760711b604482015290519081900360640190fd5b8015610dc457610dc4848383611588565b50505050565b600082118015610ddb575060648211155b610de457600080fd5b6000856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610e3357600080fd5b505afa158015610e47573d6000803e3d6000fd5b505050506040513d6020811015610e5d57600080fd5b5051905084811015610eab576040805162461bcd60e51b815260206004820152601260248201527124b739bab33334b1b4b2b73a103a37b5b2b760711b604482015290519081900360640190fd5b8015610824576000612710610ec083866113b1565b81610ec757fe5b0490508015610edb57610edb878483611588565b610ee88786838503611588565b50505050505050565b6000816040013580610f0161125b565b1115610f4a576040805162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b604482015290519081900360640190fd5b610fbd6060840135610f626040860160208701611ee6565b6040805180820190915260009080610f7a898061258c565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360209091015261140d565b5060005491508260800135821115610ce05760405162461bcd60e51b815260040161041a906124ed565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b1580156104a357600080fd5b60008413806110685750600083135b61107157600080fd5b600061107f8284018461227e565b9050600080600061109384600001516116cf565b9250925092506110c57f0000000000000000000000000000000000000000000000000000000000000000848484611700565b5060008060008a136110ec57846001600160a01b0316846001600160a01b03161089611103565b836001600160a01b0316856001600160a01b0316108a5b9150915081156111225761111d858760200151338461171f565b6104b7565b855161112d906113db565b1561115257855161113d906113f6565b865261114c813360008961140d565b506104b7565b806000819055508394506104b7858760200151338461171f565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106111b85780518252601f199092019160209182019101611199565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461121a576040519150601f19603f3d011682016040523d82523d6000602084013e61121f565b606091505b5050905080610638576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b4290565b60006001600160a01b038416611273573093505b600080600061128585600001516116cf565b919450925090506001600160a01b03808316908416106000806112a98686866118af565b6001600160a01b031663128acb088b856112c28f6118ed565b6001600160a01b038e16156112d7578d6112fd565b876112f65773fffd8963efd1fc6a506488495d951d5263988d256112fd565b6401000276a45b8d60405160200161130e9190612546565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161133d959493929190612434565b6040805180830381600087803b15801561135657600080fd5b505af115801561136a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138e9190612077565b915091508261139d578161139f565b805b6000039b9a5050505050505050505050565b60008215806113cc575050818102818382816113c957fe5b04145b6113d557600080fd5b92915050565b8051604211155b919050565b60606113d5826000602b611903565b80516060906113d590839060179060161901611903565b60006001600160a01b038416611421573093505b600080600061143385600001516116cf565b919450925090506001600160a01b03808416908316106000806114578587866118af565b6001600160a01b031663128acb088b856114708f6118ed565b6000036001600160a01b038e1615611488578d6114ae565b876114a75773fffd8963efd1fc6a506488495d951d5263988d256114ae565b6401000276a45b8d6040516020016114bf9190612546565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016114ee959493929190612434565b6040805180830381600087803b15801561150757600080fd5b505af115801561151b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153f9190612077565b9150915060008361155457818360000361155a565b82826000035b90985090506001600160a01b038a16611579578b811461157957600080fd5b50505050505050949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106116045780518252601f1990920191602091820191016115e5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611666576040519150601f19603f3d011682016040523d82523d6000602084013e61166b565b606091505b5091509150818015611699575080511580611699575080806020019051602081101561169657600080fd5b50515b610826576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b600080806116dd8482611a54565b92506116ea846014611b04565b90506116f7846017611a54565b91509193909250565b600061171685611711868686611bab565b611c01565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156117605750804710155b15611882577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156117c057600080fd5b505af11580156117d4573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561185057600080fd5b505af1158015611864573d6000803e3d6000fd5b505050506040513d602081101561187a57600080fd5b50610dc49050565b6001600160a01b0383163014156118a35761189e848383611588565b610dc4565b610dc484848484611c24565b60006118e57f00000000000000000000000000000000000000000000000000000000000000006118e0868686611bab565b611d74565b949350505050565b6000600160ff1b82106118ff57600080fd5b5090565b60608182601f01101561194e576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611996576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b818301845110156119e2576040805162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015290519081900360640190fd5b606082158015611a015760405191506000825260208201604052611a4b565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611a3a578051835260209283019201611a22565b5050858452601f01601f1916604052505b50949350505050565b600081826014011015611aa3576040805162461bcd60e51b8152602060048201526012602482015271746f416464726573735f6f766572666c6f7760701b604482015290519081900360640190fd5b8160140183511015611af4576040805162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b604482015290519081900360640190fd5b500160200151600160601b900490565b600081826003011015611b52576040805162461bcd60e51b8152602060048201526011602482015270746f55696e7432345f6f766572666c6f7760781b604482015290519081900360640190fd5b8160030183511015611ba2576040805162461bcd60e51b8152602060048201526014602482015273746f55696e7432345f6f75744f66426f756e647360601b604482015290519081900360640190fd5b50016003015190565b611bb3611e58565b826001600160a01b0316846001600160a01b03161115611bd1579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000611c0d8383611d74565b9050336001600160a01b038216146113d557600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b178152925182516000948594938a169392918291908083835b60208310611ca85780518252601f199092019160209182019101611c89565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d0a576040519150601f19603f3d011682016040523d82523d6000602084013e611d0f565b606091505b5091509150818015611d3d575080511580611d3d5750808060200190516020811015611d3a57600080fd5b50515b610824576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b031610611d9c57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301206001600160f81b031960a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b80356113e28161264a565b600082601f830112611e93578081fd5b8135611ea6611ea1826125fc565b6125d8565b818152846020838601011115611eba578283fd5b816020850160208301379081016020019190915292915050565b60006101008284031215610423578081fd5b600060208284031215611ef7578081fd5b8135611f028161264a565b9392505050565b600080600060608486031215611f1d578182fd5b8335611f288161264a565b9250602084013591506040840135611f3f8161264a565b809150509250925092565b600080600080600060a08688031215611f61578081fd5b8535611f6c8161264a565b9450602086013593506040860135611f838161264a565b9250606086013591506080860135611f9a8161264a565b809150509295509295909350565b60008060008060008060c08789031215611fc0578081fd5b8635611fcb8161264a565b95506020870135945060408701359350606087013560ff81168114611fee578182fd5b9598949750929560808101359460a0909101359350915050565b6000806020838503121561201a578182fd5b823567ffffffffffffffff80821115612031578384fd5b818501915085601f830112612044578384fd5b813581811115612052578485fd5b8660208083028501011115612065578485fd5b60209290920196919550909350505050565b60008060408385031215612089578182fd5b505080516020909101519092909150565b600080600080606085870312156120af578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156120d4578384fd5b818701915087601f8301126120e7578384fd5b8135818111156120f5578485fd5b886020828501011115612106578485fd5b95989497505060200194505050565b600060208284031215612126578081fd5b815167ffffffffffffffff81111561213c578182fd5b8201601f8101841361214c578182fd5b805161215a611ea1826125fc565b81815285602083850101111561216e578384fd5b61171682602083016020860161261e565b600060208284031215612190578081fd5b813567ffffffffffffffff808211156121a7578283fd5b9083019060a082860312156121ba578283fd5b60405160a0810181811083821117156121cf57fe5b6040528235828111156121e0578485fd5b6121ec87828601611e83565b8252506121fb60208401611e78565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b6000610100828403121561223c578081fd5b611f028383611ed4565b600060208284031215612257578081fd5b813567ffffffffffffffff81111561226d578182fd5b820160a08185031215611f02578182fd5b60006020828403121561228f578081fd5b813567ffffffffffffffff808211156122a6578283fd5b90830190604082860312156122b9578283fd5b6040516040810181811083821117156122ce57fe5b6040528235828111156122df578485fd5b6122eb87828601611e83565b825250602083013592506122fe8361264a565b6020810192909252509392505050565b60006020828403121561231f578081fd5b813562ffffff81168114611f02578182fd5b60008060408385031215612343578182fd5b8235915060208301356123558161264a565b809150509250929050565b60008060008060808587031215612375578182fd5b8435935060208501356123878161264a565b925060408501359150606085013561239e8161264a565b939692955090935050565b600081518084526123c181602086016020860161261e565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b6001600160e81b0319166014820152921b166017820152602b0190565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a06080820181905260009061246f908301846123a9565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156124cd57603f198886030184526124bb8583516123a9565b9450928501929085019060010161249f565b5092979650505050505050565b600060208252611f0260208301846123a9565b602080825260129082015271151bdbc81b5d58da081c995c5d595cdd195960721b604082015260600190565b602080825260139082015272151bdbc81b1a5d1d1b19481c9958d95a5d9959606a1b604082015260600190565b60006020825282516040602084015261256260608401826123a9565b602094909401516001600160a01b0316604093909301929092525090919050565b90815260200190565b6000808335601e198436030181126125a2578283fd5b83018035915067ffffffffffffffff8211156125bc578283fd5b6020019150368190038213156125d157600080fd5b9250929050565b60405181810167ffffffffffffffff811182821017156125f457fe5b604052919050565b600067ffffffffffffffff82111561261057fe5b50601f01601f191660200190565b60005b83811015612639578181015183820152602001612621565b83811115610dc45750506000910152565b6001600160a01b038116811461265f57600080fd5b5056fea164736f6c6343000706000a'; + hex'60c06040526000196000553480156200001757600080fd5b506040516200302f3803806200302f8339810160408190526200003a9162000076565b6001600160601b0319606092831b8116608052911b1660a052620000ad565b80516001600160a01b03811681146200007157600080fd5b919050565b6000806040838503121562000089578182fd5b620000948362000059565b9150620000a46020840162000059565b90509250929050565b60805160601c60a05160601c612f26620001096000398061012f528061058352806106ad5280610747528061078752806108b15280611c435280611ca35280611d24525080610dc6528061140c5280611e265250612f266000f3fe6080604052600436106101125760003560e01c8063c04b8d59116100a5578063df2ab5bb11610074578063f28c049811610059578063f28c0498146102f5578063f3995c6714610308578063fa461e331461031b576101bd565b8063df2ab5bb146102cf578063e0e189a0146102e2576101bd565b8063c04b8d5914610281578063c2e3140a14610294578063c45a0155146102a7578063db3e2198146102bc576101bd565b80634aa4a4fc116100e15780634aa4a4fc146102195780639b2c0a371461023b578063a4a78f0c1461024e578063ac9650d814610261576101bd565b806312210e8a146101c2578063414bf389146101ca5780634659a494146101f357806349404b7c14610206576101bd565b366101bd573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101bb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b6101bb61033b565b6101dd6101d83660046129f8565b61034d565b6040516101ea9190612df1565b60405180910390f35b6101bb610201366004612776565b6104bf565b6101bb610214366004612aff565b61057f565b34801561022557600080fd5b5061022e610745565b6040516101ea9190612c37565b6101bb610249366004612b2e565b610769565b6101bb61025c366004612776565b610981565b61027461026f3660046127d6565b610a56565b6040516101ea9190612caa565b6101dd61028f36600461294d565b610bb0565b6101bb6102a2366004612776565b610d0f565b3480156102b357600080fd5b5061022e610dc4565b6101dd6102ca3660046129f8565b610de8565b6101bb6102dd3660046126d7565b610f78565b6101bb6102f0366004612718565b611095565b6101dd610303366004612a14565b6111fb565b6101bb610316366004612776565b61132f565b34801561032757600080fd5b506101bb610336366004612868565b6113c7565b471561034b5761034b334761150e565b565b600081608001358061035d61165c565b11156103ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b61047060a08401356103e260808601606087016126b4565b6103f3610100870160e088016126b4565b604080518082019091528061040b60208a018a6126b4565b61041b60608b0160408c01612adc565b61042b60408c0160208d016126b4565b60405160200161043d93929190612bc1565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff16815250611660565b91508260c001358210156104b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b090612d72565b60405180910390fd5b50919050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b15801561055f57600080fd5b505af1158015610573573d6000803e3d6000fd5b50505050505050505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561060857600080fd5b505afa15801561061c573d6000803e3d6000fd5b505050506040513d602081101561063257600080fd5b50519050828110156106a557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015610740577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561071e57600080fd5b505af1158015610732573d6000803e3d6000fd5b50505050610740828261150e565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008211801561077a575060648211155b61078357600080fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561080c57600080fd5b505afa158015610820573d6000803e3d6000fd5b505050506040513d602081101561083657600080fd5b50519050848110156108a957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b801561097a577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561092257600080fd5b505af1158015610936573d6000803e3d6000fd5b50505050600061271061095285846117e690919063ffffffff16565b8161095957fe5b049050801561096c5761096c838261150e565b6109788582840361150e565b505b5050505050565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b158015610a1657600080fd5b505afa158015610a2a573d6000803e3d6000fd5b505050506040513d6020811015610a4057600080fd5b50511015610978576109788686868686866104bf565b60608167ffffffffffffffff81118015610a6f57600080fd5b50604051908082528060200260200182016040528015610aa357816020015b6060815260200190600190039081610a8e5790505b50905060005b82811015610ba95760008030868685818110610ac157fe5b9050602002810190610ad39190612dfa565b604051610ae1929190612c27565b600060405180830381855af49150503d8060008114610b1c576040519150601f19603f3d011682016040523d82523d6000602084013e610b21565b606091505b509150915081610b8757604481511015610b3a57600080fd5b60048101905080806020019051810190610b5491906128e3565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b09190612d28565b80848481518110610b9457fe5b60209081029190910101525050600101610aa9565b5092915050565b6000816040015180610bc061165c565b1115610c2d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b335b6000610c3e8560000151611810565b9050610c97856060015182610c57578660200151610c59565b305b60006040518060400160405280610c738b6000015161181c565b81526020018773ffffffffffffffffffffffffffffffffffffffff16815250611660565b60608601528015610cb7578451309250610cb09061182b565b8552610cc4565b8460600151935050610cca565b50610c2f565b8360800151831015610d08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b090612d72565b5050919050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b158015610d8457600080fd5b505afa158015610d98573d6000803e3d6000fd5b505050506040513d6020811015610dae57600080fd5b505110156109785761097886868686868661132f565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000816080013580610df861165c565b1115610e6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b610f0e60a0840135610e7d60808601606087016126b4565b610e8e610100870160e088016126b4565b6040518060400160405280886020016020810190610eac91906126b4565b610ebc60608b0160408c01612adc565b610ec960208c018c6126b4565b604051602001610edb93929190612bc1565b60405160208183030381529060405281526020013373ffffffffffffffffffffffffffffffffffffffff16815250611860565b91508260c00135821115610f4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b090612d3b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600055919050565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610fe157600080fd5b505afa158015610ff5573d6000803e3d6000fd5b505050506040513d602081101561100b57600080fd5b505190508281101561107e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b801561108f5761108f848383611a1c565b50505050565b6000821180156110a6575060648211155b6110af57600080fd5b60008573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561111857600080fd5b505afa15801561112c573d6000803e3d6000fd5b505050506040513d602081101561114257600080fd5b50519050848110156111b557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b80156109785760006127106111ca83866117e6565b816111d157fe5b04905080156111e5576111e5878483611a1c565b6111f28786838503611a1c565b50505050505050565b600081604001358061120b61165c565b111561127857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b6112eb606084013561129060408601602087016126b4565b60408051808201909152600090806112a88980612dfa565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525033602090910152611860565b5060005491508260800135821115610f4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104b090612d3b565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b15801561055f57600080fd5b60008413806113d65750600083135b6113df57600080fd5b60006113ed82840184612a4c565b905060008060006114018460000151611bf1565b9250925092506114337f0000000000000000000000000000000000000000000000000000000000000000848484611c22565b5060008060008a13611474578473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610896114a5565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16108a5b9150915081156114c4576114bf8587602001513384611c41565b610573565b85516114cf90611810565b156114f45785516114df9061182b565b86526114ee8133600089611860565b50610573565b806000819055508394506105738587602001513384611c41565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061158557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611548565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146115e7576040519150601f19603f3d011682016040523d82523d6000602084013e6115ec565b606091505b505090508061074057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b4290565b600073ffffffffffffffffffffffffffffffffffffffff8416611681573093505b60008060006116938560000151611bf1565b9194509250905073ffffffffffffffffffffffffffffffffffffffff808316908416106000806116c4868686611e1f565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b856116ea8f611e5d565b73ffffffffffffffffffffffffffffffffffffffff8e161561170c578d611732565b8761172b5773fffd8963efd1fc6a506488495d951d5263988d25611732565b6401000276a45b8d6040516020016117439190612da9565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611772959493929190612c58565b6040805180830381600087803b15801561178b57600080fd5b505af115801561179f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c39190612845565b91509150826117d257816117d4565b805b6000039b9a5050505050505050505050565b6000821580611801575050818102818382816117fe57fe5b04145b61180a57600080fd5b92915050565b8051604211155b919050565b606061180a826000602b611e8f565b805160609061180a9083906017907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe901611e8f565b600073ffffffffffffffffffffffffffffffffffffffff8416611881573093505b60008060006118938560000151611bf1565b9194509250905073ffffffffffffffffffffffffffffffffffffffff808416908316106000806118c4858786611e1f565b73ffffffffffffffffffffffffffffffffffffffff1663128acb088b856118ea8f611e5d565b60000373ffffffffffffffffffffffffffffffffffffffff8e161561190f578d611935565b8761192e5773fffd8963efd1fc6a506488495d951d5263988d25611935565b6401000276a45b8d6040516020016119469190612da9565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611975959493929190612c58565b6040805180830381600087803b15801561198e57600080fd5b505af11580156119a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119c69190612845565b915091506000836119db5781836000036119e1565b82826000035b909850905073ffffffffffffffffffffffffffffffffffffffff8a16611a0d578b8114611a0d57600080fd5b50505050505050949350505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b60208310611af157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611ab4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b53576040519150601f19603f3d011682016040523d82523d6000602084013e611b58565b606091505b5091509150818015611b86575080511580611b865750808060200190516020811015611b8357600080fd5b50515b61097a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008080611bff8482612076565b9250611c0c846014612176565b9050611c19846017612076565b91509193909250565b6000611c3885611c33868686612266565b6122e3565b95945050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c9c5750804710155b15611de5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611d0957600080fd5b505af1158015611d1d573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611db357600080fd5b505af1158015611dc7573d6000803e3d6000fd5b505050506040513d6020811015611ddd57600080fd5b5061108f9050565b73ffffffffffffffffffffffffffffffffffffffff8316301415611e1357611e0e848383611a1c565b61108f565b61108f84848484612313565b6000611e557f0000000000000000000000000000000000000000000000000000000000000000611e50868686612266565b6124f0565b949350505050565b60007f80000000000000000000000000000000000000000000000000000000000000008210611e8b57600080fd5b5090565b60608182601f011015611f0357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b828284011015611f7457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015290519081900360640190fd5b81830184511015611fe657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015612005576040519150600082526020820160405261206d565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561203e578051835260209283019201612026565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b6000818260140110156120ea57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b816014018351101561215d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b6000818260030110156121ea57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b816003018351101561225d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b61226e612626565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1611156122a6579192915b506040805160608101825273ffffffffffffffffffffffffffffffffffffffff948516815292909316602083015262ffffff169181019190915290565b60006122ef83836124f0565b90503373ffffffffffffffffffffffffffffffffffffffff82161461180a57600080fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000178152925182516000948594938a169392918291908083835b602083106123f057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123b3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612452576040519150601f19603f3d011682016040523d82523d6000602084013e612457565b606091505b5091509150818015612485575080511580612485575080806020019051602081101561248257600080fd5b50515b61097857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354460000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000816020015173ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff161061253257600080fd5b508051602080830151604093840151845173ffffffffffffffffffffffffffffffffffffffff94851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660a183015260b58201939093527fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b5460d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b803561181781612ef4565b600082601f830112612661578081fd5b813561267461266f82612e88565b612e64565b818152846020838601011115612688578283fd5b816020850160208301379081016020019190915292915050565b600061010082840312156104b9578081fd5b6000602082840312156126c5578081fd5b81356126d081612ef4565b9392505050565b6000806000606084860312156126eb578182fd5b83356126f681612ef4565b925060208401359150604084013561270d81612ef4565b809150509250925092565b600080600080600060a0868803121561272f578081fd5b853561273a81612ef4565b945060208601359350604086013561275181612ef4565b925060608601359150608086013561276881612ef4565b809150509295509295909350565b60008060008060008060c0878903121561278e578081fd5b863561279981612ef4565b95506020870135945060408701359350606087013560ff811681146127bc578182fd5b9598949750929560808101359460a0909101359350915050565b600080602083850312156127e8578182fd5b823567ffffffffffffffff808211156127ff578384fd5b818501915085601f830112612812578384fd5b813581811115612820578485fd5b8660208083028501011115612833578485fd5b60209290920196919550909350505050565b60008060408385031215612857578182fd5b505080516020909101519092909150565b6000806000806060858703121561287d578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156128a2578384fd5b818701915087601f8301126128b5578384fd5b8135818111156128c3578485fd5b8860208285010111156128d4578485fd5b95989497505060200194505050565b6000602082840312156128f4578081fd5b815167ffffffffffffffff81111561290a578182fd5b8201601f8101841361291a578182fd5b805161292861266f82612e88565b81815285602083850101111561293c578384fd5b611c38826020830160208601612ec8565b60006020828403121561295e578081fd5b813567ffffffffffffffff80821115612975578283fd5b9083019060a08286031215612988578283fd5b60405160a08101818110838211171561299d57fe5b6040528235828111156129ae578485fd5b6129ba87828601612651565b8252506129c960208401612646565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612a0a578081fd5b6126d083836126a2565b600060208284031215612a25578081fd5b813567ffffffffffffffff811115612a3b578182fd5b820160a081850312156126d0578182fd5b600060208284031215612a5d578081fd5b813567ffffffffffffffff80821115612a74578283fd5b9083019060408286031215612a87578283fd5b604051604081018181108382111715612a9c57fe5b604052823582811115612aad578485fd5b612ab987828601612651565b82525060208301359250612acc83612ef4565b6020810192909252509392505050565b600060208284031215612aed578081fd5b813562ffffff811681146126d0578182fd5b60008060408385031215612b11578182fd5b823591506020830135612b2381612ef4565b809150509250929050565b60008060008060808587031215612b43578182fd5b843593506020850135612b5581612ef4565b9250604085013591506060850135612b6c81612ef4565b939692955090935050565b60008151808452612b8f816020860160208601612ec8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b606093841b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a06080830152612c9f60a0830184612b77565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015612d1b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452612d09858351612b77565b94509285019290850190600101612ccf565b5092979650505050505050565b6000602082526126d06020830184612b77565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b600060208252825160406020840152612dc56060840182612b77565b905073ffffffffffffffffffffffffffffffffffffffff60208501511660408401528091505092915050565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e2e578283fd5b83018035915067ffffffffffffffff821115612e48578283fd5b602001915036819003821315612e5d57600080fd5b9250929050565b60405181810167ffffffffffffffff81118282101715612e8057fe5b604052919050565b600067ffffffffffffffff821115612e9c57fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612ee3578181015183820152602001612ecb565b8381111561108f5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114612f1657600080fd5b5056fea164736f6c6343000706000a'; } } diff --git a/src/briefcase/deployers/v3-periphery/V3MigratorDeployer.sol b/src/briefcase/deployers/v3-periphery/V3MigratorDeployer.sol index f1b63f67..e95eb4eb 100644 --- a/src/briefcase/deployers/v3-periphery/V3MigratorDeployer.sol +++ b/src/briefcase/deployers/v3-periphery/V3MigratorDeployer.sol @@ -22,6 +22,6 @@ library V3MigratorDeployer { */ function initcode() internal pure returns (bytes memory) { return - hex'60e06040523480156200001157600080fd5b5060405162001a0d38038062001a0d833981016040819052620000349162000079565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c052620000c2565b80516001600160a01b03811681146200007457600080fd5b919050565b6000806000606084860312156200008e578283fd5b62000099846200005c565b9250620000a9602085016200005c565b9150620000b9604085016200005c565b90509250925092565b60805160601c60a05160601c60c05160601c6118df6200012e600039806107735280610a3e5280610a785280610aa25280610c4b52508060a552806105765280610c975280610cee5280610dc95280610e2052508061020852806102cf528061082652506118df6000f3fe6080604052600436106100955760003560e01c8063b44a272211610059578063b44a272214610176578063c2e3140a1461018b578063c45a01551461019e578063d44f2bf2146101b3578063f3995c67146101d3576100ed565b806313ead562146100f25780634659a4941461011b5780634aa4a4fc1461012e578063a4a78f0c14610143578063ac9650d814610156576100ed565b366100ed57336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100eb5760405162461bcd60e51b81526004016100e290611728565b60405180910390fd5b005b600080fd5b610105610100366004611325565b6101e6565b604051610112919061164f565b60405180910390f35b6100eb61012936600461137e565b6104da565b34801561013a57600080fd5b50610105610574565b6100eb61015136600461137e565b610598565b6101696101643660046113d7565b610631565b6040516101129190611687565b34801561018257600080fd5b50610105610771565b6100eb61019936600461137e565b610795565b3480156101aa57600080fd5b50610105610824565b3480156101bf57600080fd5b506100eb6101ce366004611536565b610848565b6100eb6101e136600461137e565b610eb4565b6000836001600160a01b0316856001600160a01b03161061020657600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631698ee828686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff168152602001935050505060206040518083038186803b15801561029157600080fd5b505afa1580156102a5573d6000803e3d6000fd5b505050506040513d60208110156102bb57600080fd5b505190506001600160a01b0381166103f1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a16712958686866040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018262ffffff1681526020019350505050602060405180830381600087803b15801561035a57600080fd5b505af115801561036e573d6000803e3d6000fd5b505050506040513d602081101561038457600080fd5b50516040805163f637731d60e01b81526001600160a01b03858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b1580156103d457600080fd5b505af11580156103e8573d6000803e3d6000fd5b505050506104d2565b6000816001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561042c57600080fd5b505afa158015610440573d6000803e3d6000fd5b505050506040513d60e081101561045657600080fd5b505190506001600160a01b0381166104d057816001600160a01b031663f637731d846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b1580156104b757600080fd5b505af11580156104cb573d6000803e3d6000fd5b505050505b505b949350505050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561055457600080fd5b505af1158015610568573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156105e957600080fd5b505afa1580156105fd573d6000803e3d6000fd5b505050506040513d602081101561061357600080fd5b50511015610629576106298686868686866104da565b505050505050565b60608167ffffffffffffffff8111801561064a57600080fd5b5060405190808252806020026020018201604052801561067e57816020015b60608152602001906001900390816106695790505b50905060005b8281101561076a576000803086868581811061069c57fe5b90506020028101906106ae9190611830565b6040516106bc92919061163f565b600060405180830381855af49150503d80600081146106f7576040519150601f19603f3d011682016040523d82523d6000602084013e6106fc565b606091505b5091509150816107485760448151101561071557600080fd5b6004810190508080602001905181019061072f919061149f565b60405162461bcd60e51b81526004016100e291906116e7565b8084848151811061075557fe5b60209081029190910101525050600101610684565b5092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b1580156107e457600080fd5b505afa1580156107f8573d6000803e3d6000fd5b505050506040513d602081101561080e57600080fd5b5051101561062957610629868686868686610eb4565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061085a60608301604084016115dc565b60ff161161087a5760405162461bcd60e51b81526004016100e2906116fa565b606461088c60608301604084016115dc565b60ff1611156108ad5760405162461bcd60e51b81526004016100e29061174b565b6108ba6020820182611302565b6001600160a01b03166323b872dd336108d66020850185611302565b84602001356040518463ffffffff1660e01b81526004016108f993929190611663565b602060405180830381600087803b15801561091357600080fd5b505af1158015610927573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094b9190611462565b5060008061095c6020840184611302565b6001600160a01b03166389afcb44306040518263ffffffff1660e01b8152600401610987919061164f565b6040805180830381600087803b1580156109a057600080fd5b505af11580156109b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d891906115b9565b9092509050600060646109fe6109f460608701604088016115dc565b859060ff16610f26565b81610a0557fe5b04905060006064610a1f6109f460608801604089016115dc565b81610a2657fe5b049050610a63610a3c6080870160608801611302565b7f000000000000000000000000000000000000000000000000000000000000000084610f50565b610a9d610a7660a0870160808801611302565b7f000000000000000000000000000000000000000000000000000000000000000083610f50565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663883164566040518061016001604052808a6060016020810190610aee9190611302565b6001600160a01b03168152602001610b0c60a08c0160808d01611302565b6001600160a01b03168152602001610b2a60c08c0160a08d0161154e565b62ffffff168152602001610b4460e08c0160c08d0161147e565b60020b8152602001610b5d6101008c0160e08d0161147e565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610b9b6101608c016101408d01611302565b6001600160a01b031681526020018a61016001358152506040518263ffffffff1660e01b8152600401610bce9190611779565b608060405180830381600087803b158015610be857600080fd5b505af1158015610bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c209190611568565b93509350505085821015610d805783821015610c7157610c71610c496080890160608a01611302565b7f00000000000000000000000000000000000000000000000000000000000000006000610f50565b818603610c866101a089016101808a01611446565b8015610cd257506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610cc760808a0160608b01611302565b6001600160a01b0316145b15610d6457604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610d23908490600401611827565b600060405180830381600087803b158015610d3d57600080fd5b505af1158015610d51573d6000803e3d6000fd5b50505050610d5f338261109e565b610d7e565b610d7e610d7760808a0160608b01611302565b3383611192565b505b84811015610eab5782811015610da357610da3610c4960a0890160808a01611302565b808503610db86101a089016101808a01611446565b8015610e0457506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016610df960a08a0160808b01611302565b6001600160a01b0316145b15610e9657604051632e1a7d4d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610e55908490600401611827565b600060405180830381600087803b158015610e6f57600080fd5b505af1158015610e83573d6000803e3d6000fd5b50505050610e91338261109e565b610ea9565b610ea9610d7760a08a0160808b01611302565b505b50505050505050565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561055457600080fd5b6000821580610f4157505081810281838281610f3e57fe5b04145b610f4a57600080fd5b92915050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1781529251825160009485949389169392918291908083835b60208310610fcc5780518252601f199092019160209182019101610fad565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461102e576040519150601f19603f3d011682016040523d82523d6000602084013e611033565b606091505b5091509150818015611061575080511580611061575080806020019051602081101561105e57600080fd5b50515b611097576040805162461bcd60e51b8152602060048201526002602482015261534160f01b604482015290519081900360640190fd5b5050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106110ea5780518252601f1990920191602091820191016110cb565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461114c576040519150601f19603f3d011682016040523d82523d6000602084013e611151565b606091505b505090508061118d576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1781529251825160009485949389169392918291908083835b6020831061120e5780518252601f1990920191602091820191016111ef565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611270576040519150601f19603f3d011682016040523d82523d6000602084013e611275565b606091505b50915091508180156112a35750805115806112a357508080602001905160208110156112a057600080fd5b50515b611097576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b803562ffffff811681146112ec57600080fd5b919050565b803560ff811681146112ec57600080fd5b600060208284031215611313578081fd5b813561131e816118ac565b9392505050565b6000806000806080858703121561133a578283fd5b8435611345816118ac565b93506020850135611355816118ac565b9250611363604086016112d9565b91506060850135611373816118ac565b939692955090935050565b60008060008060008060c08789031215611396578182fd5b86356113a1816118ac565b955060208701359450604087013593506113bd606088016112f1565b92506080870135915060a087013590509295509295509295565b600080602083850312156113e9578182fd5b823567ffffffffffffffff80821115611400578384fd5b818501915085601f830112611413578384fd5b813581811115611421578485fd5b8660208083028501011115611434578485fd5b60209290920196919550909350505050565b600060208284031215611457578081fd5b813561131e816118c4565b600060208284031215611473578081fd5b815161131e816118c4565b60006020828403121561148f578081fd5b81358060020b811461131e578182fd5b6000602082840312156114b0578081fd5b815167ffffffffffffffff808211156114c7578283fd5b818401915084601f8301126114da578283fd5b8151818111156114e657fe5b604051601f8201601f19168101602001838111828210171561150457fe5b60405281815283820160200187101561151b578485fd5b61152c82602083016020870161187c565b9695505050505050565b60006101a08284031215611548578081fd5b50919050565b60006020828403121561155f578081fd5b61131e826112d9565b6000806000806080858703121561157d578384fd5b8451935060208501516fffffffffffffffffffffffffffffffff811681146115a3578384fd5b6040860151606090960151949790965092505050565b600080604083850312156115cb578182fd5b505080516020909101519092909150565b6000602082840312156115ed578081fd5b61131e826112f1565b6001600160a01b03169052565b6000815180845261161b81602086016020860161187c565b601f01601f19169290920160200192915050565b60020b9052565b62ffffff169052565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156116da57603f198886030184526116c8858351611603565b945092850192908501906001016116ac565b5092979650505050505050565b60006020825261131e6020830184611603565b60208082526014908201527314195c98d95b9d1859d9481d1bdbc81cdb585b1b60621b604082015260600190565b6020808252600990820152684e6f7420574554483960b81b604082015260600190565b60208082526014908201527350657263656e7461676520746f6f206c6172676560601b604082015260600190565b60006101608201905061178d8284516115f6565b602083015161179f60208401826115f6565b5060408301516117b26040840182611636565b5060608301516117c5606084018261162f565b5060808301516117d8608084018261162f565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611816828501826115f6565b505061014092830151919092015290565b90815260200190565b6000808335601e19843603018112611846578283fd5b83018035915067ffffffffffffffff821115611860578283fd5b60200191503681900382131561187557600080fd5b9250929050565b60005b8381101561189757818101518382015260200161187f565b838111156118a6576000848401525b50505050565b6001600160a01b03811681146118c157600080fd5b50565b80151581146118c157600080fdfea164736f6c6343000706000a'; + hex'60e06040523480156200001157600080fd5b5060405162001f4238038062001f42833981016040819052620000349162000079565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c052620000c2565b80516001600160a01b03811681146200007457600080fd5b919050565b6000806000606084860312156200008e578283fd5b62000099846200005c565b9250620000a9602085016200005c565b9150620000b9604085016200005c565b90509250925092565b60805160601c60a05160601c60c05160601c611e146200012e6000398061090d5280610c4c5280610c865280610cb05280610e8d52508060d252806106b25280610ee65280610f70528061105852806110e2525080610269528061036452806109e65250611e146000f3fe6080604052600436106100b55760003560e01c8063b44a272211610069578063c45a01551161004e578063c45a0155146101e5578063d44f2bf2146101fa578063f3995c671461021a57610134565b8063b44a2722146101bd578063c2e3140a146101d257610134565b80634aa4a4fc1161009a5780634aa4a4fc14610175578063a4a78f0c1461018a578063ac9650d81461019d57610134565b806313ead562146101395780634659a4941461016257610134565b36610134573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611c15565b60405180910390fd5b005b600080fd5b61014c610147366004611788565b61022d565b6040516101599190611afb565b60405180910390f35b6101326101703660046117e1565b6105f0565b34801561018157600080fd5b5061014c6106b0565b6101326101983660046117e1565b6106d4565b6101b06101ab36600461183a565b6107b1565b6040516101599190611b4d565b3480156101c957600080fd5b5061014c61090b565b6101326101e03660046117e1565b61092f565b3480156101f157600080fd5b5061014c6109e4565b34801561020657600080fd5b506101326102153660046119b7565b610a08565b6101326102283660046117e1565b611176565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061026757600080fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee828686866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018262ffffff168152602001935050505060206040518083038186803b15801561031957600080fd5b505afa15801561032d573d6000803e3d6000fd5b505050506040513d602081101561034357600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81166104d3577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a16712958686866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018262ffffff1681526020019350505050602060405180830381600087803b15801561041657600080fd5b505af115801561042a573d6000803e3d6000fd5b505050506040513d602081101561044057600080fd5b5051604080517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015291519293509083169163f637731d9160248082019260009290919082900301818387803b1580156104b657600080fd5b505af11580156104ca573d6000803e3d6000fd5b505050506105e8565b60008173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561051b57600080fd5b505afa15801561052f573d6000803e3d6000fd5b505050506040513d60e081101561054557600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff81166105e6578173ffffffffffffffffffffffffffffffffffffffff1663f637731d846040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156105cd57600080fd5b505af11580156105e1573d6000803e3d6000fd5b505050505b505b949350505050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b15801561069057600080fd5b505af11580156106a4573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b15801561076957600080fd5b505afa15801561077d573d6000803e3d6000fd5b505050506040513d602081101561079357600080fd5b505110156107a9576107a98686868686866105f0565b505050505050565b60608167ffffffffffffffff811180156107ca57600080fd5b506040519080825280602002602001820160405280156107fe57816020015b60608152602001906001900390816107e95790505b50905060005b82811015610904576000803086868581811061081c57fe5b905060200281019061082e9190611d3a565b60405161083c929190611aeb565b600060405180830381855af49150503d8060008114610877576040519150601f19603f3d011682016040523d82523d6000602084013e61087c565b606091505b5091509150816108e25760448151101561089557600080fd5b600481019050808060200190518101906108af9190611902565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101299190611bcb565b808484815181106108ef57fe5b60209081029190910101525050600101610804565b5092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b1580156109a457600080fd5b505afa1580156109b8573d6000803e3d6000fd5b505050506040513d60208110156109ce57600080fd5b505110156107a9576107a9868686868686611176565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610a1a6060830160408401611a5d565b60ff1611610a54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611bde565b6064610a666060830160408401611a5d565b60ff161115610aa1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611c4c565b610aae6020820182611765565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd33610ad76020850185611765565b84602001356040518463ffffffff1660e01b8152600401610afa93929190611b1c565b602060405180830381600087803b158015610b1457600080fd5b505af1158015610b28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4c91906118c5565b50600080610b5d6020840184611765565b73ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401610b959190611afb565b6040805180830381600087803b158015610bae57600080fd5b505af1158015610bc2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be69190611a3a565b909250905060006064610c0c610c026060870160408801611a5d565b859060ff1661120e565b81610c1357fe5b04905060006064610c2d610c026060880160408901611a5d565b81610c3457fe5b049050610c71610c4a6080870160608801611765565b7f000000000000000000000000000000000000000000000000000000000000000084611238565b610cab610c8460a0870160808801611765565b7f000000000000000000000000000000000000000000000000000000000000000083611238565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663883164566040518061016001604052808a6060016020810190610d099190611765565b73ffffffffffffffffffffffffffffffffffffffff168152602001610d3460a08c0160808d01611765565b73ffffffffffffffffffffffffffffffffffffffff168152602001610d5f60c08c0160a08d016119cf565b62ffffff168152602001610d7960e08c0160c08d016118e1565b60020b8152602001610d926101008c0160e08d016118e1565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610dd06101608c016101408d01611765565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a61016001358152506040518263ffffffff1660e01b8152600401610e109190611c83565b608060405180830381600087803b158015610e2a57600080fd5b505af1158015610e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6291906119e9565b935093505050858210156110025783821015610eb357610eb3610e8b6080890160608a01611765565b7f00000000000000000000000000000000000000000000000000000000000000006000611238565b818603610ec86101a089016101808a016118a9565b8015610f2e575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610f1660808a0160608b01611765565b73ffffffffffffffffffffffffffffffffffffffff16145b15610fe6576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610fa5908490600401611d31565b600060405180830381600087803b158015610fbf57600080fd5b505af1158015610fd3573d6000803e3d6000fd5b50505050610fe13382611414565b611000565b611000610ff960808a0160608b01611765565b3383611567565b505b8481101561116d578281101561102557611025610e8b60a0890160808a01611765565b80850361103a6101a089016101808a016118a9565b80156110a0575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661108860a08a0160808b01611765565b73ffffffffffffffffffffffffffffffffffffffff16145b15611158576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90611117908490600401611d31565b600060405180830381600087803b15801561113157600080fd5b505af1158015611145573d6000803e3d6000fd5b505050506111533382611414565b61116b565b61116b610ff960a08a0160808b01611765565b505b50505050505050565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b15801561069057600080fd5b60008215806112295750508181028183828161122657fe5b04145b61123257600080fd5b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061130d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112d0565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461136f576040519150601f19603f3d011682016040523d82523d6000602084013e611374565b606091505b50915091508180156113a25750805115806113a2575080806020019051602081101561139f57600080fd5b50515b61140d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5341000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061148b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161144e565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114ed576040519150601f19603f3d011682016040523d82523d6000602084013e6114f2565b606091505b505090508061156257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061163c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016115ff565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461169e576040519150601f19603f3d011682016040523d82523d6000602084013e6116a3565b606091505b50915091508180156116d15750805115806116d157508080602001905160208110156116ce57600080fd5b50515b61140d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b803562ffffff8116811461174f57600080fd5b919050565b803560ff8116811461174f57600080fd5b600060208284031215611776578081fd5b813561178181611dd4565b9392505050565b6000806000806080858703121561179d578283fd5b84356117a881611dd4565b935060208501356117b881611dd4565b92506117c66040860161173c565b915060608501356117d681611dd4565b939692955090935050565b60008060008060008060c087890312156117f9578182fd5b863561180481611dd4565b9550602087013594506040870135935061182060608801611754565b92506080870135915060a087013590509295509295509295565b6000806020838503121561184c578182fd5b823567ffffffffffffffff80821115611863578384fd5b818501915085601f830112611876578384fd5b813581811115611884578485fd5b8660208083028501011115611897578485fd5b60209290920196919550909350505050565b6000602082840312156118ba578081fd5b813561178181611df9565b6000602082840312156118d6578081fd5b815161178181611df9565b6000602082840312156118f2578081fd5b81358060020b8114611781578182fd5b600060208284031215611913578081fd5b815167ffffffffffffffff8082111561192a578283fd5b818401915084601f83011261193d578283fd5b81518181111561194957fe5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116820101818110848211171561198557fe5b60405281815283820160200187101561199c578485fd5b6119ad826020830160208701611da4565b9695505050505050565b60006101a082840312156119c9578081fd5b50919050565b6000602082840312156119e0578081fd5b6117818261173c565b600080600080608085870312156119fe578384fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611a24578384fd5b6040860151606090960151949790965092505050565b60008060408385031215611a4c578182fd5b505080516020909101519092909150565b600060208284031215611a6e578081fd5b61178182611754565b73ffffffffffffffffffffffffffffffffffffffff169052565b60008151808452611aa9816020860160208601611da4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60020b9052565b62ffffff169052565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611bbe577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452611bac858351611a91565b94509285019290850190600101611b72565b5092979650505050505050565b6000602082526117816020830184611a91565b60208082526014908201527f50657263656e7461676520746f6f20736d616c6c000000000000000000000000604082015260600190565b60208082526009908201527f4e6f742057455448390000000000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f50657263656e7461676520746f6f206c61726765000000000000000000000000604082015260600190565b600061016082019050611c97828451611a77565b6020830151611ca96020840182611a77565b506040830151611cbc6040840182611ae2565b506060830151611ccf6060840182611adb565b506080830151611ce26080840182611adb565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611d2082850182611a77565b505061014092830151919092015290565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611d6e578283fd5b83018035915067ffffffffffffffff821115611d88578283fd5b602001915036819003821315611d9d57600080fd5b9250929050565b60005b83811015611dbf578181015183820152602001611da7565b83811115611dce576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611df657600080fd5b50565b8015158114611df657600080fdfea164736f6c6343000706000a'; } } diff --git a/src/briefcase/protocols/uerc20-factory/interfaces/ITokenFactory.sol b/src/briefcase/protocols/uerc20-factory/interfaces/ITokenFactory.sol index 18e529e0..71ee6569 100644 --- a/src/briefcase/protocols/uerc20-factory/interfaces/ITokenFactory.sol +++ b/src/briefcase/protocols/uerc20-factory/interfaces/ITokenFactory.sol @@ -1,30 +1,34 @@ // SPDX-License-Identifier: MIT pragma solidity >=0.6.2; -/** - * @title ITokenFactory - * @dev Generic interface for a token factory. - */ +/// @title ITokenFactory +/// @notice Generic interface for a token factory. interface ITokenFactory { /// @notice Emitted when a new token is created event TokenCreated(address tokenAddress); - /** - * @notice Creates a new token contract - * @param name The ERC20-style name of the token. - * @param symbol The ERC20-style symbol of the token. - * @param decimals The number of decimal places for the token. - * @param initialSupply The initial supply to mint upon creation. - * @param recipient The recipient of the initial supply. - * @param data Additional factory-specific data required for token creation. - * @return tokenAddress The address of the newly created token. - */ + /// @notice Thrown when the recipient is the zero address + error RecipientCannotBeZeroAddress(); + + /// @notice Thrown when the initial supply is zero + error TotalSupplyCannotBeZero(); + + /// @notice Creates a new token contract + /// @param name The ERC20-style name of the token. + /// @param symbol The ERC20-style symbol of the token. + /// @param decimals The number of decimal places for the token. + /// @param initialSupply The initial supply to mint upon creation. + /// @param recipient The recipient of the initial supply. + /// @param data Additional factory-specific data required for token creation. + /// @param graffiti Additional data to be included in the token's salt + /// @return tokenAddress The address of the newly created token. function createToken( string calldata name, string calldata symbol, uint8 decimals, uint256 initialSupply, address recipient, - bytes calldata data + bytes calldata data, + bytes32 graffiti ) external returns (address tokenAddress); } diff --git a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol index b6365a27..f4833fb3 100644 --- a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol +++ b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20Factory.sol @@ -9,27 +9,30 @@ import {ITokenFactory} from './ITokenFactory.sol'; interface IUERC20Factory is ITokenFactory { /// @notice Parameters struct to be used by the UERC20 during construction struct Parameters { - string name; - string symbol; uint256 totalSupply; + bytes32 graffiti; address recipient; + address creator; uint8 decimals; + string name; + string symbol; UERC20Metadata metadata; } - /// @notice Thrown when the caller is not the creator in the initial deployment of a token - error NotCreator(address sender, address creator); - /// @notice Computes the deterministic address for a token based on its core parameters /// @param name The name of the token /// @param symbol The symbol of the token /// @param decimals The number of decimals the token uses /// @param creator The creator of the token + /// @param graffiti Additional data needed to compute the salt /// @return The deterministic address of the token - function getUERC20Address(string memory name, string memory symbol, uint8 decimals, address creator) - external - view - returns (address); + function getUERC20Address( + string memory name, + string memory symbol, + uint8 decimals, + address creator, + bytes32 graffiti + ) external view returns (address); /// @notice Gets the parameters for token initialization /// @return The parameters structure with all token initialization data diff --git a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol index f6611108..b6fc92f4 100644 --- a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol +++ b/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol @@ -9,12 +9,14 @@ import {ITokenFactory} from './ITokenFactory.sol'; interface IUERC20SuperchainFactory is ITokenFactory { /// @notice Parameters struct to be used by the UERC20Superchain during construction struct Parameters { - string name; - string symbol; uint256 totalSupply; uint256 homeChainId; + bytes32 graffiti; address recipient; + address creator; uint8 decimals; + string name; + string symbol; UERC20Metadata metadata; } @@ -27,13 +29,15 @@ interface IUERC20SuperchainFactory is ITokenFactory { /// @param decimals The number of decimals the token uses /// @param homeChainId The hub chain ID of the token /// @param creator The creator of the token + /// @param graffiti Additional data needed to compute the salt /// @return The deterministic address of the token function getUERC20SuperchainAddress( string memory name, string memory symbol, uint8 decimals, uint256 homeChainId, - address creator + address creator, + bytes32 graffiti ) external view returns (address); /// @notice Gets the parameters for token initialization diff --git a/src/briefcase/protocols/uerc20-factory/libraries/UERC20MetadataLibrary.sol b/src/briefcase/protocols/uerc20-factory/libraries/UERC20MetadataLibrary.sol index 50100aa0..d483bd5c 100644 --- a/src/briefcase/protocols/uerc20-factory/libraries/UERC20MetadataLibrary.sol +++ b/src/briefcase/protocols/uerc20-factory/libraries/UERC20MetadataLibrary.sol @@ -5,7 +5,6 @@ import {Base64} from '../../lib-external/openzeppelin-contracts/contracts/utils/ import {Strings} from '../../lib-external/openzeppelin-contracts/contracts/utils/Strings.sol'; struct UERC20Metadata { - address creator; string description; string website; string image; @@ -13,6 +12,7 @@ struct UERC20Metadata { /// @title UERC20MetadataLibrary /// @notice Library for generating base64 encoded JSON token metadata +/// @dev If no fields are provided, returns an empty JSON object. library UERC20MetadataLibrary { using Strings for *; @@ -27,16 +27,21 @@ library UERC20MetadataLibrary { /// @param metadata The token metadata /// @return The abi encoded JSON string function displayMetadata(UERC20Metadata memory metadata) private pure returns (bytes memory) { - bytes memory json = abi.encodePacked('{"Creator":"', metadata.creator.toChecksumHexString(), '"'); + bytes memory json = abi.encodePacked('{'); + bool hasField; if (bytes(metadata.description).length > 0) { - json = abi.encodePacked(json, ', "Description":"', metadata.description.escapeJSON(), '"'); + json = abi.encodePacked(json, '"description":"', metadata.description.escapeJSON(), '"'); + hasField = true; } if (bytes(metadata.website).length > 0) { - json = abi.encodePacked(json, ', "Website":"', metadata.website.escapeJSON(), '"'); + if (hasField) json = abi.encodePacked(json, ', '); + json = abi.encodePacked(json, '"website":"', metadata.website.escapeJSON(), '"'); + hasField = true; } if (bytes(metadata.image).length > 0) { - json = abi.encodePacked(json, ', "Image":"', metadata.image.escapeJSON(), '"'); + if (hasField) json = abi.encodePacked(json, ', '); + json = abi.encodePacked(json, '"image":"', metadata.image.escapeJSON(), '"'); } return abi.encodePacked(json, '}'); From 6df056a531e9b86e56f82232ae8342fc96f5da39 Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Tue, 3 Jun 2025 14:37:34 -0400 Subject: [PATCH 09/13] update submodule --- src/pkgs/uerc20-factory | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pkgs/uerc20-factory b/src/pkgs/uerc20-factory index 5b69661a..76a8e77c 160000 --- a/src/pkgs/uerc20-factory +++ b/src/pkgs/uerc20-factory @@ -1 +1 @@ -Subproject commit 5b69661a883f69bf061cb5f58f7898883eb5688a +Subproject commit 76a8e77c7c1983e1a39006376c9fd6c17cc38ae2 From 86ef60f2d881d26b11060344c8a70e8a7239d8e1 Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Tue, 3 Jun 2025 14:41:06 -0400 Subject: [PATCH 10/13] state manager --- script/cli/src/state_manager.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/script/cli/src/state_manager.rs b/script/cli/src/state_manager.rs index f9f98035..2bfe72a2 100644 --- a/script/cli/src/state_manager.rs +++ b/script/cli/src/state_manager.rs @@ -1,6 +1,7 @@ use crate::libs::explorer::{Explorer, SupportedExplorerType}; use crate::libs::web3::Web3Lib; -use crate::util::chain_config::{parse_chain_config, Chain, Explorer}; +use crate::screens::verify_contract::verify_contract_screen::VerifyContractData; +use crate::util::chain_config::{parse_chain_config, Chain}; use crate::util::deployment_log::RegisterContractData; use crossterm::{ cursor::Show, From 8c0b627ba6a632ee30eafc2a0ac7beccd9c0f040 Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Tue, 3 Jun 2025 15:23:47 -0400 Subject: [PATCH 11/13] testnets latest --- .../11155111/run-1748977712.json | 46 ++ .../Deploy-all.s.sol/11155111/run-latest.json | 30 +- .../Deploy-all.s.sol/1301/run-latest.json | 32 +- .../tasks/11155111/task-1748977656.json | 481 ++++++++++++++++++ script/deploy/tasks/1301/task-1748976789.json | 481 ++++++++++++++++++ 5 files changed, 1039 insertions(+), 31 deletions(-) create mode 100644 broadcast/Deploy-all.s.sol/11155111/run-1748977712.json create mode 100644 script/deploy/tasks/11155111/task-1748977656.json create mode 100644 script/deploy/tasks/1301/task-1748976789.json diff --git a/broadcast/Deploy-all.s.sol/11155111/run-1748977712.json b/broadcast/Deploy-all.s.sol/11155111/run-1748977712.json new file mode 100644 index 00000000..b808f9db --- /dev/null +++ b/broadcast/Deploy-all.s.sol/11155111/run-1748977712.json @@ -0,0 +1,46 @@ +{ + "transactions": [ + { + "hash": "0x7c103bd560a05265a970d9e40b2d0972652a179206642f0e792f67072ff72141", + "transactionType": "CREATE2", + "contractName": null, + "contractAddress": "0xf3e6e8db96bd434cc633586e008a23ed1283ef62", + "function": null, + "arguments": null, + "transaction": { + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b5061299d8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063a255e0ad14610043578063a5ea11da14610073578063f752070e14610088575b5f5ffd5b610056610051366004610915565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b61007b610307565b60405161006a9190610a55565b610056610096366004610b01565b610645565b5f806100a984860186610b8b565b90506001600160a01b0386166100d257604051636c38382960e11b815260040160405180910390fd5b865f036100f257604051637ceabcb560e11b815260040160405180910390fd5b6040805161010081018252888152602081018590526001600160a01b038816918101829052336060820181905260ff8b166080830181905260a083018e905260c083018d905260e083018590525f8b81556001889055600280546001600160a01b031916909517909455600380546001600160a81b03191660ff60a01b1990931692909217600160a01b90910217905590600461018f8d82610ccd565b5060c082015160058201906101a49082610ccd565b5060e08201518051600683019081906101bd9082610ccd565b50602082015160018201906101d29082610ccd565b50604082015160028201906101e79082610ccd565b5050509050505f8a8a8a3387604051602001610207959493929190610d87565b6040516020818303038152906040528051906020012090508060405161022c9061070c565b8190604051809103905ff5905080158015610249573d5f5f3e3d5ffd5b505f8080556001819055600280546001600160a01b0319169055600380546001600160a81b031916905590935080610282600482610719565b61028f600583015f610719565b600682015f61029e8282610719565b6102ab600183015f610719565b6102b8600283015f610719565b50506040516001600160a01b03861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505098975050505050505050565b61030f610753565b60408051610100810182525f8054825260015460208301526002546001600160a01b03908116938301939093526003549283166060830152600160a01b90920460ff1660808201526004805491929160a08401919061036d90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461039990610c49565b80156103e45780601f106103bb576101008083540402835291602001916103e4565b820191905f5260205f20905b8154815290600101906020018083116103c757829003601f168201915b505050505081526020016005820180546103fd90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461042990610c49565b80156104745780601f1061044b57610100808354040283529160200191610474565b820191905f5260205f20905b81548152906001019060200180831161045757829003601f168201915b50505050508152602001600682016040518060600160405290815f8201805461049c90610c49565b80601f01602080910402602001604051908101604052809291908181526020018280546104c890610c49565b80156105135780601f106104ea57610100808354040283529160200191610513565b820191905f5260205f20905b8154815290600101906020018083116104f657829003601f168201915b5050505050815260200160018201805461052c90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461055890610c49565b80156105a35780601f1061057a576101008083540402835291602001916105a3565b820191905f5260205f20905b81548152906001019060200180831161058657829003601f168201915b505050505081526020016002820180546105bc90610c49565b80601f01602080910402602001604051908101604052809291908181526020018280546105e890610c49565b80156106335780601f1061060a57610100808354040283529160200191610633565b820191905f5260205f20905b81548152906001019060200180831161061657829003601f168201915b50505050508152505081525050905090565b5f5f8686868686604051602001610660959493929190610d87565b6040516020818303038152906040528051906020012090505f604051806020016106899061070c565b601f1982820381018352601f9091011660408190526106ab9190602001610dd5565b6040516020818303038152906040528051906020012090506106ce8282306106da565b98975050505050505050565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611ba580610dec83390190565b50805461072590610c49565b5f825580601f10610734575050565b601f0160209004905f5260205f209081019061075091906107c9565b50565b6040518061010001604052805f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f60ff16815260200160608152602001606081526020016107c460405180606001604052806060815260200160608152602001606081525090565b905290565b5b808211156107dd575f81556001016107ca565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715610817576108176107e1565b60405290565b5f82601f83011261082c575f5ffd5b81356001600160401b03811115610845576108456107e1565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610873576108736107e1565b60405281815283820160200185101561088a575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146108b6575f5ffd5b919050565b80356001600160a01b03811681146108b6575f5ffd5b5f5f83601f8401126108e1575f5ffd5b5081356001600160401b038111156108f7575f5ffd5b60208301915083602082850101111561090e575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b03121561092c575f5ffd5b88356001600160401b03811115610941575f5ffd5b61094d8b828c0161081d565b98505060208901356001600160401b03811115610968575f5ffd5b6109748b828c0161081d565b97505061098360408a016108a6565b95506060890135945061099860808a016108bb565b935060a08901356001600160401b038111156109b2575f5ffd5b6109be8b828c016108d1565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815160608452610a1960608501826109d7565b905060208301518482036020860152610a3282826109d7565b91505060408301518482036040860152610a4c82826109d7565b95945050505050565b6020815281516020820152602082015160408201525f6040830151610a8560608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160ff811660a08401525060a083015161010060c0840152610ac56101208401826109d7565b905060c0840151601f198483030160e0850152610ae282826109d7565b91505060e0840151601f1984830301610100850152610a4c8282610a05565b5f5f5f5f5f60a08688031215610b15575f5ffd5b85356001600160401b03811115610b2a575f5ffd5b610b368882890161081d565b95505060208601356001600160401b03811115610b51575f5ffd5b610b5d8882890161081d565b945050610b6c604087016108a6565b9250610b7a606087016108bb565b949793965091946080013592915050565b5f60208284031215610b9b575f5ffd5b81356001600160401b03811115610bb0575f5ffd5b820160608185031215610bc1575f5ffd5b610bc96107f5565b81356001600160401b03811115610bde575f5ffd5b610bea8682850161081d565b82525060208201356001600160401b03811115610c05575f5ffd5b610c118682850161081d565b60208301525060408201356001600160401b03811115610c2f575f5ffd5b610c3b8682850161081d565b604083015250949350505050565b600181811c90821680610c5d57607f821691505b602082108103610c7b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610cc857805f5260205f20601f840160051c81016020851015610ca65750805b601f840160051c820191505b81811015610cc5575f8155600101610cb2565b50505b505050565b81516001600160401b03811115610ce657610ce66107e1565b610cfa81610cf48454610c49565b84610c81565b6020601f821160018114610d2c575f8315610d155750848201515b5f19600385901b1c1916600184901b178455610cc5565b5f84815260208120601f198516915b82811015610d5b5787850151825560209485019460019092019101610d3b565b5084821015610d7857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f610d9960a08301886109d7565b8281036020840152610dab81886109d7565b60ff96909616604084015250506001600160a01b0392909216606083015260809091015292915050565b5f82518060208501845e5f92019182525091905056fe610100604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610074919081019061035f565b90508060a001515f908161008891906104e8565b505f60405161009791906105a2565b60405190819003902060805260c08101516001906100b590826104e8565b50608081015160ff1660e090815260608201516001600160a01b031660c052602082015160a052810151805160029081906100f090826104e8565b506020820151600182019061010590826104e8565b506040820151600282019061011a90826104e8565b5050506040810151815161012e9190610134565b50610613565b6805345cdf77eb68f44c54818101818110156101575763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156101ec576101ec6101b5565b60405290565b80516001600160a01b0381168114610208575f5ffd5b919050565b805160ff81168114610208575f5ffd5b5f82601f83011261022c575f5ffd5b81516001600160401b03811115610245576102456101b5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610273576102736101b5565b60405281815283820160200185101561028a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102b6575f5ffd5b604051606081016001600160401b03811182821017156102d8576102d86101b5565b604052825190915081906001600160401b038111156102f5575f5ffd5b6103018582860161021d565b82525060208301516001600160401b0381111561031c575f5ffd5b6103288582860161021d565b60208301525060408301516001600160401b03811115610346575f5ffd5b6103528582860161021d565b6040830152505092915050565b5f6020828403121561036f575f5ffd5b81516001600160401b03811115610384575f5ffd5b82016101008185031215610396575f5ffd5b61039e6101c9565b81518152602080830151908201526103b8604083016101f2565b60408201526103c9606083016101f2565b60608201526103da6080830161020d565b608082015260a08201516001600160401b038111156103f7575f5ffd5b6104038682850161021d565b60a08301525060c08201516001600160401b03811115610421575f5ffd5b61042d8682850161021d565b60c08301525060e08201516001600160401b0381111561044b575f5ffd5b610457868285016102a6565b60e083015250949350505050565b600181811c9082168061047957607f821691505b60208210810361049757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b057805f5260205f20601f840160051c810160208510156104c25750805b601f840160051c820191505b818110156104e1575f81556001016104ce565b5050505050565b81516001600160401b03811115610501576105016101b5565b6105158161050f8454610465565b8461049d565b6020601f821160018114610547575f83156105305750848201515b5f19600385901b1c1916600184901b1784556104e1565b5f84815260208120601f198516915b828110156105765787850151825560209485019460019092019101610556565b508482101561059357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105af81610465565b6001821680156105c657600181146105db57610608565b60ff1983168652811515820286019350610608565b865f5260205f205f5b83811015610600578154888201526001909101906020016105e4565b505081860193505b509195945050505050565b60805160a05160c05160e05161155861064d5f395f6101cd01525f61013701525f6102b001525f818161050401526109ce01526115585ff3fe608060405234801561000f575f5ffd5b5060043610610106575f3560e01c8063392f37e91161009e57806395d89b411161006e57806395d89b4114610268578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610298578063f56a499f146102ab575f5ffd5b8063392f37e9146101ff5780633c130d901461021657806370a082311461021e5780637ecebe0014610243575f5ffd5b806318160ddd116100d957806318160ddd1461019957806323b872dd146101b3578063313ce567146101c65780633644e515146101f7575f5ffd5b806301ffc9a71461010a57806302d05d3f1461013257806306fdde0314610171578063095ea7b314610186575b5f5ffd5b61011d610118366004611148565b6102d2565b60405190151581526020015b60405180910390f35b6101597f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610129565b610179610323565b604051610129919061119d565b61011d6101943660046111ca565b6103b2565b6805345cdf77eb68f44c545b604051908152602001610129565b61011d6101c13660046111f2565b610431565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610129565b6101a5610501565b6102076105a3565b6040516101299392919061122c565b61017961074b565b6101a561022c36600461126e565b6387a211a2600c9081525f91909152602090205490565b6101a561025136600461126e565b6338377508600c9081525f91909152602090205490565b610179610916565b61011d61027e3660046111ca565b610925565b610296610291366004611287565b61099c565b005b6101a56102a63660046112f4565b610b76565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b031982166301ffc9a760e01b148061030257506001600160e01b031982166336372b0760e01b145b8061031d57506001600160e01b03198216634ec7fbed60e11b145b92915050565b60605f805461033190611325565b80601f016020809104026020016040519081016040528092919081815260200182805461035d90611325565b80156103a85780601f1061037f576101008083540402835291602001916103a8565b820191905f5260205f20905b81548152906001019060200180831161038b57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba318821915176103e357633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146104865733602052637f5e9f208117600c526034600c208054801915610483578085111561047d576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156104ac5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000008061053a57610530610323565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b6002805481906105b290611325565b80601f01602080910402602001604051908101604052809291908181526020018280546105de90611325565b80156106295780601f1061060057610100808354040283529160200191610629565b820191905f5260205f20905b81548152906001019060200180831161060c57829003601f168201915b50505050509080600101805461063e90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461066a90611325565b80156106b55780601f1061068c576101008083540402835291602001916106b5565b820191905f5260205f20905b81548152906001019060200180831161069857829003601f168201915b5050505050908060020180546106ca90611325565b80601f01602080910402602001604051908101604052809291908181526020018280546106f690611325565b80156107415780601f1061071857610100808354040283529160200191610741565b820191905f5260205f20905b81548152906001019060200180831161072457829003601f168201915b5050505050905083565b606061091160026040518060600160405290815f8201805461076c90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461079890611325565b80156107e35780601f106107ba576101008083540402835291602001916107e3565b820191905f5260205f20905b8154815290600101906020018083116107c657829003601f168201915b505050505081526020016001820180546107fc90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461082890611325565b80156108735780601f1061084a57610100808354040283529160200191610873565b820191905f5260205f20905b81548152906001019060200180831161085657829003601f168201915b5050505050815260200160028201805461088c90611325565b80601f01602080910402602001604051908101604052809291908181526020018280546108b890611325565b80156109035780601f106108da57610100808354040283529160200191610903565b820191905f5260205f20905b8154815290600101906020018083116108e657829003601f168201915b505050505081525050610bba565b905090565b60606001805461033190611325565b5f6387a211a2600c52335f526020600c2080548084111561094d5763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba318851915176109cc57633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610a04576109fa610323565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610a3a57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610b225763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610b9f57505f1961031d565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610bcd610bc883610bf3565b610d55565b604051602001610bdd9190611374565b6040516020818303038152906040529050919050565b60605f604051602001610c0d90607b60f81b815260010190565b60408051601f198184030181529190528351519091505f9015610c5e5781610c37855f0151610d7b565b604051602001610c489291906113a5565b6040516020818303038152906040529150600190505b60208401515115610cc7578015610c925781604051602001610c8091906113e5565b60405160208183030381529060405291505b81610ca08560200151610d7b565b604051602001610cb1929190611402565b6040516020818303038152906040529150600190505b60408401515115610d2c578015610cfb5781604051602001610ce991906113e5565b60405160208183030381529060405291505b81610d098560400151610d7b565b604051602001610d1a92919061142b565b60405160208183030381529060405291505b81604051602001610d3d9190611452565b60405160208183030381529060405292505050919050565b606061031d8260405180606001604052806040815260200161150c604091396001610fcd565b805160609082905f90610d8f906002611482565b67ffffffffffffffff811115610da757610da7611499565b6040519080825280601f01601f191660200182016040528015610dd1576020820181803683370190505b5090505f805b8351811015610fb6575f610dee8583016020015190565b90506b100000000000000400003700600160f883901c1b1615610f7857601760fa1b8484610e1b816114ad565b955081518110610e2d57610e2d6114c5565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b03610e9557603160f91b8484610e68816114ad565b955081518110610e7a57610e7a6114c5565b60200101906001600160f81b03191690815f1a905350610fad565b6001600160f81b03198116600960f81b03610eba57601d60fa1b8484610e68816114ad565b6001600160f81b03198116600560f91b03610edf57603760f91b8484610e68816114ad565b6001600160f81b03198116600360fa1b03610f0457603360f91b8484610e68816114ad565b6001600160f81b03198116600d60f81b03610f2957603960f91b8484610e68816114ad565b6001600160f81b03198116601760fa1b03610f4e57601760fa1b8484610e68816114ad565b6001600160f81b03198116601160f91b03610f7357601160f91b8484610e68816114ad565b610fad565b808484610f84816114ad565b955081518110610f9657610f966114c5565b60200101906001600160f81b03191690815f1a9053505b50600101610dd7565b50808252603f01601f191681016040529392505050565b606083515f03610feb575060408051602081019091525f81526104fa565b5f8261101b576003855160046110019190611482565b61100c9060026114d9565b61101691906114ec565b611040565b60038551600261102b91906114d9565b61103591906114ec565b611040906004611482565b90505f8167ffffffffffffffff81111561105c5761105c611499565b6040519080825280601f01601f191660200182016040528015611086576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156110fb576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506110a0565b90525050851561113c5760038851066001811461111f57600281146111325761113a565b603d6001830353603d600283035361113a565b603d60018303535b505b50909695505050505050565b5f60208284031215611158575f5ffd5b81356001600160e01b0319811681146104fa575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6104fa602083018461116f565b80356001600160a01b03811681146111c5575f5ffd5b919050565b5f5f604083850312156111db575f5ffd5b6111e4836111af565b946020939093013593505050565b5f5f5f60608486031215611204575f5ffd5b61120d846111af565b925061121b602085016111af565b929592945050506040919091013590565b606081525f61123e606083018661116f565b8281036020840152611250818661116f565b90508281036040840152611264818561116f565b9695505050505050565b5f6020828403121561127e575f5ffd5b6104fa826111af565b5f5f5f5f5f5f5f60e0888a03121561129d575f5ffd5b6112a6886111af565b96506112b4602089016111af565b95506040880135945060608801359350608088013560ff811681146112d7575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611305575f5ffd5b61130e836111af565b915061131c602084016111af565b90509250929050565b600181811c9082168061133957607f821691505b60208210810361135757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6104fa601d83018461135d565b5f6113b0828561135d565b6e113232b9b1b934b83a34b7b7111d1160891b81526113d2600f82018561135d565b601160f91b815260010195945050505050565b5f6113f0828461135d565b61016160f51b81526002019392505050565b5f61140d828561135d565b6a113bb2b139b4ba32911d1160a91b81526113d2600b82018561135d565b5f611436828561135d565b681134b6b0b3b2911d1160b91b81526113d2600982018561135d565b5f61145d828461135d565b607d60f81b81526001019392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761031d5761031d61146e565b634e487b7160e01b5f52604160045260245ffd5b5f600182016114be576114be61146e565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561031d5761031d61146e565b5f8261150657634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0xf", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xdb480d", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7c103bd560a05265a970d9e40b2d0972652a179206642f0e792f67072ff72141", + "transactionIndex": "0x5b", + "blockHash": "0xbc7e72969961ba1e274cfc3d7929f1e109dc0cc3e10e8048214bfc0224d59869", + "blockNumber": "0x813d81", + "gasUsed": "0x23ff61", + "effectiveGasPrice": "0xf424a", + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xf3e6e8db96bd434cc633586e008a23ed1283ef62" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1748977712, + "chain": 11155111, + "commit": "86ef60f" +} \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/11155111/run-latest.json b/broadcast/Deploy-all.s.sol/11155111/run-latest.json index 85c3acc3..b808f9db 100644 --- a/broadcast/Deploy-all.s.sol/11155111/run-latest.json +++ b/broadcast/Deploy-all.s.sol/11155111/run-latest.json @@ -1,18 +1,18 @@ { "transactions": [ { - "hash": "0xe62cda122ca2adcf828362a33347dd80c850e79603dd17b933c83b2fb85c5650", + "hash": "0x7c103bd560a05265a970d9e40b2d0972652a179206642f0e792f67072ff72141", "transactionType": "CREATE2", - "contractName": "UERC20Factory", - "contractAddress": "0x58b3578be439f47e393503518b5c50fb6339237f", + "contractName": null, + "contractAddress": "0xf3e6e8db96bd434cc633586e008a23ed1283ef62", "function": null, "arguments": null, "transaction": { "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "value": "0x0", - "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506129b68061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80632c0cf9471461004357806394a8b1d414610073578063a5ea11da14610086575b5f5ffd5b6100566100513660046108cf565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109bd565b61030a565b61008e61039c565b60405161006a9190610a6e565b5f806100a983850185610b47565b80519091506001600160a01b031633146100f157805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b6040805160c0810182528a8152602081018a90529081018790526001600160a01b038616606082015260ff8816608082015260a081018290525f806101368c82610c9a565b506020820151600182019061014b9082610c9a565b50604082015160028201556060820151600382018054608085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560a08301518051600484018054919093166001600160a01b031991909116178255602081015190919060058401906101c29082610c9a565b50604082015160028201906101d79082610c9a565b50606082015160038201906101ec9082610c9a565b505083516040515f945061020a93508d92508c918c91602001610d54565b6040516020818303038152906040528051906020012090508060405161022f90610711565b8190604051809103905ff590508015801561024c573d5f5f3e3d5ffd5b5092505f8061025b818061071e565b610268600183015f61071e565b5f600283018190556003830180546001600160a81b03191690556004830180546001600160a01b0319168155906102a2600585018261071e565b6102af600283015f61071e565b6102bc600383015f61071e565b50506040516001600160a01b03861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050979650505050505050565b5f5f858585856040516020016103239493929190610d54565b6040516020818303038152906040528051906020012090505f6040518060200161034c90610711565b601f1982820381018352601f90910116604081905261036e9190602001610d9d565b6040516020818303038152906040528051906020012090506103918282306106df565b979650505050505050565b6103a4610758565b5f6040518060c00160405290815f820180546103bf90610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546103eb90610c16565b80156104365780601f1061040d57610100808354040283529160200191610436565b820191905f5260205f20905b81548152906001019060200180831161041957829003601f168201915b5050505050815260200160018201805461044f90610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461047b90610c16565b80156104c65780601f1061049d576101008083540402835291602001916104c6565b820191905f5260205f20905b8154815290600101906020018083116104a957829003601f168201915b5050509183525050600282015460208083019190915260038301546001600160a01b03808216604080860191909152600160a01b90920460ff1660608501528151608080820190935260048601805490921681526005860180549390950194909391929184019161053690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461056290610c16565b80156105ad5780601f10610584576101008083540402835291602001916105ad565b820191905f5260205f20905b81548152906001019060200180831161059057829003601f168201915b505050505081526020016002820180546105c690610c16565b80601f01602080910402602001604051908101604052809291908181526020018280546105f290610c16565b801561063d5780601f106106145761010080835404028352916020019161063d565b820191905f5260205f20905b81548152906001019060200180831161062057829003601f168201915b5050505050815260200160038201805461065690610c16565b80601f016020809104026020016040519081016040528092919081815260200182805461068290610c16565b80156106cd5780601f106106a4576101008083540402835291602001916106cd565b820191905f5260205f20905b8154815290600101906020018083116106b057829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611bf680610db483390190565b50805461072a90610c16565b5f825580601f10610739575050565b601f0160209004905f5260205f209081019061075591906107c7565b50565b6040518060c0016040528060608152602001606081526020015f81526020015f6001600160a01b031681526020015f60ff1681526020016107c260405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b808211156107db575f81556001016107c8565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715610815576108156107df565b60405290565b5f82601f83011261082a575f5ffd5b81356001600160401b03811115610843576108436107df565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610871576108716107df565b604052818152838201602001851015610888575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146108b4575f5ffd5b919050565b80356001600160a01b03811681146108b4575f5ffd5b5f5f5f5f5f5f5f60c0888a0312156108e5575f5ffd5b87356001600160401b038111156108fa575f5ffd5b6109068a828b0161081b565b97505060208801356001600160401b03811115610921575f5ffd5b61092d8a828b0161081b565b96505061093c604089016108a4565b945060608801359350610951608089016108b9565b925060a08801356001600160401b0381111561096b575f5ffd5b88015f80601f83018c1361097d575f5ffd5b5081356001600160401b03811115610993575f5ffd5b6020830191508b60208285010111156109aa575f5ffd5b989b979a50959850939692959293505050565b5f5f5f5f608085870312156109d0575f5ffd5b84356001600160401b038111156109e5575f5ffd5b6109f18782880161081b565b94505060208501356001600160401b03811115610a0c575f5ffd5b610a188782880161081b565b935050610a27604086016108a4565b9150610a35606086016108b9565b905092959194509250565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f825160c06020840152610a8960e0840182610a40565b90506020840151601f19848303016040850152610aa68282610a40565b9150506040840151606084015260018060a01b03606085015116608084015260ff60808501511660a084015260a0840151601f198483030160c085015260018060a01b038151168252602081015160806020840152610b086080840182610a40565b905060408201518382036040850152610b218282610a40565b915050606082015191508281036060840152610b3d8183610a40565b9695505050505050565b5f60208284031215610b57575f5ffd5b81356001600160401b03811115610b6c575f5ffd5b820160808185031215610b7d575f5ffd5b610b856107f3565b610b8e826108b9565b815260208201356001600160401b03811115610ba8575f5ffd5b610bb48682850161081b565b60208301525060408201356001600160401b03811115610bd2575f5ffd5b610bde8682850161081b565b60408301525060608201356001600160401b03811115610bfc575f5ffd5b610c088682850161081b565b606083015250949350505050565b600181811c90821680610c2a57607f821691505b602082108103610c4857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610c9557805f5260205f20601f840160051c81016020851015610c735750805b601f840160051c820191505b81811015610c92575f8155600101610c7f565b50505b505050565b81516001600160401b03811115610cb357610cb36107df565b610cc781610cc18454610c16565b84610c4e565b6020601f821160018114610cf9575f8315610ce25750848201515b5f19600385901b1c1916600184901b178455610c92565b5f84815260208120601f198516915b82811015610d285787850151825560209485019460019092019101610d08565b5084821015610d4557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b608081525f610d666080830187610a40565b8281036020840152610d788187610a40565b60ff95909516604084015250506001600160a01b039190911660609091015292915050565b5f82518060208501845e5f92019182525091905056fe60a060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610073919081019061035e565b80519091505f9061008490826104cb565b50602081015160019061009790826104cb565b5060808181015160ff16905260a08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100db90826104cb565b50604082015160028201906100f090826104cb565b506060820151600382019061010590826104cb565b5050506060810151604082015161011c9190610122565b50610585565b6805345cdf77eb68f44c54818101818110156101455763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101d9576101d96101a3565b60405290565b60405160c081016001600160401b03811182821017156101d9576101d96101a3565b5f82601f830112610210575f5ffd5b81516001600160401b03811115610229576102296101a3565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610257576102576101a3565b60405281815283820160200185101561026e575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102a0575f5ffd5b919050565b805160ff811681146102a0575f5ffd5b5f608082840312156102c5575f5ffd5b6102cd6101b7565b90506102d88261028a565b815260208201516001600160401b038111156102f2575f5ffd5b6102fe84828501610201565b60208301525060408201516001600160401b0381111561031c575f5ffd5b61032884828501610201565b60408301525060608201516001600160401b03811115610346575f5ffd5b61035284828501610201565b60608301525092915050565b5f6020828403121561036e575f5ffd5b81516001600160401b03811115610383575f5ffd5b820160c08185031215610394575f5ffd5b61039c6101df565b81516001600160401b038111156103b1575f5ffd5b6103bd86828501610201565b82525060208201516001600160401b038111156103d8575f5ffd5b6103e486828501610201565b602083015250604082810151908201526104006060830161028a565b6060820152610411608083016102a5565b608082015260a08201516001600160401b0381111561042e575f5ffd5b61043a868285016102b5565b60a083015250949350505050565b600181811c9082168061045c57607f821691505b60208210810361047a57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561019e57805f5260205f20601f840160051c810160208510156104a55750805b601f840160051c820191505b818110156104c4575f81556001016104b1565b5050505050565b81516001600160401b038111156104e4576104e46101a3565b6104f8816104f28454610448565b84610480565b6020601f82116001811461052a575f83156105135750848201515b5f19600385901b1c1916600184901b1784556104c4565b5f84815260208120601f198516915b828110156105595787850151825560209485019460019092019101610539565b508482101561057657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805161165961059d5f395f61015e01526116595ff3fe608060405234801561000f575f5ffd5b50600436106100e5575f3560e01c80633c130d901161008857806395d89b411161006357806395d89b41146101fa578063a9059cbb14610202578063d505accf14610215578063dd62ed3e1461022a575f5ffd5b80633c130d90146101a857806370a08231146101b05780637ecebe00146101d5575f5ffd5b806323b872dd116100c357806323b872dd14610144578063313ce567146101575780633644e51514610188578063392f37e914610190575f5ffd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f5ffd5b6100f161023d565b6040516100fe919061125d565b60405180910390f35b61011a61011536600461128a565b6102cc565b60405190151581526020016100fe565b6805345cdf77eb68f44c545b6040519081526020016100fe565b61011a6101523660046112b2565b61034c565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100fe565b61013661041c565b610198610498565b6040516100fe94939291906112ec565b6100f161064f565b6101366101be366004611340565b6387a211a2600c9081525f91909152602090205490565b6101366101e3366004611340565b6338377508600c9081525f91909152602090205490565b6100f1610831565b61011a61021036600461128a565b610840565b610228610223366004611359565b6108b7565b005b6101366102383660046113c6565b610a6b565b60605f805461024b906113f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610277906113f7565b80156102c25780601f10610299576101008083540402835291602001916102c2565b820191905f5260205f20905b8154815290600101906020018083116102a557829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba318821915176102fd57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa35060015b92915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146103a15733602052637f5e9f208117600c526034600c20805480191561039e5780851115610398576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156103c75763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f8061042661023d565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916104b6906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546104e2906113f7565b801561052d5780601f106105045761010080835404028352916020019161052d565b820191905f5260205f20905b81548152906001019060200180831161051057829003601f168201915b505050505090806002018054610542906113f7565b80601f016020809104026020016040519081016040528092919081815260200182805461056e906113f7565b80156105b95780601f10610590576101008083540402835291602001916105b9565b820191905f5260205f20905b81548152906001019060200180831161059c57829003601f168201915b5050505050908060030180546105ce906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546105fa906113f7565b80156106455780601f1061061c57610100808354040283529160200191610645565b820191905f5260205f20905b81548152906001019060200180831161062857829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b031682526003805460609361082c9390929091602084019190610687906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546106b3906113f7565b80156106fe5780601f106106d5576101008083540402835291602001916106fe565b820191905f5260205f20905b8154815290600101906020018083116106e157829003601f168201915b50505050508152602001600282018054610717906113f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610743906113f7565b801561078e5780601f106107655761010080835404028352916020019161078e565b820191905f5260205f20905b81548152906001019060200180831161077157829003601f168201915b505050505081526020016003820180546107a7906113f7565b80601f01602080910402602001604051908101604052809291908181526020018280546107d3906113f7565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b505050505081525050610aaf565b905090565b60606001805461024b906113f7565b5f6387a211a2600c52335f526020600c208054808411156108685763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba318851915176108e757633f68539a5f526004601cfd5b5f6108f061023d565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64286101561092f57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610a175763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610a9457505f19610346565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610ac2610abd83610ae8565b610bff565b604051602001610ad29190611446565b6040516020818303038152906040529050919050565b60605f610b00835f01516001600160a01b0316610c25565b604051602001610b109190611477565b60405160208183030381529060405290505f8360200151511115610b5f5780610b3c8460200151610cd3565b604051602001610b4d9291906114a8565b60405160208183030381529060405290505b60408301515115610b9b5780610b788460400151610cd3565b604051602001610b899291906114ea565b60405160208183030381529060405290505b60608301515115610bd75780610bb48460600151610cd3565b604051602001610bc5929190611515565b60405160208183030381529060405290505b80604051602001610be8919061153e565b604051602081830303815290604052915050919050565b60606103468260405180606001604052806040815260200161160d604091396001610f25565b60605f610c31836110a0565b6028602282012090915060601c60295b6001811115610cca57600782600f16118015610c7657506060838281518110610c6c57610c6c61155a565b016020015160f81c115b15610cb357602060f81b838281518110610c9257610c9261155a565b0160200180516001600160f81b0319908116909218909116905f82901a9053505b60049190911c90610cc381611582565b9050610c41565b50909392505050565b805160609082905f90610ce7906002611597565b67ffffffffffffffff811115610cff57610cff6115ae565b6040519080825280601f01601f191660200182016040528015610d29576020820181803683370190505b5090505f805b8351811015610f0e575f610d468583016020015190565b90506b100000000000000400003700600160f883901c1b1615610ed057601760fa1b8484610d73816115c2565b955081518110610d8557610d8561155a565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b03610ded57603160f91b8484610dc0816115c2565b955081518110610dd257610dd261155a565b60200101906001600160f81b03191690815f1a905350610f05565b6001600160f81b03198116600960f81b03610e1257601d60fa1b8484610dc0816115c2565b6001600160f81b03198116600560f91b03610e3757603760f91b8484610dc0816115c2565b6001600160f81b03198116600360fa1b03610e5c57603360f91b8484610dc0816115c2565b6001600160f81b03198116600d60f81b03610e8157603960f91b8484610dc0816115c2565b6001600160f81b03198116601760fa1b03610ea657601760fa1b8484610dc0816115c2565b6001600160f81b03198116601160f91b03610ecb57601160f91b8484610dc0816115c2565b610f05565b808484610edc816115c2565b955081518110610eee57610eee61155a565b60200101906001600160f81b03191690815f1a9053505b50600101610d2f565b50808252603f01601f191681016040529392505050565b606083515f03610f43575060408051602081019091525f8152610415565b5f82610f7357600385516004610f599190611597565b610f649060026115da565b610f6e91906115ed565b610f98565b600385516002610f8391906115da565b610f8d91906115ed565b610f98906004611597565b90505f8167ffffffffffffffff811115610fb457610fb46115ae565b6040519080825280601f01601f191660200182016040528015610fde576020820181803683370190505b509050600185016020820187885189016020810180515f82525b82841015611053576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450610ff8565b90525050851561109457600388510660018114611077576002811461108a57611092565b603d6001830353603d6002830353611092565b603d60018303535b505b50909695505050505050565b60606103466001600160a01b03831660146060825f6110c0846002611597565b6110cb9060026115da565b67ffffffffffffffff8111156110e3576110e36115ae565b6040519080825280601f01601f19166020018201604052801561110d576020820181803683370190505b509050600360fc1b815f815181106111275761112761155a565b60200101906001600160f81b03191690815f1a905350600f60fb1b816001815181106111555761115561155a565b60200101906001600160f81b03191690815f1a9053505f611177856002611597565b6111829060016115da565b90505b60018111156111f9576f181899199a1a9b1b9c1cb0b131b232b360811b83600f16601081106111b6576111b661155a565b1a60f81b8282815181106111cc576111cc61155a565b60200101906001600160f81b03191690815f1a90535060049290921c916111f281611582565b9050611185565b5081156112275760405163e22e27eb60e01b8152600481018690526024810185905260440160405180910390fd5b949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610415602083018461122f565b80356001600160a01b0381168114611285575f5ffd5b919050565b5f5f6040838503121561129b575f5ffd5b6112a48361126f565b946020939093013593505050565b5f5f5f606084860312156112c4575f5ffd5b6112cd8461126f565b92506112db6020850161126f565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f9061130f9083018661122f565b8281036040840152611321818661122f565b90508281036060840152611335818561122f565b979650505050505050565b5f60208284031215611350575f5ffd5b6104158261126f565b5f5f5f5f5f5f5f60e0888a03121561136f575f5ffd5b6113788861126f565b96506113866020890161126f565b95506040880135945060608801359350608088013560ff811681146113a9575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156113d7575f5ffd5b6113e08361126f565b91506113ee6020840161126f565b90509250929050565b600181811c9082168061140b57607f821691505b60208210810361142957634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610415601d83018461142f565b6b3d9121b932b0ba37b9111d1160a11b81525f611497600c83018461142f565b601160f91b81526001019392505050565b5f6114b3828561142f565b701610112232b9b1b934b83a34b7b7111d1160791b81526114d7601182018561142f565b601160f91b815260010195945050505050565b5f6114f5828561142f565b6c1610112bb2b139b4ba32911d1160991b81526114d7600d82018561142f565b5f611520828561142f565b6a16101124b6b0b3b2911d1160a91b81526114d7600b82018561142f565b5f611549828461142f565b607d60f81b81526001019392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f816115905761159061156e565b505f190190565b80820281158282048414176103465761034661156e565b634e487b7160e01b5f52604160045260245ffd5b5f600182016115d3576115d361156e565b5060010190565b808201808211156103465761034661156e565b5f8261160757634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", - "nonce": "0xd", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b5061299d8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063a255e0ad14610043578063a5ea11da14610073578063f752070e14610088575b5f5ffd5b610056610051366004610915565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b61007b610307565b60405161006a9190610a55565b610056610096366004610b01565b610645565b5f806100a984860186610b8b565b90506001600160a01b0386166100d257604051636c38382960e11b815260040160405180910390fd5b865f036100f257604051637ceabcb560e11b815260040160405180910390fd5b6040805161010081018252888152602081018590526001600160a01b038816918101829052336060820181905260ff8b166080830181905260a083018e905260c083018d905260e083018590525f8b81556001889055600280546001600160a01b031916909517909455600380546001600160a81b03191660ff60a01b1990931692909217600160a01b90910217905590600461018f8d82610ccd565b5060c082015160058201906101a49082610ccd565b5060e08201518051600683019081906101bd9082610ccd565b50602082015160018201906101d29082610ccd565b50604082015160028201906101e79082610ccd565b5050509050505f8a8a8a3387604051602001610207959493929190610d87565b6040516020818303038152906040528051906020012090508060405161022c9061070c565b8190604051809103905ff5905080158015610249573d5f5f3e3d5ffd5b505f8080556001819055600280546001600160a01b0319169055600380546001600160a81b031916905590935080610282600482610719565b61028f600583015f610719565b600682015f61029e8282610719565b6102ab600183015f610719565b6102b8600283015f610719565b50506040516001600160a01b03861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505098975050505050505050565b61030f610753565b60408051610100810182525f8054825260015460208301526002546001600160a01b03908116938301939093526003549283166060830152600160a01b90920460ff1660808201526004805491929160a08401919061036d90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461039990610c49565b80156103e45780601f106103bb576101008083540402835291602001916103e4565b820191905f5260205f20905b8154815290600101906020018083116103c757829003601f168201915b505050505081526020016005820180546103fd90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461042990610c49565b80156104745780601f1061044b57610100808354040283529160200191610474565b820191905f5260205f20905b81548152906001019060200180831161045757829003601f168201915b50505050508152602001600682016040518060600160405290815f8201805461049c90610c49565b80601f01602080910402602001604051908101604052809291908181526020018280546104c890610c49565b80156105135780601f106104ea57610100808354040283529160200191610513565b820191905f5260205f20905b8154815290600101906020018083116104f657829003601f168201915b5050505050815260200160018201805461052c90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461055890610c49565b80156105a35780601f1061057a576101008083540402835291602001916105a3565b820191905f5260205f20905b81548152906001019060200180831161058657829003601f168201915b505050505081526020016002820180546105bc90610c49565b80601f01602080910402602001604051908101604052809291908181526020018280546105e890610c49565b80156106335780601f1061060a57610100808354040283529160200191610633565b820191905f5260205f20905b81548152906001019060200180831161061657829003601f168201915b50505050508152505081525050905090565b5f5f8686868686604051602001610660959493929190610d87565b6040516020818303038152906040528051906020012090505f604051806020016106899061070c565b601f1982820381018352601f9091011660408190526106ab9190602001610dd5565b6040516020818303038152906040528051906020012090506106ce8282306106da565b98975050505050505050565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611ba580610dec83390190565b50805461072590610c49565b5f825580601f10610734575050565b601f0160209004905f5260205f209081019061075091906107c9565b50565b6040518061010001604052805f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f60ff16815260200160608152602001606081526020016107c460405180606001604052806060815260200160608152602001606081525090565b905290565b5b808211156107dd575f81556001016107ca565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715610817576108176107e1565b60405290565b5f82601f83011261082c575f5ffd5b81356001600160401b03811115610845576108456107e1565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610873576108736107e1565b60405281815283820160200185101561088a575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146108b6575f5ffd5b919050565b80356001600160a01b03811681146108b6575f5ffd5b5f5f83601f8401126108e1575f5ffd5b5081356001600160401b038111156108f7575f5ffd5b60208301915083602082850101111561090e575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b03121561092c575f5ffd5b88356001600160401b03811115610941575f5ffd5b61094d8b828c0161081d565b98505060208901356001600160401b03811115610968575f5ffd5b6109748b828c0161081d565b97505061098360408a016108a6565b95506060890135945061099860808a016108bb565b935060a08901356001600160401b038111156109b2575f5ffd5b6109be8b828c016108d1565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815160608452610a1960608501826109d7565b905060208301518482036020860152610a3282826109d7565b91505060408301518482036040860152610a4c82826109d7565b95945050505050565b6020815281516020820152602082015160408201525f6040830151610a8560608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160ff811660a08401525060a083015161010060c0840152610ac56101208401826109d7565b905060c0840151601f198483030160e0850152610ae282826109d7565b91505060e0840151601f1984830301610100850152610a4c8282610a05565b5f5f5f5f5f60a08688031215610b15575f5ffd5b85356001600160401b03811115610b2a575f5ffd5b610b368882890161081d565b95505060208601356001600160401b03811115610b51575f5ffd5b610b5d8882890161081d565b945050610b6c604087016108a6565b9250610b7a606087016108bb565b949793965091946080013592915050565b5f60208284031215610b9b575f5ffd5b81356001600160401b03811115610bb0575f5ffd5b820160608185031215610bc1575f5ffd5b610bc96107f5565b81356001600160401b03811115610bde575f5ffd5b610bea8682850161081d565b82525060208201356001600160401b03811115610c05575f5ffd5b610c118682850161081d565b60208301525060408201356001600160401b03811115610c2f575f5ffd5b610c3b8682850161081d565b604083015250949350505050565b600181811c90821680610c5d57607f821691505b602082108103610c7b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610cc857805f5260205f20601f840160051c81016020851015610ca65750805b601f840160051c820191505b81811015610cc5575f8155600101610cb2565b50505b505050565b81516001600160401b03811115610ce657610ce66107e1565b610cfa81610cf48454610c49565b84610c81565b6020601f821160018114610d2c575f8315610d155750848201515b5f19600385901b1c1916600184901b178455610cc5565b5f84815260208120601f198516915b82811015610d5b5787850151825560209485019460019092019101610d3b565b5084821015610d7857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f610d9960a08301886109d7565b8281036020840152610dab81886109d7565b60ff96909616604084015250506001600160a01b0392909216606083015260809091015292915050565b5f82518060208501845e5f92019182525091905056fe610100604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610074919081019061035f565b90508060a001515f908161008891906104e8565b505f60405161009791906105a2565b60405190819003902060805260c08101516001906100b590826104e8565b50608081015160ff1660e090815260608201516001600160a01b031660c052602082015160a052810151805160029081906100f090826104e8565b506020820151600182019061010590826104e8565b506040820151600282019061011a90826104e8565b5050506040810151815161012e9190610134565b50610613565b6805345cdf77eb68f44c54818101818110156101575763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156101ec576101ec6101b5565b60405290565b80516001600160a01b0381168114610208575f5ffd5b919050565b805160ff81168114610208575f5ffd5b5f82601f83011261022c575f5ffd5b81516001600160401b03811115610245576102456101b5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610273576102736101b5565b60405281815283820160200185101561028a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102b6575f5ffd5b604051606081016001600160401b03811182821017156102d8576102d86101b5565b604052825190915081906001600160401b038111156102f5575f5ffd5b6103018582860161021d565b82525060208301516001600160401b0381111561031c575f5ffd5b6103288582860161021d565b60208301525060408301516001600160401b03811115610346575f5ffd5b6103528582860161021d565b6040830152505092915050565b5f6020828403121561036f575f5ffd5b81516001600160401b03811115610384575f5ffd5b82016101008185031215610396575f5ffd5b61039e6101c9565b81518152602080830151908201526103b8604083016101f2565b60408201526103c9606083016101f2565b60608201526103da6080830161020d565b608082015260a08201516001600160401b038111156103f7575f5ffd5b6104038682850161021d565b60a08301525060c08201516001600160401b03811115610421575f5ffd5b61042d8682850161021d565b60c08301525060e08201516001600160401b0381111561044b575f5ffd5b610457868285016102a6565b60e083015250949350505050565b600181811c9082168061047957607f821691505b60208210810361049757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b057805f5260205f20601f840160051c810160208510156104c25750805b601f840160051c820191505b818110156104e1575f81556001016104ce565b5050505050565b81516001600160401b03811115610501576105016101b5565b6105158161050f8454610465565b8461049d565b6020601f821160018114610547575f83156105305750848201515b5f19600385901b1c1916600184901b1784556104e1565b5f84815260208120601f198516915b828110156105765787850151825560209485019460019092019101610556565b508482101561059357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105af81610465565b6001821680156105c657600181146105db57610608565b60ff1983168652811515820286019350610608565b865f5260205f205f5b83811015610600578154888201526001909101906020016105e4565b505081860193505b509195945050505050565b60805160a05160c05160e05161155861064d5f395f6101cd01525f61013701525f6102b001525f818161050401526109ce01526115585ff3fe608060405234801561000f575f5ffd5b5060043610610106575f3560e01c8063392f37e91161009e57806395d89b411161006e57806395d89b4114610268578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610298578063f56a499f146102ab575f5ffd5b8063392f37e9146101ff5780633c130d901461021657806370a082311461021e5780637ecebe0014610243575f5ffd5b806318160ddd116100d957806318160ddd1461019957806323b872dd146101b3578063313ce567146101c65780633644e515146101f7575f5ffd5b806301ffc9a71461010a57806302d05d3f1461013257806306fdde0314610171578063095ea7b314610186575b5f5ffd5b61011d610118366004611148565b6102d2565b60405190151581526020015b60405180910390f35b6101597f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610129565b610179610323565b604051610129919061119d565b61011d6101943660046111ca565b6103b2565b6805345cdf77eb68f44c545b604051908152602001610129565b61011d6101c13660046111f2565b610431565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610129565b6101a5610501565b6102076105a3565b6040516101299392919061122c565b61017961074b565b6101a561022c36600461126e565b6387a211a2600c9081525f91909152602090205490565b6101a561025136600461126e565b6338377508600c9081525f91909152602090205490565b610179610916565b61011d61027e3660046111ca565b610925565b610296610291366004611287565b61099c565b005b6101a56102a63660046112f4565b610b76565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b031982166301ffc9a760e01b148061030257506001600160e01b031982166336372b0760e01b145b8061031d57506001600160e01b03198216634ec7fbed60e11b145b92915050565b60605f805461033190611325565b80601f016020809104026020016040519081016040528092919081815260200182805461035d90611325565b80156103a85780601f1061037f576101008083540402835291602001916103a8565b820191905f5260205f20905b81548152906001019060200180831161038b57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba318821915176103e357633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146104865733602052637f5e9f208117600c526034600c208054801915610483578085111561047d576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156104ac5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000008061053a57610530610323565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b6002805481906105b290611325565b80601f01602080910402602001604051908101604052809291908181526020018280546105de90611325565b80156106295780601f1061060057610100808354040283529160200191610629565b820191905f5260205f20905b81548152906001019060200180831161060c57829003601f168201915b50505050509080600101805461063e90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461066a90611325565b80156106b55780601f1061068c576101008083540402835291602001916106b5565b820191905f5260205f20905b81548152906001019060200180831161069857829003601f168201915b5050505050908060020180546106ca90611325565b80601f01602080910402602001604051908101604052809291908181526020018280546106f690611325565b80156107415780601f1061071857610100808354040283529160200191610741565b820191905f5260205f20905b81548152906001019060200180831161072457829003601f168201915b5050505050905083565b606061091160026040518060600160405290815f8201805461076c90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461079890611325565b80156107e35780601f106107ba576101008083540402835291602001916107e3565b820191905f5260205f20905b8154815290600101906020018083116107c657829003601f168201915b505050505081526020016001820180546107fc90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461082890611325565b80156108735780601f1061084a57610100808354040283529160200191610873565b820191905f5260205f20905b81548152906001019060200180831161085657829003601f168201915b5050505050815260200160028201805461088c90611325565b80601f01602080910402602001604051908101604052809291908181526020018280546108b890611325565b80156109035780601f106108da57610100808354040283529160200191610903565b820191905f5260205f20905b8154815290600101906020018083116108e657829003601f168201915b505050505081525050610bba565b905090565b60606001805461033190611325565b5f6387a211a2600c52335f526020600c2080548084111561094d5763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba318851915176109cc57633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610a04576109fa610323565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610a3a57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610b225763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610b9f57505f1961031d565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610bcd610bc883610bf3565b610d55565b604051602001610bdd9190611374565b6040516020818303038152906040529050919050565b60605f604051602001610c0d90607b60f81b815260010190565b60408051601f198184030181529190528351519091505f9015610c5e5781610c37855f0151610d7b565b604051602001610c489291906113a5565b6040516020818303038152906040529150600190505b60208401515115610cc7578015610c925781604051602001610c8091906113e5565b60405160208183030381529060405291505b81610ca08560200151610d7b565b604051602001610cb1929190611402565b6040516020818303038152906040529150600190505b60408401515115610d2c578015610cfb5781604051602001610ce991906113e5565b60405160208183030381529060405291505b81610d098560400151610d7b565b604051602001610d1a92919061142b565b60405160208183030381529060405291505b81604051602001610d3d9190611452565b60405160208183030381529060405292505050919050565b606061031d8260405180606001604052806040815260200161150c604091396001610fcd565b805160609082905f90610d8f906002611482565b67ffffffffffffffff811115610da757610da7611499565b6040519080825280601f01601f191660200182016040528015610dd1576020820181803683370190505b5090505f805b8351811015610fb6575f610dee8583016020015190565b90506b100000000000000400003700600160f883901c1b1615610f7857601760fa1b8484610e1b816114ad565b955081518110610e2d57610e2d6114c5565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b03610e9557603160f91b8484610e68816114ad565b955081518110610e7a57610e7a6114c5565b60200101906001600160f81b03191690815f1a905350610fad565b6001600160f81b03198116600960f81b03610eba57601d60fa1b8484610e68816114ad565b6001600160f81b03198116600560f91b03610edf57603760f91b8484610e68816114ad565b6001600160f81b03198116600360fa1b03610f0457603360f91b8484610e68816114ad565b6001600160f81b03198116600d60f81b03610f2957603960f91b8484610e68816114ad565b6001600160f81b03198116601760fa1b03610f4e57601760fa1b8484610e68816114ad565b6001600160f81b03198116601160f91b03610f7357601160f91b8484610e68816114ad565b610fad565b808484610f84816114ad565b955081518110610f9657610f966114c5565b60200101906001600160f81b03191690815f1a9053505b50600101610dd7565b50808252603f01601f191681016040529392505050565b606083515f03610feb575060408051602081019091525f81526104fa565b5f8261101b576003855160046110019190611482565b61100c9060026114d9565b61101691906114ec565b611040565b60038551600261102b91906114d9565b61103591906114ec565b611040906004611482565b90505f8167ffffffffffffffff81111561105c5761105c611499565b6040519080825280601f01601f191660200182016040528015611086576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156110fb576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506110a0565b90525050851561113c5760038851066001811461111f57600281146111325761113a565b603d6001830353603d600283035361113a565b603d60018303535b505b50909695505050505050565b5f60208284031215611158575f5ffd5b81356001600160e01b0319811681146104fa575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6104fa602083018461116f565b80356001600160a01b03811681146111c5575f5ffd5b919050565b5f5f604083850312156111db575f5ffd5b6111e4836111af565b946020939093013593505050565b5f5f5f60608486031215611204575f5ffd5b61120d846111af565b925061121b602085016111af565b929592945050506040919091013590565b606081525f61123e606083018661116f565b8281036020840152611250818661116f565b90508281036040840152611264818561116f565b9695505050505050565b5f6020828403121561127e575f5ffd5b6104fa826111af565b5f5f5f5f5f5f5f60e0888a03121561129d575f5ffd5b6112a6886111af565b96506112b4602089016111af565b95506040880135945060608801359350608088013560ff811681146112d7575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611305575f5ffd5b61130e836111af565b915061131c602084016111af565b90509250929050565b600181811c9082168061133957607f821691505b60208210810361135757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6104fa601d83018461135d565b5f6113b0828561135d565b6e113232b9b1b934b83a34b7b7111d1160891b81526113d2600f82018561135d565b601160f91b815260010195945050505050565b5f6113f0828461135d565b61016160f51b81526002019392505050565b5f61140d828561135d565b6a113bb2b139b4ba32911d1160a91b81526113d2600b82018561135d565b5f611436828561135d565b681134b6b0b3b2911d1160b91b81526113d2600982018561135d565b5f61145d828461135d565b607d60f81b81526001019392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761031d5761031d61146e565b634e487b7160e01b5f52604160045260245ffd5b5f600182016114be576114be61146e565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561031d5761031d61146e565b5f8261150657634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0xf", "chainId": "0xaa36a7" }, "additionalContracts": [], @@ -22,25 +22,25 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x1376eab", + "cumulativeGasUsed": "0xdb480d", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xe62cda122ca2adcf828362a33347dd80c850e79603dd17b933c83b2fb85c5650", - "transactionIndex": "0x74", - "blockHash": "0xbb43400266884b548db73722f685b2de57e57ad3b1be930ff97906b2903709a3", - "blockNumber": "0x7fb84e", - "gasUsed": "0x241a84", - "effectiveGasPrice": "0x124ffc", + "transactionHash": "0x7c103bd560a05265a970d9e40b2d0972652a179206642f0e792f67072ff72141", + "transactionIndex": "0x5b", + "blockHash": "0xbc7e72969961ba1e274cfc3d7929f1e109dc0cc3e10e8048214bfc0224d59869", + "blockNumber": "0x813d81", + "gasUsed": "0x23ff61", + "effectiveGasPrice": "0xf424a", "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": null + "contractAddress": "0xf3e6e8db96bd434cc633586e008a23ed1283ef62" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1747774105, + "timestamp": 1748977712, "chain": 11155111, - "commit": "5addf85" + "commit": "86ef60f" } \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/1301/run-latest.json b/broadcast/Deploy-all.s.sol/1301/run-latest.json index 9b90e64f..fa2c6719 100644 --- a/broadcast/Deploy-all.s.sol/1301/run-latest.json +++ b/broadcast/Deploy-all.s.sol/1301/run-latest.json @@ -1,18 +1,18 @@ { "transactions": [ { - "hash": "0x170028b613a6daf839e60de54b8dcc7e230909a6eed67d3e444324ec063c3d6a", + "hash": "0x50e4b98402a4086e37e2d05c9f090ee6fda3cba66822dcb29b0115148549995b", "transactionType": "CREATE2", - "contractName": "UERC20SuperchainFactory", - "contractAddress": "0x43414b3556b6dfbb1278670871b11c73c22c93f3", + "contractName": null, + "contractAddress": "0x40c6d986e4d4ba38e64e22da10991105ed251996", "function": null, "arguments": null, "transaction": { "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "value": "0x0", - "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b50612d7f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806312e5f742146100435780632c0cf94714610073578063a5ea11da14610086575b5f5ffd5b61005661005136600461094f565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b6100566100813660046109db565b610130565b61008e610409565b60405161006a9190610b54565b5f5f86868686866040516020016100b6959493929190610bde565b6040516020818303038152906040528051906020012090505f604051806020016100df9061078b565b601f1982820381018352601f9091011660408190526101019190602001610c2c565b604051602081830303815290604052805190602001209050610124828230610759565b98975050505050505050565b5f808061013f84860186610c42565b91509150814614801561015c575080516001600160a01b03163314155b1561019557805160405160016223c24760e11b031981523360048201526001600160a01b03909116602482015260440160405180910390fd5b80516040515f916101b0918d918d918d918891602001610bde565b604051602081830303815290604052805190602001209050824614610207575f8083526040805160208082018352838252808601919091528151808201835283815282860152815190810190915290815260608301525b6040805160e0810182528c8152602081018c9052908101899052606081018490526001600160a01b038816608082015260ff8a1660a082015260c081018390525f806102538e82610da1565b50602082015160018201906102689082610da1565b506040820151600282015560608201516003820155608082015160048201805460a085015160ff16600160a01b026001600160a81b03199091166001600160a01b039384161717905560c08301518051600584018054919093166001600160a01b031991909116178255602081015190919060068401906102e99082610da1565b50604082015160028201906102fe9082610da1565b50606082015160038201906103139082610da1565b505050905050806040516103269061078b565b8190604051809103905ff5905080158015610343573d5f5f3e3d5ffd5b5093505f806103528180610798565b61035f600183015f610798565b5f60028301819055600383018190556004830180546001600160a81b03191690556005830180546001600160a01b0319168155906103a06006850182610798565b6103ad600283015f610798565b6103ba600383015f610798565b50506040516001600160a01b03871681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505050979650505050505050565b6104116107d2565b5f6040518060e00160405290815f8201805461042c90610d1d565b80601f016020809104026020016040519081016040528092919081815260200182805461045890610d1d565b80156104a35780601f1061047a576101008083540402835291602001916104a3565b820191905f5260205f20905b81548152906001019060200180831161048657829003601f168201915b505050505081526020016001820180546104bc90610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546104e890610d1d565b80156105335780601f1061050a57610100808354040283529160200191610533565b820191905f5260205f20905b81548152906001019060200180831161051657829003601f168201915b50505091835250506002820154602080830191909152600383015460408084019190915260048401546001600160a01b038082166060860152600160a01b90910460ff166080808601919091528251908101909252600585018054909116825260068501805460a09095019492939192918401916105b090610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546105dc90610d1d565b80156106275780601f106105fe57610100808354040283529160200191610627565b820191905f5260205f20905b81548152906001019060200180831161060a57829003601f168201915b5050505050815260200160028201805461064090610d1d565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90610d1d565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016003820180546106d090610d1d565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90610d1d565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611f1780610e5c83390190565b5080546107a490610d1d565b5f825580601f106107b3575050565b601f0160209004905f5260205f20908101906107cf9190610847565b50565b6040518060e0016040528060608152602001606081526020015f81526020015f81526020015f6001600160a01b031681526020015f60ff16815260200161084260405180608001604052805f6001600160a01b031681526020016060815260200160608152602001606081525090565b905290565b5b8082111561085b575f8155600101610848565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156108955761089561085f565b60405290565b5f82601f8301126108aa575f5ffd5b81356001600160401b038111156108c3576108c361085f565b604051601f8201601f19908116603f011681016001600160401b03811182821017156108f1576108f161085f565b604052818152838201602001851015610908575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610934575f5ffd5b919050565b80356001600160a01b0381168114610934575f5ffd5b5f5f5f5f5f60a08688031215610963575f5ffd5b85356001600160401b03811115610978575f5ffd5b6109848882890161089b565b95505060208601356001600160401b0381111561099f575f5ffd5b6109ab8882890161089b565b9450506109ba60408701610924565b9250606086013591506109cf60808701610939565b90509295509295909350565b5f5f5f5f5f5f5f60c0888a0312156109f1575f5ffd5b87356001600160401b03811115610a06575f5ffd5b610a128a828b0161089b565b97505060208801356001600160401b03811115610a2d575f5ffd5b610a398a828b0161089b565b965050610a4860408901610924565b945060608801359350610a5d60808901610939565b925060a08801356001600160401b03811115610a77575f5ffd5b8801601f81018a13610a87575f5ffd5b80356001600160401b03811115610a9c575f5ffd5b8a6020828401011115610aad575f5ffd5b602082019350809250505092959891949750929550565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b0381511682525f602082015160806020850152610b186080850182610ac4565b905060408301518482036040860152610b318282610ac4565b91505060608301518482036060860152610b4b8282610ac4565b95945050505050565b602081525f825160e06020840152610b70610100840182610ac4565b90506020840151601f19848303016040850152610b8d8282610ac4565b915050604084015160608401526060840151608084015260018060a01b0360808501511660a084015260ff60a08501511660c084015260c0840151601f198483030160e0850152610b4b8282610af2565b60a081525f610bf060a0830188610ac4565b8281036020840152610c028188610ac4565b60ff969096166040840152505060608101929092526001600160a01b031660809091015292915050565b5f82518060208501845e5f920191825250919050565b5f5f60408385031215610c53575f5ffd5b8235915060208301356001600160401b03811115610c6f575f5ffd5b830160808186031215610c80575f5ffd5b610c88610873565b610c9182610939565b815260208201356001600160401b03811115610cab575f5ffd5b610cb78782850161089b565b60208301525060408201356001600160401b03811115610cd5575f5ffd5b610ce18782850161089b565b60408301525060608201356001600160401b03811115610cff575f5ffd5b610d0b8782850161089b565b60608301525080925050509250929050565b600181811c90821680610d3157607f821691505b602082108103610d4f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610d9c57805f5260205f20601f840160051c81016020851015610d7a5750805b601f840160051c820191505b81811015610d99575f8155600101610d86565b50505b505050565b81516001600160401b03811115610dba57610dba61085f565b610dce81610dc88454610d1d565b84610d55565b6020601f821160018114610e00575f8315610de95750848201515b5f19600385901b1c1916600184901b178455610d99565b5f84815260208120601f198516915b82811015610e2f5787850151825560209485019460019092019101610e0f565b5084821015610e4c57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe60c060405234801561000f575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004c573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100739190810190610375565b606081015160a05280519091505f9061008c90826104ec565b50602081015160019061009f90826104ec565b5060a081015160ff1660805260c08101518051600280546001600160a01b0319166001600160a01b0390921691909117815560208201516003906100e390826104ec565b50604082015160028201906100f890826104ec565b506060820151600382019061010d90826104ec565b50505060608101514603610133576101338160800151826040015161013960201b60201c565b506105a6565b6805345cdf77eb68f44c548181018181101561015c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156101f0576101f06101ba565b60405290565b60405160e081016001600160401b03811182821017156101f0576101f06101ba565b5f82601f830112610227575f5ffd5b81516001600160401b03811115610240576102406101ba565b604051601f8201601f19908116603f011681016001600160401b038111828210171561026e5761026e6101ba565b604052818152838201602001851015610285575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b80516001600160a01b03811681146102b7575f5ffd5b919050565b805160ff811681146102b7575f5ffd5b5f608082840312156102dc575f5ffd5b6102e46101ce565b90506102ef826102a1565b815260208201516001600160401b03811115610309575f5ffd5b61031584828501610218565b60208301525060408201516001600160401b03811115610333575f5ffd5b61033f84828501610218565b60408301525060608201516001600160401b0381111561035d575f5ffd5b61036984828501610218565b60608301525092915050565b5f60208284031215610385575f5ffd5b81516001600160401b0381111561039a575f5ffd5b820160e081850312156103ab575f5ffd5b6103b36101f6565b81516001600160401b038111156103c8575f5ffd5b6103d486828501610218565b82525060208201516001600160401b038111156103ef575f5ffd5b6103fb86828501610218565b6020830152506040828101519082015260608083015190820152610421608083016102a1565b608082015261043260a083016102bc565b60a082015260c08201516001600160401b0381111561044f575f5ffd5b61045b868285016102cc565b60c083015250949350505050565b600181811c9082168061047d57607f821691505b60208210810361049b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b557805f5260205f20601f840160051c810160208510156104c65750805b601f840160051c820191505b818110156104e5575f81556001016104d2565b5050505050565b81516001600160401b03811115610505576105056101ba565b610519816105138454610469565b846104a1565b6020601f82116001811461054b575f83156105345750848201515b5f19600385901b1c1916600184901b1784556104e5565b5f84815260208120601f198516915b8281101561057a578785015182556020948501946001909201910161055a565b508482101561059757868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60805160a0516119506105c75f395f6102ae01525f6101cc01526119505ff3fe608060405234801561000f575f5ffd5b506004361061011c575f3560e01c8063392f37e9116100a9578063a9059cbb1161006e578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610296578063ef126967146102a9578063ef31f2cd146102d0575f5ffd5b8063392f37e9146101fe5780633c130d901461021657806370a082311461021e5780637ecebe001461024357806395d89b4114610268575f5ffd5b806318bf5077116100ef57806318bf50771461018a57806323b872dd1461019f5780632b8c49e3146101b2578063313ce567146101c55780633644e515146101f6575f5ffd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b5f5ffd5b61013361012e3660046114df565b6102f6565b60405190151581526020015b60405180910390f35b610150610347565b60405161013f9190611534565b61013361016b366004611561565b6103d6565b6805345cdf77eb68f44c545b60405190815260200161013f565b61019d610198366004611561565b610455565b005b6101336101ad366004611589565b6104df565b61019d6101c0366004611561565b61059c565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161013f565b61017c610619565b610206610695565b60405161013f94939291906115c3565b61015061084c565b61017c61022c366004611617565b6387a211a2600c9081525f91909152602090205490565b61017c610251366004611617565b6338377508600c9081525f91909152602090205490565b610150610a2e565b61013361027e366004611561565b610a3d565b61019d610291366004611630565b610aa1565b61017c6102a436600461169d565b610c55565b61017c7f000000000000000000000000000000000000000000000000000000000000000081565b6102de6028602160991b0181565b6040516001600160a01b03909116815260200161013f565b5f6001600160e01b03198216630cccc66560e21b148061032657506001600160e01b031982166336372b0760e01b145b8061034157506001600160e01b031982166301ffc9a760e01b145b92915050565b60605f8054610355906116ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610381906116ce565b80156103cc5780601f106103a3576101008083540402835291602001916103cc565b820191905f5260205f20905b8154815290600101906020018083116103af57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761040757633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b011461049057604051632e0d831f60e01b81523360048201526028602160991b0160248201526044015b60405180910390fd5b61049a8282610c99565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105345733602052637f5e9f208117600c526034600c208054801915610531578085111561052b576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c2080548085111561055a5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f5160206119245f395f51905f52602080a3505060015b9392505050565b336028602160991b01146105d257604051632e0d831f60e01b81523360048201526028602160991b016024820152604401610487565b6105dc8282610d02565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd4906020016104d3565b5f80610623610347565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054600380546001600160a01b0390921692916106b3906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546106df906116ce565b801561072a5780601f106107015761010080835404028352916020019161072a565b820191905f5260205f20905b81548152906001019060200180831161070d57829003601f168201915b50505050509080600201805461073f906116ce565b80601f016020809104026020016040519081016040528092919081815260200182805461076b906116ce565b80156107b65780601f1061078d576101008083540402835291602001916107b6565b820191905f5260205f20905b81548152906001019060200180831161079957829003601f168201915b5050505050908060030180546107cb906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546107f7906116ce565b80156108425780601f1061081957610100808354040283529160200191610842565b820191905f5260205f20905b81548152906001019060200180831161082557829003601f168201915b5050505050905084565b6040805160808101909152600280546001600160a01b0316825260038054606093610a299390929091602084019190610884906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546108b0906116ce565b80156108fb5780601f106108d2576101008083540402835291602001916108fb565b820191905f5260205f20905b8154815290600101906020018083116108de57829003601f168201915b50505050508152602001600282018054610914906116ce565b80601f0160208091040260200160405190810160405280929190818152602001828054610940906116ce565b801561098b5780601f106109625761010080835404028352916020019161098b565b820191905f5260205f20905b81548152906001019060200180831161096e57829003601f168201915b505050505081526020016003820180546109a4906116ce565b80601f01602080910402602001604051908101604052809291908181526020018280546109d0906116ce565b8015610a1b5780601f106109f257610100808354040283529160200191610a1b565b820191905f5260205f20905b8154815290600101906020018083116109fe57829003601f168201915b505050505081525050610d63565b905090565b606060018054610355906116ce565b5f6387a211a2600c52335f526020600c20805480841115610a655763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f5160206119245f395f51905f52602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba31885191517610ad157633f68539a5f526004601cfd5b5f610ada610347565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b1957631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610c015763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610c7e57505f19610341565b50602052637f5e9f20600c9081525f91909152603490205490565b6805345cdf77eb68f44c5481810181811015610cbc5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f5160206119245f395f51905f52602080a35050565b6387a211a2600c52815f526020600c20805480831115610d295763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f5160206119245f395f51905f52602083a35050565b6060610d76610d7183610d9c565b610eb3565b604051602001610d86919061171d565b6040516020818303038152906040529050919050565b60605f610db4835f01516001600160a01b0316610ed9565b604051602001610dc4919061174e565b60405160208183030381529060405290505f8360200151511115610e135780610df08460200151610f87565b604051602001610e0192919061177f565b60405160208183030381529060405290505b60408301515115610e4f5780610e2c8460400151610f87565b604051602001610e3d9291906117c1565b60405160208183030381529060405290505b60608301515115610e8b5780610e688460600151610f87565b604051602001610e799291906117ec565b60405160208183030381529060405290505b80604051602001610e9c9190611815565b604051602081830303815290604052915050919050565b6060610341826040518060600160405280604081526020016118e46040913960016111d9565b60605f610ee583611354565b6028602282012090915060601c60295b6001811115610f7e57600782600f16118015610f2a57506060838281518110610f2057610f20611831565b016020015160f81c115b15610f6757602060f81b838281518110610f4657610f46611831565b0160200180516001600160f81b0319908116909218909116905f82901a9053505b60049190911c90610f7781611859565b9050610ef5565b50909392505050565b805160609082905f90610f9b90600261186e565b67ffffffffffffffff811115610fb357610fb3611885565b6040519080825280601f01601f191660200182016040528015610fdd576020820181803683370190505b5090505f805b83518110156111c2575f610ffa8583016020015190565b90506b100000000000000400003700600160f883901c1b161561118457601760fa1b848461102781611899565b95508151811061103957611039611831565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b036110a157603160f91b848461107481611899565b95508151811061108657611086611831565b60200101906001600160f81b03191690815f1a9053506111b9565b6001600160f81b03198116600960f81b036110c657601d60fa1b848461107481611899565b6001600160f81b03198116600560f91b036110eb57603760f91b848461107481611899565b6001600160f81b03198116600360fa1b0361111057603360f91b848461107481611899565b6001600160f81b03198116600d60f81b0361113557603960f91b848461107481611899565b6001600160f81b03198116601760fa1b0361115a57601760fa1b848461107481611899565b6001600160f81b03198116601160f91b0361117f57601160f91b848461107481611899565b6111b9565b80848461119081611899565b9550815181106111a2576111a2611831565b60200101906001600160f81b03191690815f1a9053505b50600101610fe3565b50808252603f01601f191681016040529392505050565b606083515f036111f7575060408051602081019091525f8152610595565b5f826112275760038551600461120d919061186e565b6112189060026118b1565b61122291906118c4565b61124c565b60038551600261123791906118b1565b61124191906118c4565b61124c90600461186e565b90505f8167ffffffffffffffff81111561126857611268611885565b6040519080825280601f01601f191660200182016040528015611292576020820181803683370190505b509050600185016020820187885189016020810180515f82525b82841015611307576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506112ac565b9052505085156113485760038851066001811461132b576002811461133e57611346565b603d6001830353603d6002830353611346565b603d60018303535b505b50909695505050505050565b60606103416001600160a01b03831660146060825f61137484600261186e565b61137f9060026118b1565b67ffffffffffffffff81111561139757611397611885565b6040519080825280601f01601f1916602001820160405280156113c1576020820181803683370190505b509050600360fc1b815f815181106113db576113db611831565b60200101906001600160f81b03191690815f1a905350600f60fb1b8160018151811061140957611409611831565b60200101906001600160f81b03191690815f1a9053505f61142b85600261186e565b6114369060016118b1565b90505b60018111156114ad576f181899199a1a9b1b9c1cb0b131b232b360811b83600f166010811061146a5761146a611831565b1a60f81b82828151811061148057611480611831565b60200101906001600160f81b03191690815f1a90535060049290921c916114a681611859565b9050611439565b5081156114d75760405163e22e27eb60e01b81526004810186905260248101859052604401610487565b949350505050565b5f602082840312156114ef575f5ffd5b81356001600160e01b031981168114610595575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105956020830184611506565b80356001600160a01b038116811461155c575f5ffd5b919050565b5f5f60408385031215611572575f5ffd5b61157b83611546565b946020939093013593505050565b5f5f5f6060848603121561159b575f5ffd5b6115a484611546565b92506115b260208501611546565b929592945050506040919091013590565b6001600160a01b03851681526080602082018190525f906115e690830186611506565b82810360408401526115f88186611506565b9050828103606084015261160c8185611506565b979650505050505050565b5f60208284031215611627575f5ffd5b61059582611546565b5f5f5f5f5f5f5f60e0888a031215611646575f5ffd5b61164f88611546565b965061165d60208901611546565b95506040880135945060608801359350608088013560ff81168114611680575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156116ae575f5ffd5b6116b783611546565b91506116c560208401611546565b90509250929050565b600181811c908216806116e257607f821691505b60208210810361170057634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610595601d830184611706565b6b3d9121b932b0ba37b9111d1160a11b81525f61176e600c830184611706565b601160f91b81526001019392505050565b5f61178a8285611706565b701610112232b9b1b934b83a34b7b7111d1160791b81526117ae6011820185611706565b601160f91b815260010195945050505050565b5f6117cc8285611706565b6c1610112bb2b139b4ba32911d1160991b81526117ae600d820185611706565b5f6117f78285611706565b6a16101124b6b0b3b2911d1160a91b81526117ae600b820185611706565b5f6118208284611706565b607d60f81b81526001019392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8161186757611867611845565b505f190190565b808202811582820484141761034157610341611845565b634e487b7160e01b5f52604160045260245ffd5b5f600182016118aa576118aa611845565b5060010190565b8082018082111561034157610341611845565b5f826118de57634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081c000aa164736f6c634300081c000a", - "nonce": "0xb", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b50612dab8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806340c84ea014610043578063a255e0ad14610073578063a5ea11da14610086575b5f5ffd5b6100566100513660046109d0565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b610056610081366004610aac565b610133565b61008e610490565b60405161006a9190610bee565b5f5f8787878787876040516020016100b896959493929190610ca6565b6040516020818303038152906040528051906020012090505f604051806020016100e190610807565b601f1982820381018352601f9091011660408190526101039190602001610cfc565b6040516020818303038152906040528051906020012090506101268282306107d5565b9998505050505050505050565b5f80808061014386880188610d12565b9250925092508246036101d857336001600160a01b038316146101915760405160016223c24760e11b031981523360048201526001600160a01b038316602482015260440160405180910390fd5b6001600160a01b0388166101b857604051636c38382960e11b815260040160405180910390fd5b885f036101d857604051637ceabcb560e11b815260040160405180910390fd5b5f8c8c8c86868a6040516020016101f496959493929190610ca6565b6040516020818303038152906040528051906020012090508346146102425760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a6001600160a01b03168152602001846001600160a01b031681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506080820151816004015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c08201518160050190816103429190610e71565b5060e082015160068201906103579082610e71565b506101008201518051600783019081906103719082610e71565b50602082015160018201906103869082610e71565b506040820151600282019061039b9082610e71565b505050905050806040516103ae90610807565b8190604051809103905ff59050801580156103cb573d5f5f3e3d5ffd5b505f80805560018190556002819055600380546001600160a01b0319169055600480546001600160a81b031916905590955080610409600582610814565b610416600683015f610814565b600782015f6104258282610814565b610432600183015f610814565b61043f600283015f610814565b50506040516001600160a01b03881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b61049861084e565b60408051610120810182525f805482526001546020830152600254928201929092526003546001600160a01b0390811660608301526004549081166080830152600160a01b900460ff1660a08201526005805491929160c0840191906104fd90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461052990610ded565b80156105745780601f1061054b57610100808354040283529160200191610574565b820191905f5260205f20905b81548152906001019060200180831161055757829003601f168201915b5050505050815260200160068201805461058d90610ded565b80601f01602080910402602001604051908101604052809291908181526020018280546105b990610ded565b80156106045780601f106105db57610100808354040283529160200191610604565b820191905f5260205f20905b8154815290600101906020018083116105e757829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461062c90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461065890610ded565b80156106a35780601f1061067a576101008083540402835291602001916106a3565b820191905f5260205f20905b81548152906001019060200180831161068657829003601f168201915b505050505081526020016001820180546106bc90610ded565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890610ded565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b5050505050815260200160028201805461074c90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461077890610ded565b80156107c35780601f1061079a576101008083540402835291602001916107c3565b820191905f5260205f20905b8154815290600101906020018083116107a657829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611e7380610f2c83390190565b50805461082090610ded565b5f825580601f1061082f575050565b601f0160209004905f5260205f209081019061084b91906108ca565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f60ff16815260200160608152602001606081526020016108c560405180606001604052806060815260200160608152602001606081525090565b905290565b5b808211156108de575f81556001016108cb565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715610918576109186108e2565b60405290565b5f82601f83011261092d575f5ffd5b81356001600160401b03811115610946576109466108e2565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610974576109746108e2565b60405281815283820160200185101561098b575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146109b7575f5ffd5b919050565b6001600160a01b038116811461084b575f5ffd5b5f5f5f5f5f5f60c087890312156109e5575f5ffd5b86356001600160401b038111156109fa575f5ffd5b610a0689828a0161091e565b96505060208701356001600160401b03811115610a21575f5ffd5b610a2d89828a0161091e565b955050610a3c604088016109a7565b9350606087013592506080870135610a53816109bc565b9598949750929591949360a090920135925050565b5f5f83601f840112610a78575f5ffd5b5081356001600160401b03811115610a8e575f5ffd5b602083019150836020828501011115610aa5575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610ac3575f5ffd5b88356001600160401b03811115610ad8575f5ffd5b610ae48b828c0161091e565b98505060208901356001600160401b03811115610aff575f5ffd5b610b0b8b828c0161091e565b975050610b1a60408a016109a7565b9550606089013594506080890135610b31816109bc565b935060a08901356001600160401b03811115610b4b575f5ffd5b610b578b828c01610a68565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815160608452610bb26060850182610b70565b905060208301518482036020860152610bcb8282610b70565b91505060408301518482036040860152610be58282610b70565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610c2860808401826001600160a01b03169052565b5060808301516001600160a01b03811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610c68610140840182610b70565b905060e0840151601f1984830301610100850152610c868282610b70565b915050610100840151601f1984830301610120850152610be58282610b9e565b60c081525f610cb860c0830189610b70565b8281036020840152610cca8189610b70565b60ff979097166040840152505060608101939093526001600160a01b0391909116608083015260a09091015292915050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610d24575f5ffd5b833592506020840135610d36816109bc565b915060408401356001600160401b03811115610d50575f5ffd5b840160608187031215610d61575f5ffd5b610d696108f6565b81356001600160401b03811115610d7e575f5ffd5b610d8a8882850161091e565b82525060208201356001600160401b03811115610da5575f5ffd5b610db18882850161091e565b60208301525060408201356001600160401b03811115610dcf575f5ffd5b610ddb8882850161091e565b60408301525080925050509250925092565b600181811c90821680610e0157607f821691505b602082108103610e1f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610e6c57805f5260205f20601f840160051c81016020851015610e4a5750805b601f840160051c820191505b81811015610e69575f8155600101610e56565b50505b505050565b81516001600160401b03811115610e8a57610e8a6108e2565b610e9e81610e988454610ded565b84610e25565b6020601f821160018114610ed0575f8315610eb95750848201515b5f19600385901b1c1916600184901b178455610e69565b5f84815260208120601f198516915b82811015610eff5787850151825560209485019460019092019101610edf565b5084821015610f1c57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e051610100516117fb6106785f395f61030201525f61022101525f61016301525f61033701525f81816106800152610b3701526117fb5ff3fe608060405234801561000f575f5ffd5b5060043610610132575f3560e01c8063392f37e9116100b4578063a9059cbb11610079578063a9059cbb146102c4578063d505accf146102d7578063dd62ed3e146102ea578063ef126967146102fd578063ef31f2cd14610324578063f56a499f14610332575f5ffd5b8063392f37e9146102535780633c130d901461026a57806370a08231146102725780637ecebe001461029757806395d89b41146102bc575f5ffd5b806318bf5077116100fa57806318bf5077146101df57806323b872dd146101f45780632b8c49e314610207578063313ce5671461021a5780633644e5151461024b575f5ffd5b806301ffc9a71461013657806302d05d3f1461015e57806306fdde031461019d578063095ea7b3146101b257806318160ddd146101c5575b5f5ffd5b6101496101443660046113cb565b610359565b60405190151581526020015b60405180910390f35b6101857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610155565b6101a5610384565b6040516101559190611420565b6101496101c036600461144d565b610413565b6805345cdf77eb68f44c545b604051908152602001610155565b6101f26101ed36600461144d565b610492565b005b610149610202366004611475565b610543565b6101f261021536600461144d565b610600565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610155565b6101d161067d565b61025b61071f565b604051610155939291906114af565b6101a56108c7565b6101d16102803660046114f1565b6387a211a2600c9081525f91909152602090205490565b6101d16102a53660046114f1565b6338377508600c9081525f91909152602090205490565b6101a5610a92565b6101496102d236600461144d565b610aa1565b6101f26102e536600461150a565b610b05565b6101d16102f8366004611577565b610cdf565b6101d17f000000000000000000000000000000000000000000000000000000000000000081565b6101856028602160991b0181565b6101d17f000000000000000000000000000000000000000000000000000000000000000081565b5f61036382610d23565b8061037e57506001600160e01b03198216630cccc66560e21b145b92915050565b60605f8054610392906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546103be906115a8565b80156104095780601f106103e057610100808354040283529160200191610409565b820191905f5260205f20905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761044457633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b01146104cd57604051632e0d831f60e01b81523360048201526028602160991b0160248201526044015b60405180910390fd5b6001600160a01b0382166104f457604051636c38382960e11b815260040160405180910390fd5b6104fe8282610d73565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105985733602052637f5e9f208117600c526034600c208054801915610595578085111561058f576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156105be5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f5160206117cf5f395f51905f52602080a3505060015b9392505050565b336028602160991b011461063657604051632e0d831f60e01b81523360048201526028602160991b0160248201526044016104c4565b6106408282610ddc565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610537565b5f7f0000000000000000000000000000000000000000000000000000000000000000806106b6576106ac610384565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061072e906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461075a906115a8565b80156107a55780601f1061077c576101008083540402835291602001916107a5565b820191905f5260205f20905b81548152906001019060200180831161078857829003601f168201915b5050505050908060010180546107ba906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546107e6906115a8565b80156108315780601f1061080857610100808354040283529160200191610831565b820191905f5260205f20905b81548152906001019060200180831161081457829003601f168201915b505050505090806002018054610846906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610872906115a8565b80156108bd5780601f10610894576101008083540402835291602001916108bd565b820191905f5260205f20905b8154815290600101906020018083116108a057829003601f168201915b5050505050905083565b6060610a8d60026040518060600160405290815f820180546108e8906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610914906115a8565b801561095f5780601f106109365761010080835404028352916020019161095f565b820191905f5260205f20905b81548152906001019060200180831161094257829003601f168201915b50505050508152602001600182018054610978906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546109a4906115a8565b80156109ef5780601f106109c6576101008083540402835291602001916109ef565b820191905f5260205f20905b8154815290600101906020018083116109d257829003601f168201915b50505050508152602001600282018054610a08906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a34906115a8565b8015610a7f5780601f10610a5657610100808354040283529160200191610a7f565b820191905f5260205f20905b815481529060010190602001808311610a6257829003601f168201915b505050505081525050610e3d565b905090565b606060018054610392906115a8565b5f6387a211a2600c52335f526020600c20805480841115610ac95763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f5160206117cf5f395f51905f52602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba31885191517610b3557633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610b6d57610b63610384565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610ba357631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610c8b5763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610d0857505f1961037e565b50602052637f5e9f20600c9081525f91909152603490205490565b5f6001600160e01b031982166301ffc9a760e01b1480610d5357506001600160e01b031982166336372b0760e01b145b8061037e57506001600160e01b03198216634ec7fbed60e11b1492915050565b6805345cdf77eb68f44c5481810181811015610d965763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f5160206117cf5f395f51905f52602080a35050565b6387a211a2600c52815f526020600c20805480831115610e035763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f5160206117cf5f395f51905f52602083a35050565b6060610e50610e4b83610e76565b610fd8565b604051602001610e6091906115f7565b6040516020818303038152906040529050919050565b60605f604051602001610e9090607b60f81b815260010190565b60408051601f198184030181529190528351519091505f9015610ee15781610eba855f0151610ffe565b604051602001610ecb929190611628565b6040516020818303038152906040529150600190505b60208401515115610f4a578015610f155781604051602001610f039190611668565b60405160208183030381529060405291505b81610f238560200151610ffe565b604051602001610f34929190611685565b6040516020818303038152906040529150600190505b60408401515115610faf578015610f7e5781604051602001610f6c9190611668565b60405160208183030381529060405291505b81610f8c8560400151610ffe565b604051602001610f9d9291906116ae565b60405160208183030381529060405291505b81604051602001610fc091906116d5565b60405160208183030381529060405292505050919050565b606061037e8260405180606001604052806040815260200161178f604091396001611250565b805160609082905f90611012906002611705565b67ffffffffffffffff81111561102a5761102a61171c565b6040519080825280601f01601f191660200182016040528015611054576020820181803683370190505b5090505f805b8351811015611239575f6110718583016020015190565b90506b100000000000000400003700600160f883901c1b16156111fb57601760fa1b848461109e81611730565b9550815181106110b0576110b0611748565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b0361111857603160f91b84846110eb81611730565b9550815181106110fd576110fd611748565b60200101906001600160f81b03191690815f1a905350611230565b6001600160f81b03198116600960f81b0361113d57601d60fa1b84846110eb81611730565b6001600160f81b03198116600560f91b0361116257603760f91b84846110eb81611730565b6001600160f81b03198116600360fa1b0361118757603360f91b84846110eb81611730565b6001600160f81b03198116600d60f81b036111ac57603960f91b84846110eb81611730565b6001600160f81b03198116601760fa1b036111d157601760fa1b84846110eb81611730565b6001600160f81b03198116601160f91b036111f657601160f91b84846110eb81611730565b611230565b80848461120781611730565b95508151811061121957611219611748565b60200101906001600160f81b03191690815f1a9053505b5060010161105a565b50808252603f01601f191681016040529392505050565b606083515f0361126e575060408051602081019091525f81526105f9565b5f8261129e576003855160046112849190611705565b61128f90600261175c565b611299919061176f565b6112c3565b6003855160026112ae919061175c565b6112b8919061176f565b6112c3906004611705565b90505f8167ffffffffffffffff8111156112df576112df61171c565b6040519080825280601f01601f191660200182016040528015611309576020820181803683370190505b509050600185016020820187885189016020810180515f82525b8284101561137e576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450611323565b9052505085156113bf576003885106600181146113a257600281146113b5576113bd565b603d6001830353603d60028303536113bd565b603d60018303535b505b50909695505050505050565b5f602082840312156113db575f5ffd5b81356001600160e01b0319811681146105f9575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105f960208301846113f2565b80356001600160a01b0381168114611448575f5ffd5b919050565b5f5f6040838503121561145e575f5ffd5b61146783611432565b946020939093013593505050565b5f5f5f60608486031215611487575f5ffd5b61149084611432565b925061149e60208501611432565b929592945050506040919091013590565b606081525f6114c160608301866113f2565b82810360208401526114d381866113f2565b905082810360408401526114e781856113f2565b9695505050505050565b5f60208284031215611501575f5ffd5b6105f982611432565b5f5f5f5f5f5f5f60e0888a031215611520575f5ffd5b61152988611432565b965061153760208901611432565b95506040880135945060608801359350608088013560ff8116811461155a575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611588575f5ffd5b61159183611432565b915061159f60208401611432565b90509250929050565b600181811c908216806115bc57607f821691505b6020821081036115da57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6105f9601d8301846115e0565b5f61163382856115e0565b6e113232b9b1b934b83a34b7b7111d1160891b8152611655600f8201856115e0565b601160f91b815260010195945050505050565b5f61167382846115e0565b61016160f51b81526002019392505050565b5f61169082856115e0565b6a113bb2b139b4ba32911d1160a91b8152611655600b8201856115e0565b5f6116b982856115e0565b681134b6b0b3b2911d1160b91b815261165560098201856115e0565b5f6116e082846115e0565b607d60f81b81526001019392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761037e5761037e6116f1565b634e487b7160e01b5f52604160045260245ffd5b5f60018201611741576117416116f1565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561037e5761037e6116f1565b5f8261178957634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0xe", "chainId": "0x515" }, "additionalContracts": [], @@ -22,15 +22,15 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x5947c6", + "cumulativeGasUsed": "0x2c690c", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x170028b613a6daf839e60de54b8dcc7e230909a6eed67d3e444324ec063c3d6a", - "transactionIndex": "0x46", - "blockHash": "0x9a23b4ad37e3c6d056b48ad67f0d089d53fb83989d5c55494cc9c11c03524b2e", - "blockNumber": "0x13f3c3b", - "gasUsed": "0x274da6", + "transactionHash": "0x50e4b98402a4086e37e2d05c9f090ee6fda3cba66822dcb29b0115148549995b", + "transactionIndex": "0x7", + "blockHash": "0x4b3107ff9adb20f6d09974328c962b54f15fc329bccc8676c7d5984155b994cf", + "blockNumber": "0x1519754", + "gasUsed": "0x276c94", "effectiveGasPrice": "0x2faf080", "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", @@ -38,15 +38,15 @@ "l1BaseFeeScalar": "0x7d0", "l1BlobBaseFee": "0x1", "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x7c7d", - "l1GasPrice": "0x88", - "l1GasUsed": "0x17b40" + "l1Fee": "0x2516", + "l1GasPrice": "0x15", + "l1GasUsed": "0x17979" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1747773832, + "timestamp": 1748976801, "chain": 1301, - "commit": "5addf85" + "commit": "86ef60f" } \ No newline at end of file diff --git a/script/deploy/tasks/11155111/task-1748977656.json b/script/deploy/tasks/11155111/task-1748977656.json new file mode 100644 index 00000000..eb434d62 --- /dev/null +++ b/script/deploy/tasks/11155111/task-1748977656.json @@ -0,0 +1,481 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": true, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "UERC20SuperchainFactory": { + "deploy": false, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file diff --git a/script/deploy/tasks/1301/task-1748976789.json b/script/deploy/tasks/1301/task-1748976789.json new file mode 100644 index 00000000..b65744c8 --- /dev/null +++ b/script/deploy/tasks/1301/task-1748976789.json @@ -0,0 +1,481 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": false, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "UERC20SuperchainFactory": { + "deploy": true, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file From dd0a295a4cf9e73cfdab36bee921df295909bd38 Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Tue, 3 Jun 2025 17:12:44 -0400 Subject: [PATCH 12/13] correct number of runs --- .../11155111/run-1748985045.json | 46 ++ .../Deploy-all.s.sol/11155111/run-latest.json | 30 +- .../Deploy-all.s.sol/1301/run-1748984784.json | 52 ++ .../Deploy-all.s.sol/1301/run-latest.json | 34 +- deployments/11155111.md | 30 +- deployments/1301.md | 246 +++++---- deployments/json/11155111.json | 22 +- deployments/json/1301.json | 22 +- .../tasks/11155111/task-1748984988.json | 481 ++++++++++++++++++ script/deploy/tasks/1301/task-1748984758.json | 481 ++++++++++++++++++ .../uerc20-factory/UERC20FactoryDeployer.sol | 2 +- .../UERC20SuperchainFactoryDeployer.sol | 2 +- 12 files changed, 1288 insertions(+), 160 deletions(-) create mode 100644 broadcast/Deploy-all.s.sol/11155111/run-1748985045.json create mode 100644 broadcast/Deploy-all.s.sol/1301/run-1748984784.json create mode 100644 script/deploy/tasks/11155111/task-1748984988.json create mode 100644 script/deploy/tasks/1301/task-1748984758.json diff --git a/broadcast/Deploy-all.s.sol/11155111/run-1748985045.json b/broadcast/Deploy-all.s.sol/11155111/run-1748985045.json new file mode 100644 index 00000000..686fd3e7 --- /dev/null +++ b/broadcast/Deploy-all.s.sol/11155111/run-1748985045.json @@ -0,0 +1,46 @@ +{ + "transactions": [ + { + "hash": "0xeb200999e9ca93432554b85ddad8e6f401d8e5194335b133975e1dbba4907324", + "transactionType": "CREATE2", + "contractName": "UERC20Factory", + "contractAddress": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5", + "function": null, + "arguments": null, + "transaction": { + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506131a28061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063a255e0ad14610043578063a5ea11da14610080578063f752070e14610095575b5f5ffd5b610056610051366004610ab2565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100886103f9565b6040516100779190610c13565b6100566100a3366004610d15565b610755565b5f806100b684860186610da1565b905073ffffffffffffffffffffffffffffffffffffffff8616610105576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b865f0361013e576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051610100810182528881526020810185905273ffffffffffffffffffffffffffffffffffffffff8816918101829052336060820181905260ff8b166080830181905260a083018e905260c083018d905260e083018590525f8b81556001889055600280547fffffffffffffffffffffffff000000000000000000000000000000000000000016909517909455600380547fffffffffffffffffffffff000000000000000000000000000000000000000000167fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217740100000000000000000000000000000000000000009091021790559060046102448d82610f00565b5060c082015160058201906102599082610f00565b5060e08201518051600683019081906102729082610f00565b50602082015160018201906102879082610f00565b506040820151600282019061029c9082610f00565b5050509050505f8a8a8a33876040516020016102bc959493929190611017565b604051602081830303815290604052805190602001209050806040516102e190610847565b8190604051809103905ff59050801580156102fe573d5f5f3e3d5ffd5b505f8080556001819055600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600380547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590935080610367600482610854565b610374600583015f610854565b600682015f6103838282610854565b610390600183015f610854565b61039d600283015f610854565b505060405173ffffffffffffffffffffffffffffffffffffffff861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505098975050505050505050565b61040161088e565b60408051610100810182525f80548252600154602083015260025473ffffffffffffffffffffffffffffffffffffffff9081169383019390935260035492831660608301527401000000000000000000000000000000000000000090920460ff1660808201526004805491929160a08401919061047d90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990610e63565b80156104f45780601f106104cb576101008083540402835291602001916104f4565b820191905f5260205f20905b8154815290600101906020018083116104d757829003601f168201915b5050505050815260200160058201805461050d90610e63565b80601f016020809104026020016040519081016040528092919081815260200182805461053990610e63565b80156105845780601f1061055b57610100808354040283529160200191610584565b820191905f5260205f20905b81548152906001019060200180831161056757829003601f168201915b50505050508152602001600682016040518060600160405290815f820180546105ac90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890610e63565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b5050505050815260200160018201805461063c90610e63565b80601f016020809104026020016040519081016040528092919081815260200182805461066890610e63565b80156106b35780601f1061068a576101008083540402835291602001916106b3565b820191905f5260205f20905b81548152906001019060200180831161069657829003601f168201915b505050505081526020016002820180546106cc90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546106f890610e63565b80156107435780601f1061071a57610100808354040283529160200191610743565b820191905f5260205f20905b81548152906001019060200180831161072657829003601f168201915b50505050508152505081525050905090565b5f5f8686868686604051602001610770959493929190611017565b6040516020818303038152906040528051906020012090505f6040518060200161079990610847565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190526107d99190602001611072565b6040516020818303038152906040528051906020012090506107fc828230610808565b98975050505050505050565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b61210d8061108983390190565b50805461086090610e63565b5f825580601f1061086f575050565b601f0160209004905f5260205f209081019061088b919061091e565b50565b6040518061010001604052805f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff168152602001606081526020016060815260200161091960405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610932575f815560010161091f565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561098657610986610936565b60405290565b5f82601f83011261099b575f5ffd5b813567ffffffffffffffff8111156109b5576109b5610936565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610a0257610a02610936565b604052818152838201602001851015610a19575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610a45575f5ffd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a45575f5ffd5b5f5f83601f840112610a7d575f5ffd5b50813567ffffffffffffffff811115610a94575f5ffd5b602083019150836020828501011115610aab575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610ac9575f5ffd5b883567ffffffffffffffff811115610adf575f5ffd5b610aeb8b828c0161098c565b985050602089013567ffffffffffffffff811115610b07575f5ffd5b610b138b828c0161098c565b975050610b2260408a01610a35565b955060608901359450610b3760808a01610a4a565b935060a089013567ffffffffffffffff811115610b52575f5ffd5b610b5e8b828c01610a6d565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610bd76060850182610b77565b905060208301518482036020860152610bf08282610b77565b91505060408301518482036040860152610c0a8282610b77565b95945050505050565b6020815281516020820152602082015160408201525f6040830151610c50606084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015173ffffffffffffffffffffffffffffffffffffffff8116608084015250608083015160ff811660a08401525060a083015161010060c0840152610c9d610120840182610b77565b905060c08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160e0850152610cd88282610b77565b91505060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610c0a8282610bc3565b5f5f5f5f5f60a08688031215610d29575f5ffd5b853567ffffffffffffffff811115610d3f575f5ffd5b610d4b8882890161098c565b955050602086013567ffffffffffffffff811115610d67575f5ffd5b610d738882890161098c565b945050610d8260408701610a35565b9250610d9060608701610a4a565b949793965091946080013592915050565b5f60208284031215610db1575f5ffd5b813567ffffffffffffffff811115610dc7575f5ffd5b820160608185031215610dd8575f5ffd5b610de0610963565b813567ffffffffffffffff811115610df6575f5ffd5b610e028682850161098c565b825250602082013567ffffffffffffffff811115610e1e575f5ffd5b610e2a8682850161098c565b602083015250604082013567ffffffffffffffff811115610e49575f5ffd5b610e558682850161098c565b604083015250949350505050565b600181811c90821680610e7757607f821691505b602082108103610eae577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610efb57805f5260205f20601f840160051c81016020851015610ed95750805b601f840160051c820191505b81811015610ef8575f8155600101610ee5565b50505b505050565b815167ffffffffffffffff811115610f1a57610f1a610936565b610f2e81610f288454610e63565b84610eb4565b6020601f821160018114610f7f575f8315610f495750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ef8565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015610fcc5787850151825560209485019460019092019101610fac565b508482101561100857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f61102960a0830188610b77565b828103602084015261103b8188610b77565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b5f82518060208501845e5f92019182525091905056fe610100604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610074919081019061035f565b90508060a001515f908161008891906104e8565b505f60405161009791906105a2565b60405190819003902060805260c08101516001906100b590826104e8565b50608081015160ff1660e090815260608201516001600160a01b031660c052602082015160a052810151805160029081906100f090826104e8565b506020820151600182019061010590826104e8565b506040820151600282019061011a90826104e8565b5050506040810151815161012e9190610134565b50610613565b6805345cdf77eb68f44c54818101818110156101575763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156101ec576101ec6101b5565b60405290565b80516001600160a01b0381168114610208575f5ffd5b919050565b805160ff81168114610208575f5ffd5b5f82601f83011261022c575f5ffd5b81516001600160401b03811115610245576102456101b5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610273576102736101b5565b60405281815283820160200185101561028a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102b6575f5ffd5b604051606081016001600160401b03811182821017156102d8576102d86101b5565b604052825190915081906001600160401b038111156102f5575f5ffd5b6103018582860161021d565b82525060208301516001600160401b0381111561031c575f5ffd5b6103288582860161021d565b60208301525060408301516001600160401b03811115610346575f5ffd5b6103528582860161021d565b6040830152505092915050565b5f6020828403121561036f575f5ffd5b81516001600160401b03811115610384575f5ffd5b82016101008185031215610396575f5ffd5b61039e6101c9565b81518152602080830151908201526103b8604083016101f2565b60408201526103c9606083016101f2565b60608201526103da6080830161020d565b608082015260a08201516001600160401b038111156103f7575f5ffd5b6104038682850161021d565b60a08301525060c08201516001600160401b03811115610421575f5ffd5b61042d8682850161021d565b60c08301525060e08201516001600160401b0381111561044b575f5ffd5b610457868285016102a6565b60e083015250949350505050565b600181811c9082168061047957607f821691505b60208210810361049757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b057805f5260205f20601f840160051c810160208510156104c25750805b601f840160051c820191505b818110156104e1575f81556001016104ce565b5050505050565b81516001600160401b03811115610501576105016101b5565b6105158161050f8454610465565b8461049d565b6020601f821160018114610547575f83156105305750848201515b5f19600385901b1c1916600184901b1784556104e1565b5f84815260208120601f198516915b828110156105765787850151825560209485019460019092019101610556565b508482101561059357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105af81610465565b6001821680156105c657600181146105db57610608565b60ff1983168652811515820286019350610608565b865f5260205f205f5b83811015610600578154888201526001909101906020016105e4565b505081860193505b509195945050505050565b60805160a05160c05160e051611ac061064d5f395f6101e901525f61014601525f6102cc01525f81816105c00152610a970152611ac05ff3fe608060405234801561000f575f5ffd5b5060043610610115575f3560e01c8063392f37e9116100ad57806395d89b411161007d578063d505accf11610063578063d505accf1461029f578063dd62ed3e146102b4578063f56a499f146102c7575f5ffd5b806395d89b4114610284578063a9059cbb1461028c575f5ffd5b8063392f37e91461021b5780633c130d901461023257806370a082311461023a5780637ecebe001461025f575f5ffd5b806318160ddd116100e857806318160ddd146101b557806323b872dd146101cf578063313ce567146101e25780633644e51514610213575f5ffd5b806301ffc9a71461011957806302d05d3f1461014157806306fdde031461018d578063095ea7b3146101a2575b5f5ffd5b61012c61012736600461154a565b6102ee565b60405190151581526020015b60405180910390f35b6101687f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610138565b6101956103d2565b60405161013891906115d5565b61012c6101b036600461160f565b610461565b6805345cdf77eb68f44c545b604051908152602001610138565b61012c6101dd366004611637565b6104ed565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610138565b6101c16105bd565b61022361065f565b60405161013893929190611671565b610195610807565b6101c16102483660046116b3565b6387a211a2600c9081525f91909152602090205490565b6101c161026d3660046116b3565b6338377508600c9081525f91909152602090205490565b6101956109d2565b61012c61029a36600461160f565b6109e1565b6102b26102ad3660046116cc565b610a58565b005b6101c16102c2366004611739565b610c50565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061038057507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b806103cc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b92915050565b60605f80546103e09061176a565b80601f016020809104026020016040519081016040528092919081815260200182805461040c9061176a565b80156104575780601f1061042e57610100808354040283529160200191610457565b820191905f5260205f20905b81548152906001019060200180831161043a57829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba3188219151761049f57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105425733602052637f5e9f208117600c526034600c20805480191561053f5780851115610539576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156105685763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000806105f6576105ec6103d2565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061066e9061176a565b80601f016020809104026020016040519081016040528092919081815260200182805461069a9061176a565b80156106e55780601f106106bc576101008083540402835291602001916106e5565b820191905f5260205f20905b8154815290600101906020018083116106c857829003601f168201915b5050505050908060010180546106fa9061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546107269061176a565b80156107715780601f1061074857610100808354040283529160200191610771565b820191905f5260205f20905b81548152906001019060200180831161075457829003601f168201915b5050505050908060020180546107869061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546107b29061176a565b80156107fd5780601f106107d4576101008083540402835291602001916107fd565b820191905f5260205f20905b8154815290600101906020018083116107e057829003601f168201915b5050505050905083565b60606109cd60026040518060600160405290815f820180546108289061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546108549061176a565b801561089f5780601f106108765761010080835404028352916020019161089f565b820191905f5260205f20905b81548152906001019060200180831161088257829003601f168201915b505050505081526020016001820180546108b89061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546108e49061176a565b801561092f5780601f106109065761010080835404028352916020019161092f565b820191905f5260205f20905b81548152906001019060200180831161091257829003601f168201915b505050505081526020016002820180546109489061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546109749061176a565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081525050610cd0565b905090565b6060600180546103e09061176a565b5f6387a211a2600c52335f526020600c20805480841115610a095763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610a9557633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610acd57610ac36103d2565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b0357631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610beb5763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610cb557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103cc565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610ce3610cde83610d09565b610ea5565b604051602001610cf391906117d2565b6040516020818303038152906040529050919050565b60605f604051602001610d3f907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f9015610dae5781610d87855f0151610ecb565b604051602001610d98929190611803565b6040516020818303038152906040529150600190505b60208401515115610e17578015610de25781604051602001610dd0919061186d565b60405160208183030381529060405291505b81610df08560200151610ecb565b604051602001610e019291906118a5565b6040516020818303038152906040529150600190505b60408401515115610e7c578015610e4b5781604051602001610e39919061186d565b60405160208183030381529060405291505b81610e598560400151610ecb565b604051602001610e6a9291906118e0565b60405160208183030381529060405291505b81604051602001610e8d919061191b565b60405160208183030381529060405292505050919050565b60606103cc82604051806060016040528060408152602001611a746040913960016113cf565b805160609082905f90610edf906002611980565b67ffffffffffffffff811115610ef757610ef7611997565b6040519080825280601f01601f191660200182016040528015610f21576020820181803683370190505b5090505f805b835181101561139a575f610f3e8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611344577f5c000000000000000000000000000000000000000000000000000000000000008484610f87816119c4565b955081518110610f9957610f996119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f080000000000000000000000000000000000000000000000000000000000000003611081577f6200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b95508151811061104e5761104e6119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350611391565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036110f6577f7400000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a000000000000000000000000000000000000000000000000000000000000000361116b577f6e00000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036111e0577f6600000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611255577f7200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036112ca577f5c00000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361133f577f2200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b611391565b808484611350816119c4565b955081518110611362576113626119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101610f27565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036113ed575060408051602081019091525f81526105b6565b5f8261141d576003855160046114039190611980565b61140e906002611a28565b6114189190611a3b565b611442565b60038551600261142d9190611a28565b6114379190611a3b565b611442906004611980565b90505f8167ffffffffffffffff81111561145e5761145e611997565b6040519080825280601f01601f191660200182016040528015611488576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156114fd576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506114a2565b90525050851561153e5760038851066001811461152157600281146115345761153c565b603d6001830353603d600283035361153c565b603d60018303535b505b50909695505050505050565b5f6020828403121561155a575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105b6575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6105b66020830184611589565b803573ffffffffffffffffffffffffffffffffffffffff8116811461160a575f5ffd5b919050565b5f5f60408385031215611620575f5ffd5b611629836115e7565b946020939093013593505050565b5f5f5f60608486031215611649575f5ffd5b611652846115e7565b9250611660602085016115e7565b929592945050506040919091013590565b606081525f6116836060830186611589565b82810360208401526116958186611589565b905082810360408401526116a98185611589565b9695505050505050565b5f602082840312156116c3575f5ffd5b6105b6826115e7565b5f5f5f5f5f5f5f60e0888a0312156116e2575f5ffd5b6116eb886115e7565b96506116f9602089016115e7565b95506040880135945060608801359350608088013560ff8116811461171c575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f6040838503121561174a575f5ffd5b611753836115e7565b9150611761602084016115e7565b90509250929050565b600181811c9082168061177e57607f821691505b6020821081036117b5577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6105b6601d8301846117bb565b5f61180e82856117bb565b7f226465736372697074696f6e223a220000000000000000000000000000000000815261183e600f8201856117bb565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f61187882846117bb565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f6118b082856117bb565b7f2277656273697465223a22000000000000000000000000000000000000000000815261183e600b8201856117bb565b5f6118eb82856117bb565b7f22696d616765223a220000000000000000000000000000000000000000000000815261183e60098201856117bb565b5f61192682846117bb565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176103cc576103cc611953565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119f4576119f4611953565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808201808211156103cc576103cc611953565b5f82611a6e577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0x10", + "chainId": "0xaa36a7" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x26b8008", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xeb200999e9ca93432554b85ddad8e6f401d8e5194335b133975e1dbba4907324", + "transactionIndex": "0x15b", + "blockHash": "0x460bf1a8a9380c3179169994a4baa7025525f8d8af25bb1bb2dc735440d06bf9", + "blockNumber": "0x813fe2", + "gasUsed": "0x2a84e8", + "effectiveGasPrice": "0xf4248", + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1748985045, + "chain": 11155111, + "commit": "8c0b627" +} \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/11155111/run-latest.json b/broadcast/Deploy-all.s.sol/11155111/run-latest.json index b808f9db..686fd3e7 100644 --- a/broadcast/Deploy-all.s.sol/11155111/run-latest.json +++ b/broadcast/Deploy-all.s.sol/11155111/run-latest.json @@ -1,18 +1,18 @@ { "transactions": [ { - "hash": "0x7c103bd560a05265a970d9e40b2d0972652a179206642f0e792f67072ff72141", + "hash": "0xeb200999e9ca93432554b85ddad8e6f401d8e5194335b133975e1dbba4907324", "transactionType": "CREATE2", - "contractName": null, - "contractAddress": "0xf3e6e8db96bd434cc633586e008a23ed1283ef62", + "contractName": "UERC20Factory", + "contractAddress": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5", "function": null, "arguments": null, "transaction": { "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "value": "0x0", - "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b5061299d8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063a255e0ad14610043578063a5ea11da14610073578063f752070e14610088575b5f5ffd5b610056610051366004610915565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b61007b610307565b60405161006a9190610a55565b610056610096366004610b01565b610645565b5f806100a984860186610b8b565b90506001600160a01b0386166100d257604051636c38382960e11b815260040160405180910390fd5b865f036100f257604051637ceabcb560e11b815260040160405180910390fd5b6040805161010081018252888152602081018590526001600160a01b038816918101829052336060820181905260ff8b166080830181905260a083018e905260c083018d905260e083018590525f8b81556001889055600280546001600160a01b031916909517909455600380546001600160a81b03191660ff60a01b1990931692909217600160a01b90910217905590600461018f8d82610ccd565b5060c082015160058201906101a49082610ccd565b5060e08201518051600683019081906101bd9082610ccd565b50602082015160018201906101d29082610ccd565b50604082015160028201906101e79082610ccd565b5050509050505f8a8a8a3387604051602001610207959493929190610d87565b6040516020818303038152906040528051906020012090508060405161022c9061070c565b8190604051809103905ff5905080158015610249573d5f5f3e3d5ffd5b505f8080556001819055600280546001600160a01b0319169055600380546001600160a81b031916905590935080610282600482610719565b61028f600583015f610719565b600682015f61029e8282610719565b6102ab600183015f610719565b6102b8600283015f610719565b50506040516001600160a01b03861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505098975050505050505050565b61030f610753565b60408051610100810182525f8054825260015460208301526002546001600160a01b03908116938301939093526003549283166060830152600160a01b90920460ff1660808201526004805491929160a08401919061036d90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461039990610c49565b80156103e45780601f106103bb576101008083540402835291602001916103e4565b820191905f5260205f20905b8154815290600101906020018083116103c757829003601f168201915b505050505081526020016005820180546103fd90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461042990610c49565b80156104745780601f1061044b57610100808354040283529160200191610474565b820191905f5260205f20905b81548152906001019060200180831161045757829003601f168201915b50505050508152602001600682016040518060600160405290815f8201805461049c90610c49565b80601f01602080910402602001604051908101604052809291908181526020018280546104c890610c49565b80156105135780601f106104ea57610100808354040283529160200191610513565b820191905f5260205f20905b8154815290600101906020018083116104f657829003601f168201915b5050505050815260200160018201805461052c90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461055890610c49565b80156105a35780601f1061057a576101008083540402835291602001916105a3565b820191905f5260205f20905b81548152906001019060200180831161058657829003601f168201915b505050505081526020016002820180546105bc90610c49565b80601f01602080910402602001604051908101604052809291908181526020018280546105e890610c49565b80156106335780601f1061060a57610100808354040283529160200191610633565b820191905f5260205f20905b81548152906001019060200180831161061657829003601f168201915b50505050508152505081525050905090565b5f5f8686868686604051602001610660959493929190610d87565b6040516020818303038152906040528051906020012090505f604051806020016106899061070c565b601f1982820381018352601f9091011660408190526106ab9190602001610dd5565b6040516020818303038152906040528051906020012090506106ce8282306106da565b98975050505050505050565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611ba580610dec83390190565b50805461072590610c49565b5f825580601f10610734575050565b601f0160209004905f5260205f209081019061075091906107c9565b50565b6040518061010001604052805f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f60ff16815260200160608152602001606081526020016107c460405180606001604052806060815260200160608152602001606081525090565b905290565b5b808211156107dd575f81556001016107ca565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715610817576108176107e1565b60405290565b5f82601f83011261082c575f5ffd5b81356001600160401b03811115610845576108456107e1565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610873576108736107e1565b60405281815283820160200185101561088a575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146108b6575f5ffd5b919050565b80356001600160a01b03811681146108b6575f5ffd5b5f5f83601f8401126108e1575f5ffd5b5081356001600160401b038111156108f7575f5ffd5b60208301915083602082850101111561090e575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b03121561092c575f5ffd5b88356001600160401b03811115610941575f5ffd5b61094d8b828c0161081d565b98505060208901356001600160401b03811115610968575f5ffd5b6109748b828c0161081d565b97505061098360408a016108a6565b95506060890135945061099860808a016108bb565b935060a08901356001600160401b038111156109b2575f5ffd5b6109be8b828c016108d1565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815160608452610a1960608501826109d7565b905060208301518482036020860152610a3282826109d7565b91505060408301518482036040860152610a4c82826109d7565b95945050505050565b6020815281516020820152602082015160408201525f6040830151610a8560608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160ff811660a08401525060a083015161010060c0840152610ac56101208401826109d7565b905060c0840151601f198483030160e0850152610ae282826109d7565b91505060e0840151601f1984830301610100850152610a4c8282610a05565b5f5f5f5f5f60a08688031215610b15575f5ffd5b85356001600160401b03811115610b2a575f5ffd5b610b368882890161081d565b95505060208601356001600160401b03811115610b51575f5ffd5b610b5d8882890161081d565b945050610b6c604087016108a6565b9250610b7a606087016108bb565b949793965091946080013592915050565b5f60208284031215610b9b575f5ffd5b81356001600160401b03811115610bb0575f5ffd5b820160608185031215610bc1575f5ffd5b610bc96107f5565b81356001600160401b03811115610bde575f5ffd5b610bea8682850161081d565b82525060208201356001600160401b03811115610c05575f5ffd5b610c118682850161081d565b60208301525060408201356001600160401b03811115610c2f575f5ffd5b610c3b8682850161081d565b604083015250949350505050565b600181811c90821680610c5d57607f821691505b602082108103610c7b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610cc857805f5260205f20601f840160051c81016020851015610ca65750805b601f840160051c820191505b81811015610cc5575f8155600101610cb2565b50505b505050565b81516001600160401b03811115610ce657610ce66107e1565b610cfa81610cf48454610c49565b84610c81565b6020601f821160018114610d2c575f8315610d155750848201515b5f19600385901b1c1916600184901b178455610cc5565b5f84815260208120601f198516915b82811015610d5b5787850151825560209485019460019092019101610d3b565b5084821015610d7857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f610d9960a08301886109d7565b8281036020840152610dab81886109d7565b60ff96909616604084015250506001600160a01b0392909216606083015260809091015292915050565b5f82518060208501845e5f92019182525091905056fe610100604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610074919081019061035f565b90508060a001515f908161008891906104e8565b505f60405161009791906105a2565b60405190819003902060805260c08101516001906100b590826104e8565b50608081015160ff1660e090815260608201516001600160a01b031660c052602082015160a052810151805160029081906100f090826104e8565b506020820151600182019061010590826104e8565b506040820151600282019061011a90826104e8565b5050506040810151815161012e9190610134565b50610613565b6805345cdf77eb68f44c54818101818110156101575763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156101ec576101ec6101b5565b60405290565b80516001600160a01b0381168114610208575f5ffd5b919050565b805160ff81168114610208575f5ffd5b5f82601f83011261022c575f5ffd5b81516001600160401b03811115610245576102456101b5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610273576102736101b5565b60405281815283820160200185101561028a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102b6575f5ffd5b604051606081016001600160401b03811182821017156102d8576102d86101b5565b604052825190915081906001600160401b038111156102f5575f5ffd5b6103018582860161021d565b82525060208301516001600160401b0381111561031c575f5ffd5b6103288582860161021d565b60208301525060408301516001600160401b03811115610346575f5ffd5b6103528582860161021d565b6040830152505092915050565b5f6020828403121561036f575f5ffd5b81516001600160401b03811115610384575f5ffd5b82016101008185031215610396575f5ffd5b61039e6101c9565b81518152602080830151908201526103b8604083016101f2565b60408201526103c9606083016101f2565b60608201526103da6080830161020d565b608082015260a08201516001600160401b038111156103f7575f5ffd5b6104038682850161021d565b60a08301525060c08201516001600160401b03811115610421575f5ffd5b61042d8682850161021d565b60c08301525060e08201516001600160401b0381111561044b575f5ffd5b610457868285016102a6565b60e083015250949350505050565b600181811c9082168061047957607f821691505b60208210810361049757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b057805f5260205f20601f840160051c810160208510156104c25750805b601f840160051c820191505b818110156104e1575f81556001016104ce565b5050505050565b81516001600160401b03811115610501576105016101b5565b6105158161050f8454610465565b8461049d565b6020601f821160018114610547575f83156105305750848201515b5f19600385901b1c1916600184901b1784556104e1565b5f84815260208120601f198516915b828110156105765787850151825560209485019460019092019101610556565b508482101561059357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105af81610465565b6001821680156105c657600181146105db57610608565b60ff1983168652811515820286019350610608565b865f5260205f205f5b83811015610600578154888201526001909101906020016105e4565b505081860193505b509195945050505050565b60805160a05160c05160e05161155861064d5f395f6101cd01525f61013701525f6102b001525f818161050401526109ce01526115585ff3fe608060405234801561000f575f5ffd5b5060043610610106575f3560e01c8063392f37e91161009e57806395d89b411161006e57806395d89b4114610268578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610298578063f56a499f146102ab575f5ffd5b8063392f37e9146101ff5780633c130d901461021657806370a082311461021e5780637ecebe0014610243575f5ffd5b806318160ddd116100d957806318160ddd1461019957806323b872dd146101b3578063313ce567146101c65780633644e515146101f7575f5ffd5b806301ffc9a71461010a57806302d05d3f1461013257806306fdde0314610171578063095ea7b314610186575b5f5ffd5b61011d610118366004611148565b6102d2565b60405190151581526020015b60405180910390f35b6101597f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610129565b610179610323565b604051610129919061119d565b61011d6101943660046111ca565b6103b2565b6805345cdf77eb68f44c545b604051908152602001610129565b61011d6101c13660046111f2565b610431565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610129565b6101a5610501565b6102076105a3565b6040516101299392919061122c565b61017961074b565b6101a561022c36600461126e565b6387a211a2600c9081525f91909152602090205490565b6101a561025136600461126e565b6338377508600c9081525f91909152602090205490565b610179610916565b61011d61027e3660046111ca565b610925565b610296610291366004611287565b61099c565b005b6101a56102a63660046112f4565b610b76565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b031982166301ffc9a760e01b148061030257506001600160e01b031982166336372b0760e01b145b8061031d57506001600160e01b03198216634ec7fbed60e11b145b92915050565b60605f805461033190611325565b80601f016020809104026020016040519081016040528092919081815260200182805461035d90611325565b80156103a85780601f1061037f576101008083540402835291602001916103a8565b820191905f5260205f20905b81548152906001019060200180831161038b57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba318821915176103e357633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146104865733602052637f5e9f208117600c526034600c208054801915610483578085111561047d576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156104ac5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000008061053a57610530610323565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b6002805481906105b290611325565b80601f01602080910402602001604051908101604052809291908181526020018280546105de90611325565b80156106295780601f1061060057610100808354040283529160200191610629565b820191905f5260205f20905b81548152906001019060200180831161060c57829003601f168201915b50505050509080600101805461063e90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461066a90611325565b80156106b55780601f1061068c576101008083540402835291602001916106b5565b820191905f5260205f20905b81548152906001019060200180831161069857829003601f168201915b5050505050908060020180546106ca90611325565b80601f01602080910402602001604051908101604052809291908181526020018280546106f690611325565b80156107415780601f1061071857610100808354040283529160200191610741565b820191905f5260205f20905b81548152906001019060200180831161072457829003601f168201915b5050505050905083565b606061091160026040518060600160405290815f8201805461076c90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461079890611325565b80156107e35780601f106107ba576101008083540402835291602001916107e3565b820191905f5260205f20905b8154815290600101906020018083116107c657829003601f168201915b505050505081526020016001820180546107fc90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461082890611325565b80156108735780601f1061084a57610100808354040283529160200191610873565b820191905f5260205f20905b81548152906001019060200180831161085657829003601f168201915b5050505050815260200160028201805461088c90611325565b80601f01602080910402602001604051908101604052809291908181526020018280546108b890611325565b80156109035780601f106108da57610100808354040283529160200191610903565b820191905f5260205f20905b8154815290600101906020018083116108e657829003601f168201915b505050505081525050610bba565b905090565b60606001805461033190611325565b5f6387a211a2600c52335f526020600c2080548084111561094d5763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba318851915176109cc57633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610a04576109fa610323565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610a3a57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610b225763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610b9f57505f1961031d565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610bcd610bc883610bf3565b610d55565b604051602001610bdd9190611374565b6040516020818303038152906040529050919050565b60605f604051602001610c0d90607b60f81b815260010190565b60408051601f198184030181529190528351519091505f9015610c5e5781610c37855f0151610d7b565b604051602001610c489291906113a5565b6040516020818303038152906040529150600190505b60208401515115610cc7578015610c925781604051602001610c8091906113e5565b60405160208183030381529060405291505b81610ca08560200151610d7b565b604051602001610cb1929190611402565b6040516020818303038152906040529150600190505b60408401515115610d2c578015610cfb5781604051602001610ce991906113e5565b60405160208183030381529060405291505b81610d098560400151610d7b565b604051602001610d1a92919061142b565b60405160208183030381529060405291505b81604051602001610d3d9190611452565b60405160208183030381529060405292505050919050565b606061031d8260405180606001604052806040815260200161150c604091396001610fcd565b805160609082905f90610d8f906002611482565b67ffffffffffffffff811115610da757610da7611499565b6040519080825280601f01601f191660200182016040528015610dd1576020820181803683370190505b5090505f805b8351811015610fb6575f610dee8583016020015190565b90506b100000000000000400003700600160f883901c1b1615610f7857601760fa1b8484610e1b816114ad565b955081518110610e2d57610e2d6114c5565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b03610e9557603160f91b8484610e68816114ad565b955081518110610e7a57610e7a6114c5565b60200101906001600160f81b03191690815f1a905350610fad565b6001600160f81b03198116600960f81b03610eba57601d60fa1b8484610e68816114ad565b6001600160f81b03198116600560f91b03610edf57603760f91b8484610e68816114ad565b6001600160f81b03198116600360fa1b03610f0457603360f91b8484610e68816114ad565b6001600160f81b03198116600d60f81b03610f2957603960f91b8484610e68816114ad565b6001600160f81b03198116601760fa1b03610f4e57601760fa1b8484610e68816114ad565b6001600160f81b03198116601160f91b03610f7357601160f91b8484610e68816114ad565b610fad565b808484610f84816114ad565b955081518110610f9657610f966114c5565b60200101906001600160f81b03191690815f1a9053505b50600101610dd7565b50808252603f01601f191681016040529392505050565b606083515f03610feb575060408051602081019091525f81526104fa565b5f8261101b576003855160046110019190611482565b61100c9060026114d9565b61101691906114ec565b611040565b60038551600261102b91906114d9565b61103591906114ec565b611040906004611482565b90505f8167ffffffffffffffff81111561105c5761105c611499565b6040519080825280601f01601f191660200182016040528015611086576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156110fb576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506110a0565b90525050851561113c5760038851066001811461111f57600281146111325761113a565b603d6001830353603d600283035361113a565b603d60018303535b505b50909695505050505050565b5f60208284031215611158575f5ffd5b81356001600160e01b0319811681146104fa575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6104fa602083018461116f565b80356001600160a01b03811681146111c5575f5ffd5b919050565b5f5f604083850312156111db575f5ffd5b6111e4836111af565b946020939093013593505050565b5f5f5f60608486031215611204575f5ffd5b61120d846111af565b925061121b602085016111af565b929592945050506040919091013590565b606081525f61123e606083018661116f565b8281036020840152611250818661116f565b90508281036040840152611264818561116f565b9695505050505050565b5f6020828403121561127e575f5ffd5b6104fa826111af565b5f5f5f5f5f5f5f60e0888a03121561129d575f5ffd5b6112a6886111af565b96506112b4602089016111af565b95506040880135945060608801359350608088013560ff811681146112d7575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611305575f5ffd5b61130e836111af565b915061131c602084016111af565b90509250929050565b600181811c9082168061133957607f821691505b60208210810361135757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6104fa601d83018461135d565b5f6113b0828561135d565b6e113232b9b1b934b83a34b7b7111d1160891b81526113d2600f82018561135d565b601160f91b815260010195945050505050565b5f6113f0828461135d565b61016160f51b81526002019392505050565b5f61140d828561135d565b6a113bb2b139b4ba32911d1160a91b81526113d2600b82018561135d565b5f611436828561135d565b681134b6b0b3b2911d1160b91b81526113d2600982018561135d565b5f61145d828461135d565b607d60f81b81526001019392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761031d5761031d61146e565b634e487b7160e01b5f52604160045260245ffd5b5f600182016114be576114be61146e565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561031d5761031d61146e565b5f8261150657634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", - "nonce": "0xf", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506131a28061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063a255e0ad14610043578063a5ea11da14610080578063f752070e14610095575b5f5ffd5b610056610051366004610ab2565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100886103f9565b6040516100779190610c13565b6100566100a3366004610d15565b610755565b5f806100b684860186610da1565b905073ffffffffffffffffffffffffffffffffffffffff8616610105576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b865f0361013e576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051610100810182528881526020810185905273ffffffffffffffffffffffffffffffffffffffff8816918101829052336060820181905260ff8b166080830181905260a083018e905260c083018d905260e083018590525f8b81556001889055600280547fffffffffffffffffffffffff000000000000000000000000000000000000000016909517909455600380547fffffffffffffffffffffff000000000000000000000000000000000000000000167fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217740100000000000000000000000000000000000000009091021790559060046102448d82610f00565b5060c082015160058201906102599082610f00565b5060e08201518051600683019081906102729082610f00565b50602082015160018201906102879082610f00565b506040820151600282019061029c9082610f00565b5050509050505f8a8a8a33876040516020016102bc959493929190611017565b604051602081830303815290604052805190602001209050806040516102e190610847565b8190604051809103905ff59050801580156102fe573d5f5f3e3d5ffd5b505f8080556001819055600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600380547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590935080610367600482610854565b610374600583015f610854565b600682015f6103838282610854565b610390600183015f610854565b61039d600283015f610854565b505060405173ffffffffffffffffffffffffffffffffffffffff861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505098975050505050505050565b61040161088e565b60408051610100810182525f80548252600154602083015260025473ffffffffffffffffffffffffffffffffffffffff9081169383019390935260035492831660608301527401000000000000000000000000000000000000000090920460ff1660808201526004805491929160a08401919061047d90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990610e63565b80156104f45780601f106104cb576101008083540402835291602001916104f4565b820191905f5260205f20905b8154815290600101906020018083116104d757829003601f168201915b5050505050815260200160058201805461050d90610e63565b80601f016020809104026020016040519081016040528092919081815260200182805461053990610e63565b80156105845780601f1061055b57610100808354040283529160200191610584565b820191905f5260205f20905b81548152906001019060200180831161056757829003601f168201915b50505050508152602001600682016040518060600160405290815f820180546105ac90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890610e63565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b5050505050815260200160018201805461063c90610e63565b80601f016020809104026020016040519081016040528092919081815260200182805461066890610e63565b80156106b35780601f1061068a576101008083540402835291602001916106b3565b820191905f5260205f20905b81548152906001019060200180831161069657829003601f168201915b505050505081526020016002820180546106cc90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546106f890610e63565b80156107435780601f1061071a57610100808354040283529160200191610743565b820191905f5260205f20905b81548152906001019060200180831161072657829003601f168201915b50505050508152505081525050905090565b5f5f8686868686604051602001610770959493929190611017565b6040516020818303038152906040528051906020012090505f6040518060200161079990610847565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190526107d99190602001611072565b6040516020818303038152906040528051906020012090506107fc828230610808565b98975050505050505050565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b61210d8061108983390190565b50805461086090610e63565b5f825580601f1061086f575050565b601f0160209004905f5260205f209081019061088b919061091e565b50565b6040518061010001604052805f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff168152602001606081526020016060815260200161091960405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610932575f815560010161091f565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561098657610986610936565b60405290565b5f82601f83011261099b575f5ffd5b813567ffffffffffffffff8111156109b5576109b5610936565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610a0257610a02610936565b604052818152838201602001851015610a19575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610a45575f5ffd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a45575f5ffd5b5f5f83601f840112610a7d575f5ffd5b50813567ffffffffffffffff811115610a94575f5ffd5b602083019150836020828501011115610aab575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610ac9575f5ffd5b883567ffffffffffffffff811115610adf575f5ffd5b610aeb8b828c0161098c565b985050602089013567ffffffffffffffff811115610b07575f5ffd5b610b138b828c0161098c565b975050610b2260408a01610a35565b955060608901359450610b3760808a01610a4a565b935060a089013567ffffffffffffffff811115610b52575f5ffd5b610b5e8b828c01610a6d565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610bd76060850182610b77565b905060208301518482036020860152610bf08282610b77565b91505060408301518482036040860152610c0a8282610b77565b95945050505050565b6020815281516020820152602082015160408201525f6040830151610c50606084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015173ffffffffffffffffffffffffffffffffffffffff8116608084015250608083015160ff811660a08401525060a083015161010060c0840152610c9d610120840182610b77565b905060c08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160e0850152610cd88282610b77565b91505060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610c0a8282610bc3565b5f5f5f5f5f60a08688031215610d29575f5ffd5b853567ffffffffffffffff811115610d3f575f5ffd5b610d4b8882890161098c565b955050602086013567ffffffffffffffff811115610d67575f5ffd5b610d738882890161098c565b945050610d8260408701610a35565b9250610d9060608701610a4a565b949793965091946080013592915050565b5f60208284031215610db1575f5ffd5b813567ffffffffffffffff811115610dc7575f5ffd5b820160608185031215610dd8575f5ffd5b610de0610963565b813567ffffffffffffffff811115610df6575f5ffd5b610e028682850161098c565b825250602082013567ffffffffffffffff811115610e1e575f5ffd5b610e2a8682850161098c565b602083015250604082013567ffffffffffffffff811115610e49575f5ffd5b610e558682850161098c565b604083015250949350505050565b600181811c90821680610e7757607f821691505b602082108103610eae577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610efb57805f5260205f20601f840160051c81016020851015610ed95750805b601f840160051c820191505b81811015610ef8575f8155600101610ee5565b50505b505050565b815167ffffffffffffffff811115610f1a57610f1a610936565b610f2e81610f288454610e63565b84610eb4565b6020601f821160018114610f7f575f8315610f495750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ef8565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015610fcc5787850151825560209485019460019092019101610fac565b508482101561100857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f61102960a0830188610b77565b828103602084015261103b8188610b77565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b5f82518060208501845e5f92019182525091905056fe610100604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610074919081019061035f565b90508060a001515f908161008891906104e8565b505f60405161009791906105a2565b60405190819003902060805260c08101516001906100b590826104e8565b50608081015160ff1660e090815260608201516001600160a01b031660c052602082015160a052810151805160029081906100f090826104e8565b506020820151600182019061010590826104e8565b506040820151600282019061011a90826104e8565b5050506040810151815161012e9190610134565b50610613565b6805345cdf77eb68f44c54818101818110156101575763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156101ec576101ec6101b5565b60405290565b80516001600160a01b0381168114610208575f5ffd5b919050565b805160ff81168114610208575f5ffd5b5f82601f83011261022c575f5ffd5b81516001600160401b03811115610245576102456101b5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610273576102736101b5565b60405281815283820160200185101561028a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102b6575f5ffd5b604051606081016001600160401b03811182821017156102d8576102d86101b5565b604052825190915081906001600160401b038111156102f5575f5ffd5b6103018582860161021d565b82525060208301516001600160401b0381111561031c575f5ffd5b6103288582860161021d565b60208301525060408301516001600160401b03811115610346575f5ffd5b6103528582860161021d565b6040830152505092915050565b5f6020828403121561036f575f5ffd5b81516001600160401b03811115610384575f5ffd5b82016101008185031215610396575f5ffd5b61039e6101c9565b81518152602080830151908201526103b8604083016101f2565b60408201526103c9606083016101f2565b60608201526103da6080830161020d565b608082015260a08201516001600160401b038111156103f7575f5ffd5b6104038682850161021d565b60a08301525060c08201516001600160401b03811115610421575f5ffd5b61042d8682850161021d565b60c08301525060e08201516001600160401b0381111561044b575f5ffd5b610457868285016102a6565b60e083015250949350505050565b600181811c9082168061047957607f821691505b60208210810361049757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b057805f5260205f20601f840160051c810160208510156104c25750805b601f840160051c820191505b818110156104e1575f81556001016104ce565b5050505050565b81516001600160401b03811115610501576105016101b5565b6105158161050f8454610465565b8461049d565b6020601f821160018114610547575f83156105305750848201515b5f19600385901b1c1916600184901b1784556104e1565b5f84815260208120601f198516915b828110156105765787850151825560209485019460019092019101610556565b508482101561059357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105af81610465565b6001821680156105c657600181146105db57610608565b60ff1983168652811515820286019350610608565b865f5260205f205f5b83811015610600578154888201526001909101906020016105e4565b505081860193505b509195945050505050565b60805160a05160c05160e051611ac061064d5f395f6101e901525f61014601525f6102cc01525f81816105c00152610a970152611ac05ff3fe608060405234801561000f575f5ffd5b5060043610610115575f3560e01c8063392f37e9116100ad57806395d89b411161007d578063d505accf11610063578063d505accf1461029f578063dd62ed3e146102b4578063f56a499f146102c7575f5ffd5b806395d89b4114610284578063a9059cbb1461028c575f5ffd5b8063392f37e91461021b5780633c130d901461023257806370a082311461023a5780637ecebe001461025f575f5ffd5b806318160ddd116100e857806318160ddd146101b557806323b872dd146101cf578063313ce567146101e25780633644e51514610213575f5ffd5b806301ffc9a71461011957806302d05d3f1461014157806306fdde031461018d578063095ea7b3146101a2575b5f5ffd5b61012c61012736600461154a565b6102ee565b60405190151581526020015b60405180910390f35b6101687f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610138565b6101956103d2565b60405161013891906115d5565b61012c6101b036600461160f565b610461565b6805345cdf77eb68f44c545b604051908152602001610138565b61012c6101dd366004611637565b6104ed565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610138565b6101c16105bd565b61022361065f565b60405161013893929190611671565b610195610807565b6101c16102483660046116b3565b6387a211a2600c9081525f91909152602090205490565b6101c161026d3660046116b3565b6338377508600c9081525f91909152602090205490565b6101956109d2565b61012c61029a36600461160f565b6109e1565b6102b26102ad3660046116cc565b610a58565b005b6101c16102c2366004611739565b610c50565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061038057507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b806103cc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b92915050565b60605f80546103e09061176a565b80601f016020809104026020016040519081016040528092919081815260200182805461040c9061176a565b80156104575780601f1061042e57610100808354040283529160200191610457565b820191905f5260205f20905b81548152906001019060200180831161043a57829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba3188219151761049f57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105425733602052637f5e9f208117600c526034600c20805480191561053f5780851115610539576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156105685763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000806105f6576105ec6103d2565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061066e9061176a565b80601f016020809104026020016040519081016040528092919081815260200182805461069a9061176a565b80156106e55780601f106106bc576101008083540402835291602001916106e5565b820191905f5260205f20905b8154815290600101906020018083116106c857829003601f168201915b5050505050908060010180546106fa9061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546107269061176a565b80156107715780601f1061074857610100808354040283529160200191610771565b820191905f5260205f20905b81548152906001019060200180831161075457829003601f168201915b5050505050908060020180546107869061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546107b29061176a565b80156107fd5780601f106107d4576101008083540402835291602001916107fd565b820191905f5260205f20905b8154815290600101906020018083116107e057829003601f168201915b5050505050905083565b60606109cd60026040518060600160405290815f820180546108289061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546108549061176a565b801561089f5780601f106108765761010080835404028352916020019161089f565b820191905f5260205f20905b81548152906001019060200180831161088257829003601f168201915b505050505081526020016001820180546108b89061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546108e49061176a565b801561092f5780601f106109065761010080835404028352916020019161092f565b820191905f5260205f20905b81548152906001019060200180831161091257829003601f168201915b505050505081526020016002820180546109489061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546109749061176a565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081525050610cd0565b905090565b6060600180546103e09061176a565b5f6387a211a2600c52335f526020600c20805480841115610a095763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610a9557633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610acd57610ac36103d2565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b0357631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610beb5763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610cb557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103cc565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610ce3610cde83610d09565b610ea5565b604051602001610cf391906117d2565b6040516020818303038152906040529050919050565b60605f604051602001610d3f907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f9015610dae5781610d87855f0151610ecb565b604051602001610d98929190611803565b6040516020818303038152906040529150600190505b60208401515115610e17578015610de25781604051602001610dd0919061186d565b60405160208183030381529060405291505b81610df08560200151610ecb565b604051602001610e019291906118a5565b6040516020818303038152906040529150600190505b60408401515115610e7c578015610e4b5781604051602001610e39919061186d565b60405160208183030381529060405291505b81610e598560400151610ecb565b604051602001610e6a9291906118e0565b60405160208183030381529060405291505b81604051602001610e8d919061191b565b60405160208183030381529060405292505050919050565b60606103cc82604051806060016040528060408152602001611a746040913960016113cf565b805160609082905f90610edf906002611980565b67ffffffffffffffff811115610ef757610ef7611997565b6040519080825280601f01601f191660200182016040528015610f21576020820181803683370190505b5090505f805b835181101561139a575f610f3e8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611344577f5c000000000000000000000000000000000000000000000000000000000000008484610f87816119c4565b955081518110610f9957610f996119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f080000000000000000000000000000000000000000000000000000000000000003611081577f6200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b95508151811061104e5761104e6119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350611391565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036110f6577f7400000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a000000000000000000000000000000000000000000000000000000000000000361116b577f6e00000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036111e0577f6600000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611255577f7200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036112ca577f5c00000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361133f577f2200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b611391565b808484611350816119c4565b955081518110611362576113626119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101610f27565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036113ed575060408051602081019091525f81526105b6565b5f8261141d576003855160046114039190611980565b61140e906002611a28565b6114189190611a3b565b611442565b60038551600261142d9190611a28565b6114379190611a3b565b611442906004611980565b90505f8167ffffffffffffffff81111561145e5761145e611997565b6040519080825280601f01601f191660200182016040528015611488576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156114fd576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506114a2565b90525050851561153e5760038851066001811461152157600281146115345761153c565b603d6001830353603d600283035361153c565b603d60018303535b505b50909695505050505050565b5f6020828403121561155a575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105b6575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6105b66020830184611589565b803573ffffffffffffffffffffffffffffffffffffffff8116811461160a575f5ffd5b919050565b5f5f60408385031215611620575f5ffd5b611629836115e7565b946020939093013593505050565b5f5f5f60608486031215611649575f5ffd5b611652846115e7565b9250611660602085016115e7565b929592945050506040919091013590565b606081525f6116836060830186611589565b82810360208401526116958186611589565b905082810360408401526116a98185611589565b9695505050505050565b5f602082840312156116c3575f5ffd5b6105b6826115e7565b5f5f5f5f5f5f5f60e0888a0312156116e2575f5ffd5b6116eb886115e7565b96506116f9602089016115e7565b95506040880135945060608801359350608088013560ff8116811461171c575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f6040838503121561174a575f5ffd5b611753836115e7565b9150611761602084016115e7565b90509250929050565b600181811c9082168061177e57607f821691505b6020821081036117b5577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6105b6601d8301846117bb565b5f61180e82856117bb565b7f226465736372697074696f6e223a220000000000000000000000000000000000815261183e600f8201856117bb565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f61187882846117bb565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f6118b082856117bb565b7f2277656273697465223a22000000000000000000000000000000000000000000815261183e600b8201856117bb565b5f6118eb82856117bb565b7f22696d616765223a220000000000000000000000000000000000000000000000815261183e60098201856117bb565b5f61192682846117bb565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176103cc576103cc611953565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119f4576119f4611953565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808201808211156103cc576103cc611953565b5f82611a6e577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0x10", "chainId": "0xaa36a7" }, "additionalContracts": [], @@ -22,25 +22,25 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0xdb480d", + "cumulativeGasUsed": "0x26b8008", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x7c103bd560a05265a970d9e40b2d0972652a179206642f0e792f67072ff72141", - "transactionIndex": "0x5b", - "blockHash": "0xbc7e72969961ba1e274cfc3d7929f1e109dc0cc3e10e8048214bfc0224d59869", - "blockNumber": "0x813d81", - "gasUsed": "0x23ff61", - "effectiveGasPrice": "0xf424a", + "transactionHash": "0xeb200999e9ca93432554b85ddad8e6f401d8e5194335b133975e1dbba4907324", + "transactionIndex": "0x15b", + "blockHash": "0x460bf1a8a9380c3179169994a4baa7025525f8d8af25bb1bb2dc735440d06bf9", + "blockNumber": "0x813fe2", + "gasUsed": "0x2a84e8", + "effectiveGasPrice": "0xf4248", "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xf3e6e8db96bd434cc633586e008a23ed1283ef62" + "contractAddress": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1748977712, + "timestamp": 1748985045, "chain": 11155111, - "commit": "86ef60f" + "commit": "8c0b627" } \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/1301/run-1748984784.json b/broadcast/Deploy-all.s.sol/1301/run-1748984784.json new file mode 100644 index 00000000..07028521 --- /dev/null +++ b/broadcast/Deploy-all.s.sol/1301/run-1748984784.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0xe659cb70b232a27ba9db789aaf52ba0cd17ca8e955558b17cd790edfc45de7ed", + "transactionType": "CREATE2", + "contractName": "UERC20SuperchainFactory", + "contractAddress": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", + "function": null, + "arguments": null, + "transaction": { + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806340c84ea014610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0xf", + "chainId": "0x515" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x340eb8", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xe659cb70b232a27ba9db789aaf52ba0cd17ca8e955558b17cd790edfc45de7ed", + "transactionIndex": "0x7", + "blockHash": "0x63a2f13a80e99a2ba80cd8848aaa9aa4ec7ee71243cafa1cf7ce36fec138ddab", + "blockNumber": "0x151b66f", + "gasUsed": "0x2f1240", + "effectiveGasPrice": "0x2faf081", + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", + "l1BaseFeeScalar": "0x7d0", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xdbba0", + "l1Fee": "0x1c51", + "l1GasPrice": "0x8", + "l1GasUsed": "0x187f5" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1748984784, + "chain": 1301, + "commit": "8c0b627" +} \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/1301/run-latest.json b/broadcast/Deploy-all.s.sol/1301/run-latest.json index fa2c6719..07028521 100644 --- a/broadcast/Deploy-all.s.sol/1301/run-latest.json +++ b/broadcast/Deploy-all.s.sol/1301/run-latest.json @@ -1,18 +1,18 @@ { "transactions": [ { - "hash": "0x50e4b98402a4086e37e2d05c9f090ee6fda3cba66822dcb29b0115148549995b", + "hash": "0xe659cb70b232a27ba9db789aaf52ba0cd17ca8e955558b17cd790edfc45de7ed", "transactionType": "CREATE2", - "contractName": null, - "contractAddress": "0x40c6d986e4d4ba38e64e22da10991105ed251996", + "contractName": "UERC20SuperchainFactory", + "contractAddress": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", "function": null, "arguments": null, "transaction": { "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "value": "0x0", - "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b50612dab8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806340c84ea014610043578063a255e0ad14610073578063a5ea11da14610086575b5f5ffd5b6100566100513660046109d0565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b610056610081366004610aac565b610133565b61008e610490565b60405161006a9190610bee565b5f5f8787878787876040516020016100b896959493929190610ca6565b6040516020818303038152906040528051906020012090505f604051806020016100e190610807565b601f1982820381018352601f9091011660408190526101039190602001610cfc565b6040516020818303038152906040528051906020012090506101268282306107d5565b9998505050505050505050565b5f80808061014386880188610d12565b9250925092508246036101d857336001600160a01b038316146101915760405160016223c24760e11b031981523360048201526001600160a01b038316602482015260440160405180910390fd5b6001600160a01b0388166101b857604051636c38382960e11b815260040160405180910390fd5b885f036101d857604051637ceabcb560e11b815260040160405180910390fd5b5f8c8c8c86868a6040516020016101f496959493929190610ca6565b6040516020818303038152906040528051906020012090508346146102425760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a6001600160a01b03168152602001846001600160a01b031681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506080820151816004015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c08201518160050190816103429190610e71565b5060e082015160068201906103579082610e71565b506101008201518051600783019081906103719082610e71565b50602082015160018201906103869082610e71565b506040820151600282019061039b9082610e71565b505050905050806040516103ae90610807565b8190604051809103905ff59050801580156103cb573d5f5f3e3d5ffd5b505f80805560018190556002819055600380546001600160a01b0319169055600480546001600160a81b031916905590955080610409600582610814565b610416600683015f610814565b600782015f6104258282610814565b610432600183015f610814565b61043f600283015f610814565b50506040516001600160a01b03881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b61049861084e565b60408051610120810182525f805482526001546020830152600254928201929092526003546001600160a01b0390811660608301526004549081166080830152600160a01b900460ff1660a08201526005805491929160c0840191906104fd90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461052990610ded565b80156105745780601f1061054b57610100808354040283529160200191610574565b820191905f5260205f20905b81548152906001019060200180831161055757829003601f168201915b5050505050815260200160068201805461058d90610ded565b80601f01602080910402602001604051908101604052809291908181526020018280546105b990610ded565b80156106045780601f106105db57610100808354040283529160200191610604565b820191905f5260205f20905b8154815290600101906020018083116105e757829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461062c90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461065890610ded565b80156106a35780601f1061067a576101008083540402835291602001916106a3565b820191905f5260205f20905b81548152906001019060200180831161068657829003601f168201915b505050505081526020016001820180546106bc90610ded565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890610ded565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b5050505050815260200160028201805461074c90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461077890610ded565b80156107c35780601f1061079a576101008083540402835291602001916107c3565b820191905f5260205f20905b8154815290600101906020018083116107a657829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611e7380610f2c83390190565b50805461082090610ded565b5f825580601f1061082f575050565b601f0160209004905f5260205f209081019061084b91906108ca565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f60ff16815260200160608152602001606081526020016108c560405180606001604052806060815260200160608152602001606081525090565b905290565b5b808211156108de575f81556001016108cb565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715610918576109186108e2565b60405290565b5f82601f83011261092d575f5ffd5b81356001600160401b03811115610946576109466108e2565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610974576109746108e2565b60405281815283820160200185101561098b575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146109b7575f5ffd5b919050565b6001600160a01b038116811461084b575f5ffd5b5f5f5f5f5f5f60c087890312156109e5575f5ffd5b86356001600160401b038111156109fa575f5ffd5b610a0689828a0161091e565b96505060208701356001600160401b03811115610a21575f5ffd5b610a2d89828a0161091e565b955050610a3c604088016109a7565b9350606087013592506080870135610a53816109bc565b9598949750929591949360a090920135925050565b5f5f83601f840112610a78575f5ffd5b5081356001600160401b03811115610a8e575f5ffd5b602083019150836020828501011115610aa5575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610ac3575f5ffd5b88356001600160401b03811115610ad8575f5ffd5b610ae48b828c0161091e565b98505060208901356001600160401b03811115610aff575f5ffd5b610b0b8b828c0161091e565b975050610b1a60408a016109a7565b9550606089013594506080890135610b31816109bc565b935060a08901356001600160401b03811115610b4b575f5ffd5b610b578b828c01610a68565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815160608452610bb26060850182610b70565b905060208301518482036020860152610bcb8282610b70565b91505060408301518482036040860152610be58282610b70565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610c2860808401826001600160a01b03169052565b5060808301516001600160a01b03811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610c68610140840182610b70565b905060e0840151601f1984830301610100850152610c868282610b70565b915050610100840151601f1984830301610120850152610be58282610b9e565b60c081525f610cb860c0830189610b70565b8281036020840152610cca8189610b70565b60ff979097166040840152505060608101939093526001600160a01b0391909116608083015260a09091015292915050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610d24575f5ffd5b833592506020840135610d36816109bc565b915060408401356001600160401b03811115610d50575f5ffd5b840160608187031215610d61575f5ffd5b610d696108f6565b81356001600160401b03811115610d7e575f5ffd5b610d8a8882850161091e565b82525060208201356001600160401b03811115610da5575f5ffd5b610db18882850161091e565b60208301525060408201356001600160401b03811115610dcf575f5ffd5b610ddb8882850161091e565b60408301525080925050509250925092565b600181811c90821680610e0157607f821691505b602082108103610e1f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610e6c57805f5260205f20601f840160051c81016020851015610e4a5750805b601f840160051c820191505b81811015610e69575f8155600101610e56565b50505b505050565b81516001600160401b03811115610e8a57610e8a6108e2565b610e9e81610e988454610ded565b84610e25565b6020601f821160018114610ed0575f8315610eb95750848201515b5f19600385901b1c1916600184901b178455610e69565b5f84815260208120601f198516915b82811015610eff5787850151825560209485019460019092019101610edf565b5084821015610f1c57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e051610100516117fb6106785f395f61030201525f61022101525f61016301525f61033701525f81816106800152610b3701526117fb5ff3fe608060405234801561000f575f5ffd5b5060043610610132575f3560e01c8063392f37e9116100b4578063a9059cbb11610079578063a9059cbb146102c4578063d505accf146102d7578063dd62ed3e146102ea578063ef126967146102fd578063ef31f2cd14610324578063f56a499f14610332575f5ffd5b8063392f37e9146102535780633c130d901461026a57806370a08231146102725780637ecebe001461029757806395d89b41146102bc575f5ffd5b806318bf5077116100fa57806318bf5077146101df57806323b872dd146101f45780632b8c49e314610207578063313ce5671461021a5780633644e5151461024b575f5ffd5b806301ffc9a71461013657806302d05d3f1461015e57806306fdde031461019d578063095ea7b3146101b257806318160ddd146101c5575b5f5ffd5b6101496101443660046113cb565b610359565b60405190151581526020015b60405180910390f35b6101857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610155565b6101a5610384565b6040516101559190611420565b6101496101c036600461144d565b610413565b6805345cdf77eb68f44c545b604051908152602001610155565b6101f26101ed36600461144d565b610492565b005b610149610202366004611475565b610543565b6101f261021536600461144d565b610600565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610155565b6101d161067d565b61025b61071f565b604051610155939291906114af565b6101a56108c7565b6101d16102803660046114f1565b6387a211a2600c9081525f91909152602090205490565b6101d16102a53660046114f1565b6338377508600c9081525f91909152602090205490565b6101a5610a92565b6101496102d236600461144d565b610aa1565b6101f26102e536600461150a565b610b05565b6101d16102f8366004611577565b610cdf565b6101d17f000000000000000000000000000000000000000000000000000000000000000081565b6101856028602160991b0181565b6101d17f000000000000000000000000000000000000000000000000000000000000000081565b5f61036382610d23565b8061037e57506001600160e01b03198216630cccc66560e21b145b92915050565b60605f8054610392906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546103be906115a8565b80156104095780601f106103e057610100808354040283529160200191610409565b820191905f5260205f20905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761044457633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b01146104cd57604051632e0d831f60e01b81523360048201526028602160991b0160248201526044015b60405180910390fd5b6001600160a01b0382166104f457604051636c38382960e11b815260040160405180910390fd5b6104fe8282610d73565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105985733602052637f5e9f208117600c526034600c208054801915610595578085111561058f576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156105be5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f5160206117cf5f395f51905f52602080a3505060015b9392505050565b336028602160991b011461063657604051632e0d831f60e01b81523360048201526028602160991b0160248201526044016104c4565b6106408282610ddc565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610537565b5f7f0000000000000000000000000000000000000000000000000000000000000000806106b6576106ac610384565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061072e906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461075a906115a8565b80156107a55780601f1061077c576101008083540402835291602001916107a5565b820191905f5260205f20905b81548152906001019060200180831161078857829003601f168201915b5050505050908060010180546107ba906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546107e6906115a8565b80156108315780601f1061080857610100808354040283529160200191610831565b820191905f5260205f20905b81548152906001019060200180831161081457829003601f168201915b505050505090806002018054610846906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610872906115a8565b80156108bd5780601f10610894576101008083540402835291602001916108bd565b820191905f5260205f20905b8154815290600101906020018083116108a057829003601f168201915b5050505050905083565b6060610a8d60026040518060600160405290815f820180546108e8906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610914906115a8565b801561095f5780601f106109365761010080835404028352916020019161095f565b820191905f5260205f20905b81548152906001019060200180831161094257829003601f168201915b50505050508152602001600182018054610978906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546109a4906115a8565b80156109ef5780601f106109c6576101008083540402835291602001916109ef565b820191905f5260205f20905b8154815290600101906020018083116109d257829003601f168201915b50505050508152602001600282018054610a08906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a34906115a8565b8015610a7f5780601f10610a5657610100808354040283529160200191610a7f565b820191905f5260205f20905b815481529060010190602001808311610a6257829003601f168201915b505050505081525050610e3d565b905090565b606060018054610392906115a8565b5f6387a211a2600c52335f526020600c20805480841115610ac95763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f5160206117cf5f395f51905f52602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba31885191517610b3557633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610b6d57610b63610384565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610ba357631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610c8b5763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610d0857505f1961037e565b50602052637f5e9f20600c9081525f91909152603490205490565b5f6001600160e01b031982166301ffc9a760e01b1480610d5357506001600160e01b031982166336372b0760e01b145b8061037e57506001600160e01b03198216634ec7fbed60e11b1492915050565b6805345cdf77eb68f44c5481810181811015610d965763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f5160206117cf5f395f51905f52602080a35050565b6387a211a2600c52815f526020600c20805480831115610e035763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f5160206117cf5f395f51905f52602083a35050565b6060610e50610e4b83610e76565b610fd8565b604051602001610e6091906115f7565b6040516020818303038152906040529050919050565b60605f604051602001610e9090607b60f81b815260010190565b60408051601f198184030181529190528351519091505f9015610ee15781610eba855f0151610ffe565b604051602001610ecb929190611628565b6040516020818303038152906040529150600190505b60208401515115610f4a578015610f155781604051602001610f039190611668565b60405160208183030381529060405291505b81610f238560200151610ffe565b604051602001610f34929190611685565b6040516020818303038152906040529150600190505b60408401515115610faf578015610f7e5781604051602001610f6c9190611668565b60405160208183030381529060405291505b81610f8c8560400151610ffe565b604051602001610f9d9291906116ae565b60405160208183030381529060405291505b81604051602001610fc091906116d5565b60405160208183030381529060405292505050919050565b606061037e8260405180606001604052806040815260200161178f604091396001611250565b805160609082905f90611012906002611705565b67ffffffffffffffff81111561102a5761102a61171c565b6040519080825280601f01601f191660200182016040528015611054576020820181803683370190505b5090505f805b8351811015611239575f6110718583016020015190565b90506b100000000000000400003700600160f883901c1b16156111fb57601760fa1b848461109e81611730565b9550815181106110b0576110b0611748565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b0361111857603160f91b84846110eb81611730565b9550815181106110fd576110fd611748565b60200101906001600160f81b03191690815f1a905350611230565b6001600160f81b03198116600960f81b0361113d57601d60fa1b84846110eb81611730565b6001600160f81b03198116600560f91b0361116257603760f91b84846110eb81611730565b6001600160f81b03198116600360fa1b0361118757603360f91b84846110eb81611730565b6001600160f81b03198116600d60f81b036111ac57603960f91b84846110eb81611730565b6001600160f81b03198116601760fa1b036111d157601760fa1b84846110eb81611730565b6001600160f81b03198116601160f91b036111f657601160f91b84846110eb81611730565b611230565b80848461120781611730565b95508151811061121957611219611748565b60200101906001600160f81b03191690815f1a9053505b5060010161105a565b50808252603f01601f191681016040529392505050565b606083515f0361126e575060408051602081019091525f81526105f9565b5f8261129e576003855160046112849190611705565b61128f90600261175c565b611299919061176f565b6112c3565b6003855160026112ae919061175c565b6112b8919061176f565b6112c3906004611705565b90505f8167ffffffffffffffff8111156112df576112df61171c565b6040519080825280601f01601f191660200182016040528015611309576020820181803683370190505b509050600185016020820187885189016020810180515f82525b8284101561137e576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450611323565b9052505085156113bf576003885106600181146113a257600281146113b5576113bd565b603d6001830353603d60028303536113bd565b603d60018303535b505b50909695505050505050565b5f602082840312156113db575f5ffd5b81356001600160e01b0319811681146105f9575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105f960208301846113f2565b80356001600160a01b0381168114611448575f5ffd5b919050565b5f5f6040838503121561145e575f5ffd5b61146783611432565b946020939093013593505050565b5f5f5f60608486031215611487575f5ffd5b61149084611432565b925061149e60208501611432565b929592945050506040919091013590565b606081525f6114c160608301866113f2565b82810360208401526114d381866113f2565b905082810360408401526114e781856113f2565b9695505050505050565b5f60208284031215611501575f5ffd5b6105f982611432565b5f5f5f5f5f5f5f60e0888a031215611520575f5ffd5b61152988611432565b965061153760208901611432565b95506040880135945060608801359350608088013560ff8116811461155a575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611588575f5ffd5b61159183611432565b915061159f60208401611432565b90509250929050565b600181811c908216806115bc57607f821691505b6020821081036115da57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6105f9601d8301846115e0565b5f61163382856115e0565b6e113232b9b1b934b83a34b7b7111d1160891b8152611655600f8201856115e0565b601160f91b815260010195945050505050565b5f61167382846115e0565b61016160f51b81526002019392505050565b5f61169082856115e0565b6a113bb2b139b4ba32911d1160a91b8152611655600b8201856115e0565b5f6116b982856115e0565b681134b6b0b3b2911d1160b91b815261165560098201856115e0565b5f6116e082846115e0565b607d60f81b81526001019392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761037e5761037e6116f1565b634e487b7160e01b5f52604160045260245ffd5b5f60018201611741576117416116f1565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561037e5761037e6116f1565b5f8261178957634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081c000aa164736f6c634300081c000a", - "nonce": "0xe", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806340c84ea014610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0xf", "chainId": "0x515" }, "additionalContracts": [], @@ -22,31 +22,31 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x2c690c", + "cumulativeGasUsed": "0x340eb8", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x50e4b98402a4086e37e2d05c9f090ee6fda3cba66822dcb29b0115148549995b", + "transactionHash": "0xe659cb70b232a27ba9db789aaf52ba0cd17ca8e955558b17cd790edfc45de7ed", "transactionIndex": "0x7", - "blockHash": "0x4b3107ff9adb20f6d09974328c962b54f15fc329bccc8676c7d5984155b994cf", - "blockNumber": "0x1519754", - "gasUsed": "0x276c94", - "effectiveGasPrice": "0x2faf080", + "blockHash": "0x63a2f13a80e99a2ba80cd8848aaa9aa4ec7ee71243cafa1cf7ce36fec138ddab", + "blockNumber": "0x151b66f", + "gasUsed": "0x2f1240", + "effectiveGasPrice": "0x2faf081", "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": null, + "contractAddress": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", "l1BaseFeeScalar": "0x7d0", "l1BlobBaseFee": "0x1", "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x2516", - "l1GasPrice": "0x15", - "l1GasUsed": "0x17979" + "l1Fee": "0x1c51", + "l1GasPrice": "0x8", + "l1GasUsed": "0x187f5" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1748976801, + "timestamp": 1748984784, "chain": 1301, - "commit": "86ef60f" + "commit": "8c0b627" } \ No newline at end of file diff --git a/deployments/11155111.md b/deployments/11155111.md index 7b9f74d0..9bac5666 100644 --- a/deployments/11155111.md +++ b/deployments/11155111.md @@ -17,6 +17,7 @@ - [Permit2](#permit2) - [U E R C20 Factory](#u-e-r-c20-factory) - [Deployment History](#deployment-history) + - [Tue Jun 03 2025](#tue-jun-03-2025) - [Tue May 20 2025](#tue-may-20-2025) - [Mon Oct 21 2024](#mon-oct-21-2024) - [Tue May 23 2023](#tue-may-23-2023) @@ -87,7 +88,7 @@ UERC20Factory - 0x58b3578be439f47e393503518b5c50fb6339237f + 0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5 N/A @@ -271,21 +272,40 @@ Fri, 25 Nov 2022 14:19:48 UTC ### U E R C20 Factory -Address: [0x58b3578be439f47e393503518b5c50fb6339237f](https://sepolia.etherscan.io/address/0x58b3578be439f47e393503518b5c50fb6339237f) +Address: [0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5](https://sepolia.etherscan.io/address/0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5) -Deployment Transaction: [0xe62cda122ca2adcf828362a33347dd80c850e79603dd17b933c83b2fb85c5650](https://sepolia.etherscan.io/tx/0xe62cda122ca2adcf828362a33347dd80c850e79603dd17b933c83b2fb85c5650) +Deployment Transaction: [0xeb200999e9ca93432554b85ddad8e6f401d8e5194335b133975e1dbba4907324](https://sepolia.etherscan.io/tx/0xeb200999e9ca93432554b85ddad8e6f401d8e5194335b133975e1dbba4907324) -Commit Hash: [5addf85](git@github.com:Uniswap/contracts/commit/5addf85) +Commit Hash: [8c0b627](git@github.com:Uniswap/contracts/commit/8c0b627) -Tue, 20 May 2025 20:48:25 UTC +Tue, 03 Jun 2025 21:10:45 UTC ## Deployment History +### Tue Jun 03 2025 + + + +Deployed contracts: + +
+ + U E R C20 Factory + + + + + +
Commit hash: 8c0b627
+
+ + + ### Tue May 20 2025 diff --git a/deployments/1301.md b/deployments/1301.md index da3229a8..384015fc 100644 --- a/deployments/1301.md +++ b/deployments/1301.md @@ -25,6 +25,7 @@ - [Universal Router](#universal-router) - [U E R C20 Superchain Factory](#u-e-r-c20-superchain-factory) - [Deployment History](#deployment-history) + - [Tue Jun 03 2025](#tue-jun-03-2025) - [Tue May 20 2025](#tue-may-20-2025) - [Wed Jan 22 2025](#wed-jan-22-2025) @@ -36,102 +37,102 @@ Version UniswapV2Factory - 0x216d3b49e8c5140d2499da346ab5335a75f655d8 + 0x216d3b49e8c5140d2499da346ab5335a75f655d8 N/A UniswapV2Router02 - 0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed + 0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed N/A UniswapV3Factory - 0x780e96775371e1c4f4cd1524a578b8f1b12ece58 + 0x780e96775371e1c4f4cd1524a578b8f1b12ece58 N/A UniswapInterfaceMulticall - 0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9 + 0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9 N/A QuoterV2 - 0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c + 0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c N/A TickLens - 0xa2705406f5f6deeff977edc4eb52617e06b9e7ff + 0xa2705406f5f6deeff977edc4eb52617e06b9e7ff N/A NFTDescriptor - 0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed + 0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed N/A NonfungiblePositionManager - 0x4801ed4f1b57559f9071413d9d99b607316fd1eb + 0x4801ed4f1b57559f9071413d9d99b607316fd1eb N/A V3Migrator - 0x9171c97d7b17278e5fce1996cd5dda682bddaf43 + 0x9171c97d7b17278e5fce1996cd5dda682bddaf43 N/A SwapRouter - 0xbeeabec0220a09048dbe86790b59510a2e1ff5d2 + 0xbeeabec0220a09048dbe86790b59510a2e1ff5d2 N/A PoolManager - 0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95 + 0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95 N/A PositionDescriptor - 0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f + 0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f N/A PositionManager - 0x12a98709bb5d0641d61458f85dcafbe17ac2d05c + 0x12a98709bb5d0641d61458f85dcafbe17ac2d05c N/A V4Quoter - 0xb2b34025a07af3925313b6b46f8046ee8ffba30b + 0xb2b34025a07af3925313b6b46f8046ee8ffba30b N/A StateView - 0x792d13207744f132943cdde4d37ec89f20ae3b0d + 0x792d13207744f132943cdde4d37ec89f20ae3b0d N/A Quoter - 0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034 + 0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034 N/A SwapRouter02 - 0xcf21367b17d22a2e2a03904ca79a5045b18231ef + 0xcf21367b17d22a2e2a03904ca79a5045b18231ef N/A FeeOnTransferDetector - 0xdfbe641684882769918f0a8da4c4c876a75c5ab1 + 0xdfbe641684882769918f0a8da4c4c876a75c5ab1 N/A UniversalRouter - 0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd + 0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd N/A UERC20SuperchainFactory - 0x43414b3556b6dfbb1278670871b11c73c22c93f3 + 0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9 N/A @@ -139,9 +140,9 @@ ### Uniswap V2 Factory -Address: 0x216d3b49e8c5140d2499da346ab5335a75f655d8 +Address: [0x216d3b49e8c5140d2499da346ab5335a75f655d8](https://sepolia.uniscan.xyz/address/0x216d3b49e8c5140d2499da346ab5335a75f655d8) -Deployment Transaction: 0xf5f1e527c5ecd1701a79367f003162686402f0e05b0667a99d733ec184740118 +Deployment Transaction: [0xf5f1e527c5ecd1701a79367f003162686402f0e05b0667a99d733ec184740118](https://sepolia.uniscan.xyz/tx/0xf5f1e527c5ecd1701a79367f003162686402f0e05b0667a99d733ec184740118) @@ -155,9 +156,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Uniswap V2 Router02 -Address: 0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed +Address: [0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed](https://sepolia.uniscan.xyz/address/0xd24d4e867fda1238b5fa035fa8ab731d41c4a3ed) -Deployment Transaction: 0x41283e07dd1b8bdf71e42dbeddb46ae5c99f527a025b6a532e5fc11d6b37713a +Deployment Transaction: [0x41283e07dd1b8bdf71e42dbeddb46ae5c99f527a025b6a532e5fc11d6b37713a](https://sepolia.uniscan.xyz/tx/0x41283e07dd1b8bdf71e42dbeddb46ae5c99f527a025b6a532e5fc11d6b37713a) @@ -171,9 +172,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Uniswap V3 Factory -Address: 0x780e96775371e1c4f4cd1524a578b8f1b12ece58 +Address: [0x780e96775371e1c4f4cd1524a578b8f1b12ece58](https://sepolia.uniscan.xyz/address/0x780e96775371e1c4f4cd1524a578b8f1b12ece58) -Deployment Transaction: 0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083 +Deployment Transaction: [0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083](https://sepolia.uniscan.xyz/tx/0x8d9c3a854134c8c038e84fd749fe531da52f9c65073e632b5b9ea62fab604083) @@ -187,9 +188,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Uniswap Interface Multicall -Address: 0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9 +Address: [0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9](https://sepolia.uniscan.xyz/address/0xa72e4f582f7c3e2232a9f23a41e53c13d1a647a9) -Deployment Transaction: 0xdbba5f58a37aef8302e125c1efd65e1b9df6af1c595709d52a946fc5273b299a +Deployment Transaction: [0xdbba5f58a37aef8302e125c1efd65e1b9df6af1c595709d52a946fc5273b299a](https://sepolia.uniscan.xyz/tx/0xdbba5f58a37aef8302e125c1efd65e1b9df6af1c595709d52a946fc5273b299a) @@ -203,9 +204,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Quoter V2 -Address: 0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c +Address: [0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c](https://sepolia.uniscan.xyz/address/0xbc02cbe6e4e29b504b67b0187a0178e13871fa3c) -Deployment Transaction: 0x42feb903896a21a0a834bc7c93d8ce84536d215d20700bf251e3945d2f9c18cc +Deployment Transaction: [0x42feb903896a21a0a834bc7c93d8ce84536d215d20700bf251e3945d2f9c18cc](https://sepolia.uniscan.xyz/tx/0x42feb903896a21a0a834bc7c93d8ce84536d215d20700bf251e3945d2f9c18cc) @@ -219,9 +220,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Tick Lens -Address: 0xa2705406f5f6deeff977edc4eb52617e06b9e7ff +Address: [0xa2705406f5f6deeff977edc4eb52617e06b9e7ff](https://sepolia.uniscan.xyz/address/0xa2705406f5f6deeff977edc4eb52617e06b9e7ff) -Deployment Transaction: 0x292818c36fae4db0af323455839cc579f71ffd348a9ecfe5ce00a68cc5bdf6fe +Deployment Transaction: [0x292818c36fae4db0af323455839cc579f71ffd348a9ecfe5ce00a68cc5bdf6fe](https://sepolia.uniscan.xyz/tx/0x292818c36fae4db0af323455839cc579f71ffd348a9ecfe5ce00a68cc5bdf6fe) @@ -235,9 +236,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### N F T Descriptor -Address: 0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed +Address: [0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed](https://sepolia.uniscan.xyz/address/0x2e9d45bb7b30549f5216813ada9a6b7982c5b3ed) -Deployment Transaction: 0x4c6469b634c0bf639d5378f34b3921036ebfc8325b2f7ea72035b989baa645c4 +Deployment Transaction: [0x4c6469b634c0bf639d5378f34b3921036ebfc8325b2f7ea72035b989baa645c4](https://sepolia.uniscan.xyz/tx/0x4c6469b634c0bf639d5378f34b3921036ebfc8325b2f7ea72035b989baa645c4) @@ -251,9 +252,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Nonfungible Position Manager -Address: 0x4801ed4f1b57559f9071413d9d99b607316fd1eb +Address: [0x4801ed4f1b57559f9071413d9d99b607316fd1eb](https://sepolia.uniscan.xyz/address/0x4801ed4f1b57559f9071413d9d99b607316fd1eb) -Deployment Transaction: 0x1e18ec55902dcaac896d262b31ccf5658967e02f723034a9547bd1cbdd9e9546 +Deployment Transaction: [0x1e18ec55902dcaac896d262b31ccf5658967e02f723034a9547bd1cbdd9e9546](https://sepolia.uniscan.xyz/tx/0x1e18ec55902dcaac896d262b31ccf5658967e02f723034a9547bd1cbdd9e9546) @@ -267,9 +268,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### V3 Migrator -Address: 0x9171c97d7b17278e5fce1996cd5dda682bddaf43 +Address: [0x9171c97d7b17278e5fce1996cd5dda682bddaf43](https://sepolia.uniscan.xyz/address/0x9171c97d7b17278e5fce1996cd5dda682bddaf43) -Deployment Transaction: 0x4602ffd6b2503ef1d402059c90840b6180f82c63e621ad84783d2dcfbb4b570f +Deployment Transaction: [0x4602ffd6b2503ef1d402059c90840b6180f82c63e621ad84783d2dcfbb4b570f](https://sepolia.uniscan.xyz/tx/0x4602ffd6b2503ef1d402059c90840b6180f82c63e621ad84783d2dcfbb4b570f) @@ -283,9 +284,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Swap Router -Address: 0xbeeabec0220a09048dbe86790b59510a2e1ff5d2 +Address: [0xbeeabec0220a09048dbe86790b59510a2e1ff5d2](https://sepolia.uniscan.xyz/address/0xbeeabec0220a09048dbe86790b59510a2e1ff5d2) -Deployment Transaction: 0x7c1be94d3a1c61ed3cdd80b420b88cab0913daff6385b12971d068735530cb91 +Deployment Transaction: [0x7c1be94d3a1c61ed3cdd80b420b88cab0913daff6385b12971d068735530cb91](https://sepolia.uniscan.xyz/tx/0x7c1be94d3a1c61ed3cdd80b420b88cab0913daff6385b12971d068735530cb91) @@ -299,9 +300,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Pool Manager -Address: 0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95 +Address: [0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95](https://sepolia.uniscan.xyz/address/0x9cb26a7183b2f4515945dc52cb4195b0d2d06c95) -Deployment Transaction: 0x80dc9fcf2bf641b132aa848faf58fa1b2ae325bbe52ce49b2b339d8eaf35f392 +Deployment Transaction: [0x80dc9fcf2bf641b132aa848faf58fa1b2ae325bbe52ce49b2b339d8eaf35f392](https://sepolia.uniscan.xyz/tx/0x80dc9fcf2bf641b132aa848faf58fa1b2ae325bbe52ce49b2b339d8eaf35f392) @@ -315,9 +316,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Position Descriptor -Address: 0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f +Address: [0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f](https://sepolia.uniscan.xyz/address/0xc4fe8f6cc445fb3f8921cee75830f248a1d1da2f) -Deployment Transaction: 0x8e2dea22951b012a77ebd82b3dac1c95db7f1686ebf3c13bd68fe08448bd7bb8 +Deployment Transaction: [0x8e2dea22951b012a77ebd82b3dac1c95db7f1686ebf3c13bd68fe08448bd7bb8](https://sepolia.uniscan.xyz/tx/0x8e2dea22951b012a77ebd82b3dac1c95db7f1686ebf3c13bd68fe08448bd7bb8) @@ -335,7 +336,7 @@ Proxy Type: TransparentUpgradeableProxy -Implementation: 0x06e356052ae91916fc95a1e65544d0ed60a49632 +Implementation: [0x06e356052ae91916fc95a1e65544d0ed60a49632](https://sepolia.uniscan.xyz/address/0x06e356052ae91916fc95a1e65544d0ed60a49632) @@ -349,7 +350,7 @@ Implementation: 0x06e356052ae91916fc95a1e65544d0ed60a49632 N/A - 0x06e356052ae91916fc95a1e65544d0ed60a49632 + 0x06e356052ae91916fc95a1e65544d0ed60a49632 77d52a7 @@ -360,9 +361,9 @@ Implementation: 0x06e356052ae91916fc95a1e65544d0ed60a49632 ### Position Manager -Address: 0x12a98709bb5d0641d61458f85dcafbe17ac2d05c +Address: [0x12a98709bb5d0641d61458f85dcafbe17ac2d05c](https://sepolia.uniscan.xyz/address/0x12a98709bb5d0641d61458f85dcafbe17ac2d05c) -Deployment Transaction: 0x12e8bb585f23cc0eccf248918c93f2c4acc771f993db4c0a850c744dad5509fa +Deployment Transaction: [0x12e8bb585f23cc0eccf248918c93f2c4acc771f993db4c0a850c744dad5509fa](https://sepolia.uniscan.xyz/tx/0x12e8bb585f23cc0eccf248918c93f2c4acc771f993db4c0a850c744dad5509fa) @@ -376,9 +377,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### V4 Quoter -Address: 0xb2b34025a07af3925313b6b46f8046ee8ffba30b +Address: [0xb2b34025a07af3925313b6b46f8046ee8ffba30b](https://sepolia.uniscan.xyz/address/0xb2b34025a07af3925313b6b46f8046ee8ffba30b) -Deployment Transaction: 0x78146adcc717333a2b38865e840ecf2b984dfb8a7f22f8d16764c52b7416a446 +Deployment Transaction: [0x78146adcc717333a2b38865e840ecf2b984dfb8a7f22f8d16764c52b7416a446](https://sepolia.uniscan.xyz/tx/0x78146adcc717333a2b38865e840ecf2b984dfb8a7f22f8d16764c52b7416a446) @@ -392,9 +393,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### State View -Address: 0x792d13207744f132943cdde4d37ec89f20ae3b0d +Address: [0x792d13207744f132943cdde4d37ec89f20ae3b0d](https://sepolia.uniscan.xyz/address/0x792d13207744f132943cdde4d37ec89f20ae3b0d) -Deployment Transaction: 0x0a50102128ad120a0d1b87e3aee576bf0de2133f1d7c2bf548bcb6a301103945 +Deployment Transaction: [0x0a50102128ad120a0d1b87e3aee576bf0de2133f1d7c2bf548bcb6a301103945](https://sepolia.uniscan.xyz/tx/0x0a50102128ad120a0d1b87e3aee576bf0de2133f1d7c2bf548bcb6a301103945) @@ -408,9 +409,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Quoter -Address: 0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034 +Address: [0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034](https://sepolia.uniscan.xyz/address/0x81efdb2af4fb1a556c33a5dd4ecfeedb970fc034) -Deployment Transaction: 0xc86ecedaedffade8c5d352f87c5204ff9763f1254f0c609ff7eaae88021a6eb1 +Deployment Transaction: [0xc86ecedaedffade8c5d352f87c5204ff9763f1254f0c609ff7eaae88021a6eb1](https://sepolia.uniscan.xyz/tx/0xc86ecedaedffade8c5d352f87c5204ff9763f1254f0c609ff7eaae88021a6eb1) @@ -424,9 +425,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Swap Router02 -Address: 0xcf21367b17d22a2e2a03904ca79a5045b18231ef +Address: [0xcf21367b17d22a2e2a03904ca79a5045b18231ef](https://sepolia.uniscan.xyz/address/0xcf21367b17d22a2e2a03904ca79a5045b18231ef) -Deployment Transaction: 0x28fd60fdb37a0e822cc70d2b4835d3e3146830a364d6cb9f4eea48cab2c3ff41 +Deployment Transaction: [0x28fd60fdb37a0e822cc70d2b4835d3e3146830a364d6cb9f4eea48cab2c3ff41](https://sepolia.uniscan.xyz/tx/0x28fd60fdb37a0e822cc70d2b4835d3e3146830a364d6cb9f4eea48cab2c3ff41) @@ -440,9 +441,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Fee On Transfer Detector -Address: 0xdfbe641684882769918f0a8da4c4c876a75c5ab1 +Address: [0xdfbe641684882769918f0a8da4c4c876a75c5ab1](https://sepolia.uniscan.xyz/address/0xdfbe641684882769918f0a8da4c4c876a75c5ab1) -Deployment Transaction: 0xa351d11889e366fa8246704cb0f1dba494aa4a8396d49229c2ba588f9123bb51 +Deployment Transaction: [0xa351d11889e366fa8246704cb0f1dba494aa4a8396d49229c2ba588f9123bb51](https://sepolia.uniscan.xyz/tx/0xa351d11889e366fa8246704cb0f1dba494aa4a8396d49229c2ba588f9123bb51) @@ -456,9 +457,9 @@ Wed, 22 Jan 2025 20:44:18 UTC ### Universal Router -Address: 0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd +Address: [0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd](https://sepolia.uniscan.xyz/address/0xe7cea85aa4bf60fb54c1b70004e4f8414b3708fd) -Deployment Transaction: 0x0c1eb8a3d340b717b178201453170a611ddae1c348a84115bac3148bec5a83f2 +Deployment Transaction: [0x0c1eb8a3d340b717b178201453170a611ddae1c348a84115bac3148bec5a83f2](https://sepolia.uniscan.xyz/tx/0x0c1eb8a3d340b717b178201453170a611ddae1c348a84115bac3148bec5a83f2) @@ -472,21 +473,40 @@ Wed, 22 Jan 2025 20:44:18 UTC ### U E R C20 Superchain Factory -Address: 0x43414b3556b6dfbb1278670871b11c73c22c93f3 +Address: [0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9](https://sepolia.uniscan.xyz/address/0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9) -Deployment Transaction: 0x170028b613a6daf839e60de54b8dcc7e230909a6eed67d3e444324ec063c3d6a +Deployment Transaction: [0xe659cb70b232a27ba9db789aaf52ba0cd17ca8e955558b17cd790edfc45de7ed](https://sepolia.uniscan.xyz/tx/0xe659cb70b232a27ba9db789aaf52ba0cd17ca8e955558b17cd790edfc45de7ed) -Commit Hash: [5addf85](git@github.com:Uniswap/contracts/commit/5addf85) +Commit Hash: [8c0b627](git@github.com:Uniswap/contracts/commit/8c0b627) -Tue, 20 May 2025 20:43:52 UTC +Tue, 03 Jun 2025 21:06:24 UTC ## Deployment History +### Tue Jun 03 2025 + + + +Deployed contracts: + +
+ + U E R C20 Superchain Factory + + + + + +
Commit hash: 8c0b627
+
+ + + ### Tue May 20 2025 @@ -495,7 +515,7 @@ Deployed contracts:
- U E R C20 Superchain Factory + U E R C20 Superchain Factory @@ -514,7 +534,7 @@ Deployed contracts:
- Uniswap V2 Factory + Uniswap V2 Factory
@@ -526,13 +546,13 @@ Deployed contracts: - +
_feeToSetter0x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A040x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A04
- Uniswap V2 Router02 + Uniswap V2 Router02 @@ -544,17 +564,17 @@ Deployed contracts: - + - +
_factory0x216d3b49e8c5140D2499dA346AB5335A75f655d80x216d3b49e8c5140D2499dA346AB5335A75f655d8
_WETH0x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- Uniswap V3 Factory + Uniswap V3 Factory @@ -564,7 +584,7 @@ Deployed contracts:
- Uniswap Interface Multicall + Uniswap Interface Multicall
@@ -574,7 +594,7 @@ Deployed contracts:
- Quoter V2 + Quoter V2
@@ -586,17 +606,17 @@ Deployed contracts: - + - +
_factory0x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- Tick Lens + Tick Lens @@ -606,7 +626,7 @@ Deployed contracts:
- N F T Descriptor + N F T Descriptor
@@ -616,7 +636,7 @@ Deployed contracts:
- Nonfungible Position Manager + Nonfungible Position Manager
@@ -628,21 +648,21 @@ Deployed contracts: - + - + - +
_factory0x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
_tokenDescriptor_0x1872C8F792BB8321f9eF2F531e98e53572d3f2930x1872C8F792BB8321f9eF2F531e98e53572d3f293
- V3 Migrator + V3 Migrator @@ -654,21 +674,21 @@ Deployed contracts: - + - + - +
_factory0x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
_nonfungiblePositionManager0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb
- Swap Router + Swap Router @@ -680,17 +700,17 @@ Deployed contracts: - + - +
_factory0x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- Pool Manager + Pool Manager @@ -702,13 +722,13 @@ Deployed contracts: - +
initialOwner0x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A040x07D68837A1940cF2749FF0B3E6aBEd23Ac6F9A04
- Position Descriptor (Implementation) + Position Descriptor (Implementation) @@ -720,21 +740,21 @@ Deployed contracts: - + - + - +
_poolManager0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C950x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95
_wrappedNative0x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
_nativeCurrencyLabelBytes0x45544800000000000000000000000000000000000000000000000000000000000x4554480000000000000000000000000000000000000000000000000000000000
- Position Manager + Position Manager @@ -746,11 +766,11 @@ Deployed contracts: - + - + @@ -758,17 +778,17 @@ Deployed contracts: - + - +
_poolManager0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C950x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95
_permit20x000000000022D473030F116dDEE9F6B43aC78BA30x000000000022D473030F116dDEE9F6B43aC78BA3
_unsubscribeGasLimit
_tokenDescriptor0xC4Fe8f6cC445fB3F8921cEe75830F248a1D1da2F0xC4Fe8f6cC445fB3F8921cEe75830F248a1D1da2F
_weth90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- V4 Quoter + V4 Quoter @@ -780,13 +800,13 @@ Deployed contracts: - +
_poolManager0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C950x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95
- State View + State View @@ -798,13 +818,13 @@ Deployed contracts: - +
_poolManager0x9cB26A7183B2F4515945Dc52CB4195B0d2D06C950x9cB26A7183B2F4515945Dc52CB4195B0d2D06C95
- Quoter + Quoter @@ -816,13 +836,13 @@ Deployed contracts: - +
_factory0x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
- Swap Router02 + Swap Router02 @@ -834,25 +854,25 @@ Deployed contracts: - + - + - + - +
_factoryV20x216d3b49e8c5140D2499dA346AB5335A75f655d80x216d3b49e8c5140D2499dA346AB5335A75f655d8
factoryV30x780E96775371e1C4F4cD1524a578B8f1b12ECE580x780E96775371e1C4F4cD1524a578B8f1b12ECE58
_positionManager0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb0x4801Ed4f1b57559F9071413d9D99b607316Fd1Eb
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- Fee On Transfer Detector + Fee On Transfer Detector @@ -864,13 +884,13 @@ Deployed contracts: - +
_factoryV20x216d3b49e8c5140D2499dA346AB5335A75f655d80x216d3b49e8c5140D2499dA346AB5335A75f655d8
- Universal Router + Universal Router diff --git a/deployments/json/11155111.json b/deployments/json/11155111.json index 009923ba..ab35902e 100644 --- a/deployments/json/11155111.json +++ b/deployments/json/11155111.json @@ -68,14 +68,28 @@ "timestamp": 1669385988 }, "UERC20Factory": { - "address": "0x58b3578be439f47e393503518b5c50fb6339237f", + "address": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5", "proxy": false, - "deploymentTxn": "0xe62cda122ca2adcf828362a33347dd80c850e79603dd17b933c83b2fb85c5650", - "timestamp": 1747774105, - "commitHash": "5addf85" + "deploymentTxn": "0xeb200999e9ca93432554b85ddad8e6f401d8e5194335b133975e1dbba4907324", + "timestamp": 1748985045, + "commitHash": "8c0b627" } }, "history": [ + { + "contracts": { + "UERC20Factory": { + "address": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5", + "proxy": false, + "deploymentTxn": "0xeb200999e9ca93432554b85ddad8e6f401d8e5194335b133975e1dbba4907324", + "input": { + "constructor": {} + } + } + }, + "timestamp": 1748985045, + "commitHash": "8c0b627" + }, { "contracts": { "UERC20Factory": { diff --git a/deployments/json/1301.json b/deployments/json/1301.json index 73c47d2a..fcd30e2e 100644 --- a/deployments/json/1301.json +++ b/deployments/json/1301.json @@ -137,14 +137,28 @@ "commitHash": "77d52a7" }, "UERC20SuperchainFactory": { - "address": "0x43414b3556b6dfbb1278670871b11c73c22c93f3", + "address": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", "proxy": false, - "deploymentTxn": "0x170028b613a6daf839e60de54b8dcc7e230909a6eed67d3e444324ec063c3d6a", - "timestamp": 1747773832, - "commitHash": "5addf85" + "deploymentTxn": "0xe659cb70b232a27ba9db789aaf52ba0cd17ca8e955558b17cd790edfc45de7ed", + "timestamp": 1748984784, + "commitHash": "8c0b627" } }, "history": [ + { + "contracts": { + "UERC20SuperchainFactory": { + "address": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", + "proxy": false, + "deploymentTxn": "0xe659cb70b232a27ba9db789aaf52ba0cd17ca8e955558b17cd790edfc45de7ed", + "input": { + "constructor": {} + } + } + }, + "timestamp": 1748984784, + "commitHash": "8c0b627" + }, { "contracts": { "UERC20SuperchainFactory": { diff --git a/script/deploy/tasks/11155111/task-1748984988.json b/script/deploy/tasks/11155111/task-1748984988.json new file mode 100644 index 00000000..eb434d62 --- /dev/null +++ b/script/deploy/tasks/11155111/task-1748984988.json @@ -0,0 +1,481 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": true, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "UERC20SuperchainFactory": { + "deploy": false, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file diff --git a/script/deploy/tasks/1301/task-1748984758.json b/script/deploy/tasks/1301/task-1748984758.json new file mode 100644 index 00000000..b65744c8 --- /dev/null +++ b/script/deploy/tasks/1301/task-1748984758.json @@ -0,0 +1,481 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": false, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "UERC20SuperchainFactory": { + "deploy": true, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file diff --git a/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol index 4809d007..7468772b 100644 --- a/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol +++ b/src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol @@ -18,6 +18,6 @@ library UERC20FactoryDeployer { */ function initcode() internal pure returns (bytes memory) { return - hex'6080604052348015600e575f5ffd5b5061299d8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063a255e0ad14610043578063a5ea11da14610073578063f752070e14610088575b5f5ffd5b610056610051366004610915565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b61007b610307565b60405161006a9190610a55565b610056610096366004610b01565b610645565b5f806100a984860186610b8b565b90506001600160a01b0386166100d257604051636c38382960e11b815260040160405180910390fd5b865f036100f257604051637ceabcb560e11b815260040160405180910390fd5b6040805161010081018252888152602081018590526001600160a01b038816918101829052336060820181905260ff8b166080830181905260a083018e905260c083018d905260e083018590525f8b81556001889055600280546001600160a01b031916909517909455600380546001600160a81b03191660ff60a01b1990931692909217600160a01b90910217905590600461018f8d82610ccd565b5060c082015160058201906101a49082610ccd565b5060e08201518051600683019081906101bd9082610ccd565b50602082015160018201906101d29082610ccd565b50604082015160028201906101e79082610ccd565b5050509050505f8a8a8a3387604051602001610207959493929190610d87565b6040516020818303038152906040528051906020012090508060405161022c9061070c565b8190604051809103905ff5905080158015610249573d5f5f3e3d5ffd5b505f8080556001819055600280546001600160a01b0319169055600380546001600160a81b031916905590935080610282600482610719565b61028f600583015f610719565b600682015f61029e8282610719565b6102ab600183015f610719565b6102b8600283015f610719565b50506040516001600160a01b03861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505098975050505050505050565b61030f610753565b60408051610100810182525f8054825260015460208301526002546001600160a01b03908116938301939093526003549283166060830152600160a01b90920460ff1660808201526004805491929160a08401919061036d90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461039990610c49565b80156103e45780601f106103bb576101008083540402835291602001916103e4565b820191905f5260205f20905b8154815290600101906020018083116103c757829003601f168201915b505050505081526020016005820180546103fd90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461042990610c49565b80156104745780601f1061044b57610100808354040283529160200191610474565b820191905f5260205f20905b81548152906001019060200180831161045757829003601f168201915b50505050508152602001600682016040518060600160405290815f8201805461049c90610c49565b80601f01602080910402602001604051908101604052809291908181526020018280546104c890610c49565b80156105135780601f106104ea57610100808354040283529160200191610513565b820191905f5260205f20905b8154815290600101906020018083116104f657829003601f168201915b5050505050815260200160018201805461052c90610c49565b80601f016020809104026020016040519081016040528092919081815260200182805461055890610c49565b80156105a35780601f1061057a576101008083540402835291602001916105a3565b820191905f5260205f20905b81548152906001019060200180831161058657829003601f168201915b505050505081526020016002820180546105bc90610c49565b80601f01602080910402602001604051908101604052809291908181526020018280546105e890610c49565b80156106335780601f1061060a57610100808354040283529160200191610633565b820191905f5260205f20905b81548152906001019060200180831161061657829003601f168201915b50505050508152505081525050905090565b5f5f8686868686604051602001610660959493929190610d87565b6040516020818303038152906040528051906020012090505f604051806020016106899061070c565b601f1982820381018352601f9091011660408190526106ab9190602001610dd5565b6040516020818303038152906040528051906020012090506106ce8282306106da565b98975050505050505050565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611ba580610dec83390190565b50805461072590610c49565b5f825580601f10610734575050565b601f0160209004905f5260205f209081019061075091906107c9565b50565b6040518061010001604052805f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f60ff16815260200160608152602001606081526020016107c460405180606001604052806060815260200160608152602001606081525090565b905290565b5b808211156107dd575f81556001016107ca565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715610817576108176107e1565b60405290565b5f82601f83011261082c575f5ffd5b81356001600160401b03811115610845576108456107e1565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610873576108736107e1565b60405281815283820160200185101561088a575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146108b6575f5ffd5b919050565b80356001600160a01b03811681146108b6575f5ffd5b5f5f83601f8401126108e1575f5ffd5b5081356001600160401b038111156108f7575f5ffd5b60208301915083602082850101111561090e575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b03121561092c575f5ffd5b88356001600160401b03811115610941575f5ffd5b61094d8b828c0161081d565b98505060208901356001600160401b03811115610968575f5ffd5b6109748b828c0161081d565b97505061098360408a016108a6565b95506060890135945061099860808a016108bb565b935060a08901356001600160401b038111156109b2575f5ffd5b6109be8b828c016108d1565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815160608452610a1960608501826109d7565b905060208301518482036020860152610a3282826109d7565b91505060408301518482036040860152610a4c82826109d7565b95945050505050565b6020815281516020820152602082015160408201525f6040830151610a8560608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160ff811660a08401525060a083015161010060c0840152610ac56101208401826109d7565b905060c0840151601f198483030160e0850152610ae282826109d7565b91505060e0840151601f1984830301610100850152610a4c8282610a05565b5f5f5f5f5f60a08688031215610b15575f5ffd5b85356001600160401b03811115610b2a575f5ffd5b610b368882890161081d565b95505060208601356001600160401b03811115610b51575f5ffd5b610b5d8882890161081d565b945050610b6c604087016108a6565b9250610b7a606087016108bb565b949793965091946080013592915050565b5f60208284031215610b9b575f5ffd5b81356001600160401b03811115610bb0575f5ffd5b820160608185031215610bc1575f5ffd5b610bc96107f5565b81356001600160401b03811115610bde575f5ffd5b610bea8682850161081d565b82525060208201356001600160401b03811115610c05575f5ffd5b610c118682850161081d565b60208301525060408201356001600160401b03811115610c2f575f5ffd5b610c3b8682850161081d565b604083015250949350505050565b600181811c90821680610c5d57607f821691505b602082108103610c7b57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610cc857805f5260205f20601f840160051c81016020851015610ca65750805b601f840160051c820191505b81811015610cc5575f8155600101610cb2565b50505b505050565b81516001600160401b03811115610ce657610ce66107e1565b610cfa81610cf48454610c49565b84610c81565b6020601f821160018114610d2c575f8315610d155750848201515b5f19600385901b1c1916600184901b178455610cc5565b5f84815260208120601f198516915b82811015610d5b5787850151825560209485019460019092019101610d3b565b5084821015610d7857868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f610d9960a08301886109d7565b8281036020840152610dab81886109d7565b60ff96909616604084015250506001600160a01b0392909216606083015260809091015292915050565b5f82518060208501845e5f92019182525091905056fe610100604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610074919081019061035f565b90508060a001515f908161008891906104e8565b505f60405161009791906105a2565b60405190819003902060805260c08101516001906100b590826104e8565b50608081015160ff1660e090815260608201516001600160a01b031660c052602082015160a052810151805160029081906100f090826104e8565b506020820151600182019061010590826104e8565b506040820151600282019061011a90826104e8565b5050506040810151815161012e9190610134565b50610613565b6805345cdf77eb68f44c54818101818110156101575763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156101ec576101ec6101b5565b60405290565b80516001600160a01b0381168114610208575f5ffd5b919050565b805160ff81168114610208575f5ffd5b5f82601f83011261022c575f5ffd5b81516001600160401b03811115610245576102456101b5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610273576102736101b5565b60405281815283820160200185101561028a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102b6575f5ffd5b604051606081016001600160401b03811182821017156102d8576102d86101b5565b604052825190915081906001600160401b038111156102f5575f5ffd5b6103018582860161021d565b82525060208301516001600160401b0381111561031c575f5ffd5b6103288582860161021d565b60208301525060408301516001600160401b03811115610346575f5ffd5b6103528582860161021d565b6040830152505092915050565b5f6020828403121561036f575f5ffd5b81516001600160401b03811115610384575f5ffd5b82016101008185031215610396575f5ffd5b61039e6101c9565b81518152602080830151908201526103b8604083016101f2565b60408201526103c9606083016101f2565b60608201526103da6080830161020d565b608082015260a08201516001600160401b038111156103f7575f5ffd5b6104038682850161021d565b60a08301525060c08201516001600160401b03811115610421575f5ffd5b61042d8682850161021d565b60c08301525060e08201516001600160401b0381111561044b575f5ffd5b610457868285016102a6565b60e083015250949350505050565b600181811c9082168061047957607f821691505b60208210810361049757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b057805f5260205f20601f840160051c810160208510156104c25750805b601f840160051c820191505b818110156104e1575f81556001016104ce565b5050505050565b81516001600160401b03811115610501576105016101b5565b6105158161050f8454610465565b8461049d565b6020601f821160018114610547575f83156105305750848201515b5f19600385901b1c1916600184901b1784556104e1565b5f84815260208120601f198516915b828110156105765787850151825560209485019460019092019101610556565b508482101561059357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105af81610465565b6001821680156105c657600181146105db57610608565b60ff1983168652811515820286019350610608565b865f5260205f205f5b83811015610600578154888201526001909101906020016105e4565b505081860193505b509195945050505050565b60805160a05160c05160e05161155861064d5f395f6101cd01525f61013701525f6102b001525f818161050401526109ce01526115585ff3fe608060405234801561000f575f5ffd5b5060043610610106575f3560e01c8063392f37e91161009e57806395d89b411161006e57806395d89b4114610268578063a9059cbb14610270578063d505accf14610283578063dd62ed3e14610298578063f56a499f146102ab575f5ffd5b8063392f37e9146101ff5780633c130d901461021657806370a082311461021e5780637ecebe0014610243575f5ffd5b806318160ddd116100d957806318160ddd1461019957806323b872dd146101b3578063313ce567146101c65780633644e515146101f7575f5ffd5b806301ffc9a71461010a57806302d05d3f1461013257806306fdde0314610171578063095ea7b314610186575b5f5ffd5b61011d610118366004611148565b6102d2565b60405190151581526020015b60405180910390f35b6101597f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610129565b610179610323565b604051610129919061119d565b61011d6101943660046111ca565b6103b2565b6805345cdf77eb68f44c545b604051908152602001610129565b61011d6101c13660046111f2565b610431565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610129565b6101a5610501565b6102076105a3565b6040516101299392919061122c565b61017961074b565b6101a561022c36600461126e565b6387a211a2600c9081525f91909152602090205490565b6101a561025136600461126e565b6338377508600c9081525f91909152602090205490565b610179610916565b61011d61027e3660046111ca565b610925565b610296610291366004611287565b61099c565b005b6101a56102a63660046112f4565b610b76565b6101a57f000000000000000000000000000000000000000000000000000000000000000081565b5f6001600160e01b031982166301ffc9a760e01b148061030257506001600160e01b031982166336372b0760e01b145b8061031d57506001600160e01b03198216634ec7fbed60e11b145b92915050565b60605f805461033190611325565b80601f016020809104026020016040519081016040528092919081815260200182805461035d90611325565b80156103a85780601f1061037f576101008083540402835291602001916103a8565b820191905f5260205f20905b81548152906001019060200180831161038b57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba318821915176103e357633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146104865733602052637f5e9f208117600c526034600c208054801915610483578085111561047d576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156104ac5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000008061053a57610530610323565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b6002805481906105b290611325565b80601f01602080910402602001604051908101604052809291908181526020018280546105de90611325565b80156106295780601f1061060057610100808354040283529160200191610629565b820191905f5260205f20905b81548152906001019060200180831161060c57829003601f168201915b50505050509080600101805461063e90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461066a90611325565b80156106b55780601f1061068c576101008083540402835291602001916106b5565b820191905f5260205f20905b81548152906001019060200180831161069857829003601f168201915b5050505050908060020180546106ca90611325565b80601f01602080910402602001604051908101604052809291908181526020018280546106f690611325565b80156107415780601f1061071857610100808354040283529160200191610741565b820191905f5260205f20905b81548152906001019060200180831161072457829003601f168201915b5050505050905083565b606061091160026040518060600160405290815f8201805461076c90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461079890611325565b80156107e35780601f106107ba576101008083540402835291602001916107e3565b820191905f5260205f20905b8154815290600101906020018083116107c657829003601f168201915b505050505081526020016001820180546107fc90611325565b80601f016020809104026020016040519081016040528092919081815260200182805461082890611325565b80156108735780601f1061084a57610100808354040283529160200191610873565b820191905f5260205f20905b81548152906001019060200180831161085657829003601f168201915b5050505050815260200160028201805461088c90611325565b80601f01602080910402602001604051908101604052809291908181526020018280546108b890611325565b80156109035780601f106108da57610100808354040283529160200191610903565b820191905f5260205f20905b8154815290600101906020018083116108e657829003601f168201915b505050505081525050610bba565b905090565b60606001805461033190611325565b5f6387a211a2600c52335f526020600c2080548084111561094d5763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba318851915176109cc57633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610a04576109fa610323565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610a3a57631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610b225763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610b9f57505f1961031d565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610bcd610bc883610bf3565b610d55565b604051602001610bdd9190611374565b6040516020818303038152906040529050919050565b60605f604051602001610c0d90607b60f81b815260010190565b60408051601f198184030181529190528351519091505f9015610c5e5781610c37855f0151610d7b565b604051602001610c489291906113a5565b6040516020818303038152906040529150600190505b60208401515115610cc7578015610c925781604051602001610c8091906113e5565b60405160208183030381529060405291505b81610ca08560200151610d7b565b604051602001610cb1929190611402565b6040516020818303038152906040529150600190505b60408401515115610d2c578015610cfb5781604051602001610ce991906113e5565b60405160208183030381529060405291505b81610d098560400151610d7b565b604051602001610d1a92919061142b565b60405160208183030381529060405291505b81604051602001610d3d9190611452565b60405160208183030381529060405292505050919050565b606061031d8260405180606001604052806040815260200161150c604091396001610fcd565b805160609082905f90610d8f906002611482565b67ffffffffffffffff811115610da757610da7611499565b6040519080825280601f01601f191660200182016040528015610dd1576020820181803683370190505b5090505f805b8351811015610fb6575f610dee8583016020015190565b90506b100000000000000400003700600160f883901c1b1615610f7857601760fa1b8484610e1b816114ad565b955081518110610e2d57610e2d6114c5565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b03610e9557603160f91b8484610e68816114ad565b955081518110610e7a57610e7a6114c5565b60200101906001600160f81b03191690815f1a905350610fad565b6001600160f81b03198116600960f81b03610eba57601d60fa1b8484610e68816114ad565b6001600160f81b03198116600560f91b03610edf57603760f91b8484610e68816114ad565b6001600160f81b03198116600360fa1b03610f0457603360f91b8484610e68816114ad565b6001600160f81b03198116600d60f81b03610f2957603960f91b8484610e68816114ad565b6001600160f81b03198116601760fa1b03610f4e57601760fa1b8484610e68816114ad565b6001600160f81b03198116601160f91b03610f7357601160f91b8484610e68816114ad565b610fad565b808484610f84816114ad565b955081518110610f9657610f966114c5565b60200101906001600160f81b03191690815f1a9053505b50600101610dd7565b50808252603f01601f191681016040529392505050565b606083515f03610feb575060408051602081019091525f81526104fa565b5f8261101b576003855160046110019190611482565b61100c9060026114d9565b61101691906114ec565b611040565b60038551600261102b91906114d9565b61103591906114ec565b611040906004611482565b90505f8167ffffffffffffffff81111561105c5761105c611499565b6040519080825280601f01601f191660200182016040528015611086576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156110fb576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506110a0565b90525050851561113c5760038851066001811461111f57600281146111325761113a565b603d6001830353603d600283035361113a565b603d60018303535b505b50909695505050505050565b5f60208284031215611158575f5ffd5b81356001600160e01b0319811681146104fa575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6104fa602083018461116f565b80356001600160a01b03811681146111c5575f5ffd5b919050565b5f5f604083850312156111db575f5ffd5b6111e4836111af565b946020939093013593505050565b5f5f5f60608486031215611204575f5ffd5b61120d846111af565b925061121b602085016111af565b929592945050506040919091013590565b606081525f61123e606083018661116f565b8281036020840152611250818661116f565b90508281036040840152611264818561116f565b9695505050505050565b5f6020828403121561127e575f5ffd5b6104fa826111af565b5f5f5f5f5f5f5f60e0888a03121561129d575f5ffd5b6112a6886111af565b96506112b4602089016111af565b95506040880135945060608801359350608088013560ff811681146112d7575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611305575f5ffd5b61130e836111af565b915061131c602084016111af565b90509250929050565b600181811c9082168061133957607f821691505b60208210810361135757634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6104fa601d83018461135d565b5f6113b0828561135d565b6e113232b9b1b934b83a34b7b7111d1160891b81526113d2600f82018561135d565b601160f91b815260010195945050505050565b5f6113f0828461135d565b61016160f51b81526002019392505050565b5f61140d828561135d565b6a113bb2b139b4ba32911d1160a91b81526113d2600b82018561135d565b5f611436828561135d565b681134b6b0b3b2911d1160b91b81526113d2600982018561135d565b5f61145d828461135d565b607d60f81b81526001019392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761031d5761031d61146e565b634e487b7160e01b5f52604160045260245ffd5b5f600182016114be576114be61146e565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561031d5761031d61146e565b5f8261150657634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a'; + hex'6080604052348015600e575f5ffd5b506131a28061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063a255e0ad14610043578063a5ea11da14610080578063f752070e14610095575b5f5ffd5b610056610051366004610ab2565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100886103f9565b6040516100779190610c13565b6100566100a3366004610d15565b610755565b5f806100b684860186610da1565b905073ffffffffffffffffffffffffffffffffffffffff8616610105576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b865f0361013e576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051610100810182528881526020810185905273ffffffffffffffffffffffffffffffffffffffff8816918101829052336060820181905260ff8b166080830181905260a083018e905260c083018d905260e083018590525f8b81556001889055600280547fffffffffffffffffffffffff000000000000000000000000000000000000000016909517909455600380547fffffffffffffffffffffff000000000000000000000000000000000000000000167fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217740100000000000000000000000000000000000000009091021790559060046102448d82610f00565b5060c082015160058201906102599082610f00565b5060e08201518051600683019081906102729082610f00565b50602082015160018201906102879082610f00565b506040820151600282019061029c9082610f00565b5050509050505f8a8a8a33876040516020016102bc959493929190611017565b604051602081830303815290604052805190602001209050806040516102e190610847565b8190604051809103905ff59050801580156102fe573d5f5f3e3d5ffd5b505f8080556001819055600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600380547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590935080610367600482610854565b610374600583015f610854565b600682015f6103838282610854565b610390600183015f610854565b61039d600283015f610854565b505060405173ffffffffffffffffffffffffffffffffffffffff861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505098975050505050505050565b61040161088e565b60408051610100810182525f80548252600154602083015260025473ffffffffffffffffffffffffffffffffffffffff9081169383019390935260035492831660608301527401000000000000000000000000000000000000000090920460ff1660808201526004805491929160a08401919061047d90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990610e63565b80156104f45780601f106104cb576101008083540402835291602001916104f4565b820191905f5260205f20905b8154815290600101906020018083116104d757829003601f168201915b5050505050815260200160058201805461050d90610e63565b80601f016020809104026020016040519081016040528092919081815260200182805461053990610e63565b80156105845780601f1061055b57610100808354040283529160200191610584565b820191905f5260205f20905b81548152906001019060200180831161056757829003601f168201915b50505050508152602001600682016040518060600160405290815f820180546105ac90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890610e63565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b5050505050815260200160018201805461063c90610e63565b80601f016020809104026020016040519081016040528092919081815260200182805461066890610e63565b80156106b35780601f1061068a576101008083540402835291602001916106b3565b820191905f5260205f20905b81548152906001019060200180831161069657829003601f168201915b505050505081526020016002820180546106cc90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546106f890610e63565b80156107435780601f1061071a57610100808354040283529160200191610743565b820191905f5260205f20905b81548152906001019060200180831161072657829003601f168201915b50505050508152505081525050905090565b5f5f8686868686604051602001610770959493929190611017565b6040516020818303038152906040528051906020012090505f6040518060200161079990610847565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190526107d99190602001611072565b6040516020818303038152906040528051906020012090506107fc828230610808565b98975050505050505050565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b61210d8061108983390190565b50805461086090610e63565b5f825580601f1061086f575050565b601f0160209004905f5260205f209081019061088b919061091e565b50565b6040518061010001604052805f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff168152602001606081526020016060815260200161091960405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610932575f815560010161091f565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561098657610986610936565b60405290565b5f82601f83011261099b575f5ffd5b813567ffffffffffffffff8111156109b5576109b5610936565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610a0257610a02610936565b604052818152838201602001851015610a19575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610a45575f5ffd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a45575f5ffd5b5f5f83601f840112610a7d575f5ffd5b50813567ffffffffffffffff811115610a94575f5ffd5b602083019150836020828501011115610aab575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610ac9575f5ffd5b883567ffffffffffffffff811115610adf575f5ffd5b610aeb8b828c0161098c565b985050602089013567ffffffffffffffff811115610b07575f5ffd5b610b138b828c0161098c565b975050610b2260408a01610a35565b955060608901359450610b3760808a01610a4a565b935060a089013567ffffffffffffffff811115610b52575f5ffd5b610b5e8b828c01610a6d565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610bd76060850182610b77565b905060208301518482036020860152610bf08282610b77565b91505060408301518482036040860152610c0a8282610b77565b95945050505050565b6020815281516020820152602082015160408201525f6040830151610c50606084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015173ffffffffffffffffffffffffffffffffffffffff8116608084015250608083015160ff811660a08401525060a083015161010060c0840152610c9d610120840182610b77565b905060c08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160e0850152610cd88282610b77565b91505060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610c0a8282610bc3565b5f5f5f5f5f60a08688031215610d29575f5ffd5b853567ffffffffffffffff811115610d3f575f5ffd5b610d4b8882890161098c565b955050602086013567ffffffffffffffff811115610d67575f5ffd5b610d738882890161098c565b945050610d8260408701610a35565b9250610d9060608701610a4a565b949793965091946080013592915050565b5f60208284031215610db1575f5ffd5b813567ffffffffffffffff811115610dc7575f5ffd5b820160608185031215610dd8575f5ffd5b610de0610963565b813567ffffffffffffffff811115610df6575f5ffd5b610e028682850161098c565b825250602082013567ffffffffffffffff811115610e1e575f5ffd5b610e2a8682850161098c565b602083015250604082013567ffffffffffffffff811115610e49575f5ffd5b610e558682850161098c565b604083015250949350505050565b600181811c90821680610e7757607f821691505b602082108103610eae577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610efb57805f5260205f20601f840160051c81016020851015610ed95750805b601f840160051c820191505b81811015610ef8575f8155600101610ee5565b50505b505050565b815167ffffffffffffffff811115610f1a57610f1a610936565b610f2e81610f288454610e63565b84610eb4565b6020601f821160018114610f7f575f8315610f495750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ef8565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015610fcc5787850151825560209485019460019092019101610fac565b508482101561100857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f61102960a0830188610b77565b828103602084015261103b8188610b77565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b5f82518060208501845e5f92019182525091905056fe610100604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610074919081019061035f565b90508060a001515f908161008891906104e8565b505f60405161009791906105a2565b60405190819003902060805260c08101516001906100b590826104e8565b50608081015160ff1660e090815260608201516001600160a01b031660c052602082015160a052810151805160029081906100f090826104e8565b506020820151600182019061010590826104e8565b506040820151600282019061011a90826104e8565b5050506040810151815161012e9190610134565b50610613565b6805345cdf77eb68f44c54818101818110156101575763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156101ec576101ec6101b5565b60405290565b80516001600160a01b0381168114610208575f5ffd5b919050565b805160ff81168114610208575f5ffd5b5f82601f83011261022c575f5ffd5b81516001600160401b03811115610245576102456101b5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610273576102736101b5565b60405281815283820160200185101561028a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102b6575f5ffd5b604051606081016001600160401b03811182821017156102d8576102d86101b5565b604052825190915081906001600160401b038111156102f5575f5ffd5b6103018582860161021d565b82525060208301516001600160401b0381111561031c575f5ffd5b6103288582860161021d565b60208301525060408301516001600160401b03811115610346575f5ffd5b6103528582860161021d565b6040830152505092915050565b5f6020828403121561036f575f5ffd5b81516001600160401b03811115610384575f5ffd5b82016101008185031215610396575f5ffd5b61039e6101c9565b81518152602080830151908201526103b8604083016101f2565b60408201526103c9606083016101f2565b60608201526103da6080830161020d565b608082015260a08201516001600160401b038111156103f7575f5ffd5b6104038682850161021d565b60a08301525060c08201516001600160401b03811115610421575f5ffd5b61042d8682850161021d565b60c08301525060e08201516001600160401b0381111561044b575f5ffd5b610457868285016102a6565b60e083015250949350505050565b600181811c9082168061047957607f821691505b60208210810361049757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b057805f5260205f20601f840160051c810160208510156104c25750805b601f840160051c820191505b818110156104e1575f81556001016104ce565b5050505050565b81516001600160401b03811115610501576105016101b5565b6105158161050f8454610465565b8461049d565b6020601f821160018114610547575f83156105305750848201515b5f19600385901b1c1916600184901b1784556104e1565b5f84815260208120601f198516915b828110156105765787850151825560209485019460019092019101610556565b508482101561059357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105af81610465565b6001821680156105c657600181146105db57610608565b60ff1983168652811515820286019350610608565b865f5260205f205f5b83811015610600578154888201526001909101906020016105e4565b505081860193505b509195945050505050565b60805160a05160c05160e051611ac061064d5f395f6101e901525f61014601525f6102cc01525f81816105c00152610a970152611ac05ff3fe608060405234801561000f575f5ffd5b5060043610610115575f3560e01c8063392f37e9116100ad57806395d89b411161007d578063d505accf11610063578063d505accf1461029f578063dd62ed3e146102b4578063f56a499f146102c7575f5ffd5b806395d89b4114610284578063a9059cbb1461028c575f5ffd5b8063392f37e91461021b5780633c130d901461023257806370a082311461023a5780637ecebe001461025f575f5ffd5b806318160ddd116100e857806318160ddd146101b557806323b872dd146101cf578063313ce567146101e25780633644e51514610213575f5ffd5b806301ffc9a71461011957806302d05d3f1461014157806306fdde031461018d578063095ea7b3146101a2575b5f5ffd5b61012c61012736600461154a565b6102ee565b60405190151581526020015b60405180910390f35b6101687f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610138565b6101956103d2565b60405161013891906115d5565b61012c6101b036600461160f565b610461565b6805345cdf77eb68f44c545b604051908152602001610138565b61012c6101dd366004611637565b6104ed565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610138565b6101c16105bd565b61022361065f565b60405161013893929190611671565b610195610807565b6101c16102483660046116b3565b6387a211a2600c9081525f91909152602090205490565b6101c161026d3660046116b3565b6338377508600c9081525f91909152602090205490565b6101956109d2565b61012c61029a36600461160f565b6109e1565b6102b26102ad3660046116cc565b610a58565b005b6101c16102c2366004611739565b610c50565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061038057507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b806103cc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b92915050565b60605f80546103e09061176a565b80601f016020809104026020016040519081016040528092919081815260200182805461040c9061176a565b80156104575780601f1061042e57610100808354040283529160200191610457565b820191905f5260205f20905b81548152906001019060200180831161043a57829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba3188219151761049f57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105425733602052637f5e9f208117600c526034600c20805480191561053f5780851115610539576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156105685763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000806105f6576105ec6103d2565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061066e9061176a565b80601f016020809104026020016040519081016040528092919081815260200182805461069a9061176a565b80156106e55780601f106106bc576101008083540402835291602001916106e5565b820191905f5260205f20905b8154815290600101906020018083116106c857829003601f168201915b5050505050908060010180546106fa9061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546107269061176a565b80156107715780601f1061074857610100808354040283529160200191610771565b820191905f5260205f20905b81548152906001019060200180831161075457829003601f168201915b5050505050908060020180546107869061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546107b29061176a565b80156107fd5780601f106107d4576101008083540402835291602001916107fd565b820191905f5260205f20905b8154815290600101906020018083116107e057829003601f168201915b5050505050905083565b60606109cd60026040518060600160405290815f820180546108289061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546108549061176a565b801561089f5780601f106108765761010080835404028352916020019161089f565b820191905f5260205f20905b81548152906001019060200180831161088257829003601f168201915b505050505081526020016001820180546108b89061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546108e49061176a565b801561092f5780601f106109065761010080835404028352916020019161092f565b820191905f5260205f20905b81548152906001019060200180831161091257829003601f168201915b505050505081526020016002820180546109489061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546109749061176a565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081525050610cd0565b905090565b6060600180546103e09061176a565b5f6387a211a2600c52335f526020600c20805480841115610a095763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610a9557633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610acd57610ac36103d2565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b0357631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610beb5763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610cb557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103cc565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610ce3610cde83610d09565b610ea5565b604051602001610cf391906117d2565b6040516020818303038152906040529050919050565b60605f604051602001610d3f907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f9015610dae5781610d87855f0151610ecb565b604051602001610d98929190611803565b6040516020818303038152906040529150600190505b60208401515115610e17578015610de25781604051602001610dd0919061186d565b60405160208183030381529060405291505b81610df08560200151610ecb565b604051602001610e019291906118a5565b6040516020818303038152906040529150600190505b60408401515115610e7c578015610e4b5781604051602001610e39919061186d565b60405160208183030381529060405291505b81610e598560400151610ecb565b604051602001610e6a9291906118e0565b60405160208183030381529060405291505b81604051602001610e8d919061191b565b60405160208183030381529060405292505050919050565b60606103cc82604051806060016040528060408152602001611a746040913960016113cf565b805160609082905f90610edf906002611980565b67ffffffffffffffff811115610ef757610ef7611997565b6040519080825280601f01601f191660200182016040528015610f21576020820181803683370190505b5090505f805b835181101561139a575f610f3e8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611344577f5c000000000000000000000000000000000000000000000000000000000000008484610f87816119c4565b955081518110610f9957610f996119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f080000000000000000000000000000000000000000000000000000000000000003611081577f6200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b95508151811061104e5761104e6119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350611391565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036110f6577f7400000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a000000000000000000000000000000000000000000000000000000000000000361116b577f6e00000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036111e0577f6600000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611255577f7200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036112ca577f5c00000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361133f577f2200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b611391565b808484611350816119c4565b955081518110611362576113626119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101610f27565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036113ed575060408051602081019091525f81526105b6565b5f8261141d576003855160046114039190611980565b61140e906002611a28565b6114189190611a3b565b611442565b60038551600261142d9190611a28565b6114379190611a3b565b611442906004611980565b90505f8167ffffffffffffffff81111561145e5761145e611997565b6040519080825280601f01601f191660200182016040528015611488576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156114fd576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506114a2565b90525050851561153e5760038851066001811461152157600281146115345761153c565b603d6001830353603d600283035361153c565b603d60018303535b505b50909695505050505050565b5f6020828403121561155a575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105b6575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6105b66020830184611589565b803573ffffffffffffffffffffffffffffffffffffffff8116811461160a575f5ffd5b919050565b5f5f60408385031215611620575f5ffd5b611629836115e7565b946020939093013593505050565b5f5f5f60608486031215611649575f5ffd5b611652846115e7565b9250611660602085016115e7565b929592945050506040919091013590565b606081525f6116836060830186611589565b82810360208401526116958186611589565b905082810360408401526116a98185611589565b9695505050505050565b5f602082840312156116c3575f5ffd5b6105b6826115e7565b5f5f5f5f5f5f5f60e0888a0312156116e2575f5ffd5b6116eb886115e7565b96506116f9602089016115e7565b95506040880135945060608801359350608088013560ff8116811461171c575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f6040838503121561174a575f5ffd5b611753836115e7565b9150611761602084016115e7565b90509250929050565b600181811c9082168061177e57607f821691505b6020821081036117b5577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6105b6601d8301846117bb565b5f61180e82856117bb565b7f226465736372697074696f6e223a220000000000000000000000000000000000815261183e600f8201856117bb565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f61187882846117bb565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f6118b082856117bb565b7f2277656273697465223a22000000000000000000000000000000000000000000815261183e600b8201856117bb565b5f6118eb82856117bb565b7f22696d616765223a220000000000000000000000000000000000000000000000815261183e60098201856117bb565b5f61192682846117bb565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176103cc576103cc611953565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119f4576119f4611953565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808201808211156103cc576103cc611953565b5f82611a6e577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a'; } } diff --git a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol index 611941d2..6f5b9842 100644 --- a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol +++ b/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol @@ -18,6 +18,6 @@ library UERC20SuperchainFactoryDeployer { */ function initcode() internal pure returns (bytes memory) { return - hex'6080604052348015600e575f5ffd5b50612dab8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806340c84ea014610043578063a255e0ad14610073578063a5ea11da14610086575b5f5ffd5b6100566100513660046109d0565b61009b565b6040516001600160a01b0390911681526020015b60405180910390f35b610056610081366004610aac565b610133565b61008e610490565b60405161006a9190610bee565b5f5f8787878787876040516020016100b896959493929190610ca6565b6040516020818303038152906040528051906020012090505f604051806020016100e190610807565b601f1982820381018352601f9091011660408190526101039190602001610cfc565b6040516020818303038152906040528051906020012090506101268282306107d5565b9998505050505050505050565b5f80808061014386880188610d12565b9250925092508246036101d857336001600160a01b038316146101915760405160016223c24760e11b031981523360048201526001600160a01b038316602482015260440160405180910390fd5b6001600160a01b0388166101b857604051636c38382960e11b815260040160405180910390fd5b885f036101d857604051637ceabcb560e11b815260040160405180910390fd5b5f8c8c8c86868a6040516020016101f496959493929190610ca6565b6040516020818303038152906040528051906020012090508346146102425760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a6001600160a01b03168152602001846001600160a01b031681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506080820151816004015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c08201518160050190816103429190610e71565b5060e082015160068201906103579082610e71565b506101008201518051600783019081906103719082610e71565b50602082015160018201906103869082610e71565b506040820151600282019061039b9082610e71565b505050905050806040516103ae90610807565b8190604051809103905ff59050801580156103cb573d5f5f3e3d5ffd5b505f80805560018190556002819055600380546001600160a01b0319169055600480546001600160a81b031916905590955080610409600582610814565b610416600683015f610814565b600782015f6104258282610814565b610432600183015f610814565b61043f600283015f610814565b50506040516001600160a01b03881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b61049861084e565b60408051610120810182525f805482526001546020830152600254928201929092526003546001600160a01b0390811660608301526004549081166080830152600160a01b900460ff1660a08201526005805491929160c0840191906104fd90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461052990610ded565b80156105745780601f1061054b57610100808354040283529160200191610574565b820191905f5260205f20905b81548152906001019060200180831161055757829003601f168201915b5050505050815260200160068201805461058d90610ded565b80601f01602080910402602001604051908101604052809291908181526020018280546105b990610ded565b80156106045780601f106105db57610100808354040283529160200191610604565b820191905f5260205f20905b8154815290600101906020018083116105e757829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461062c90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461065890610ded565b80156106a35780601f1061067a576101008083540402835291602001916106a3565b820191905f5260205f20905b81548152906001019060200180831161068657829003601f168201915b505050505081526020016001820180546106bc90610ded565b80601f01602080910402602001604051908101604052809291908181526020018280546106e890610ded565b80156107335780601f1061070a57610100808354040283529160200191610733565b820191905f5260205f20905b81548152906001019060200180831161071657829003601f168201915b5050505050815260200160028201805461074c90610ded565b80601f016020809104026020016040519081016040528092919081815260200182805461077890610ded565b80156107c35780601f1061079a576101008083540402835291602001916107c3565b820191905f5260205f20905b8154815290600101906020018083116107a657829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff8153605590206001600160a01b0316949350505050565b611e7380610f2c83390190565b50805461082090610ded565b5f825580601f1061082f575050565b601f0160209004905f5260205f209081019061084b91906108ca565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f6001600160a01b031681526020015f6001600160a01b031681526020015f60ff16815260200160608152602001606081526020016108c560405180606001604052806060815260200160608152602001606081525090565b905290565b5b808211156108de575f81556001016108cb565b5090565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715610918576109186108e2565b60405290565b5f82601f83011261092d575f5ffd5b81356001600160401b03811115610946576109466108e2565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610974576109746108e2565b60405281815283820160200185101561098b575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff811681146109b7575f5ffd5b919050565b6001600160a01b038116811461084b575f5ffd5b5f5f5f5f5f5f60c087890312156109e5575f5ffd5b86356001600160401b038111156109fa575f5ffd5b610a0689828a0161091e565b96505060208701356001600160401b03811115610a21575f5ffd5b610a2d89828a0161091e565b955050610a3c604088016109a7565b9350606087013592506080870135610a53816109bc565b9598949750929591949360a090920135925050565b5f5f83601f840112610a78575f5ffd5b5081356001600160401b03811115610a8e575f5ffd5b602083019150836020828501011115610aa5575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610ac3575f5ffd5b88356001600160401b03811115610ad8575f5ffd5b610ae48b828c0161091e565b98505060208901356001600160401b03811115610aff575f5ffd5b610b0b8b828c0161091e565b975050610b1a60408a016109a7565b9550606089013594506080890135610b31816109bc565b935060a08901356001600160401b03811115610b4b575f5ffd5b610b578b828c01610a68565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b5f815160608452610bb26060850182610b70565b905060208301518482036020860152610bcb8282610b70565b91505060408301518482036040860152610be58282610b70565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610c2860808401826001600160a01b03169052565b5060808301516001600160a01b03811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610c68610140840182610b70565b905060e0840151601f1984830301610100850152610c868282610b70565b915050610100840151601f1984830301610120850152610be58282610b9e565b60c081525f610cb860c0830189610b70565b8281036020840152610cca8189610b70565b60ff979097166040840152505060608101939093526001600160a01b0391909116608083015260a09091015292915050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610d24575f5ffd5b833592506020840135610d36816109bc565b915060408401356001600160401b03811115610d50575f5ffd5b840160608187031215610d61575f5ffd5b610d696108f6565b81356001600160401b03811115610d7e575f5ffd5b610d8a8882850161091e565b82525060208201356001600160401b03811115610da5575f5ffd5b610db18882850161091e565b60208301525060408201356001600160401b03811115610dcf575f5ffd5b610ddb8882850161091e565b60408301525080925050509250925092565b600181811c90821680610e0157607f821691505b602082108103610e1f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115610e6c57805f5260205f20601f840160051c81016020851015610e4a5750805b601f840160051c820191505b81811015610e69575f8155600101610e56565b50505b505050565b81516001600160401b03811115610e8a57610e8a6108e2565b610e9e81610e988454610ded565b84610e25565b6020601f821160018114610ed0575f8315610eb95750848201515b5f19600385901b1c1916600184901b178455610e69565b5f84815260208120601f198516915b82811015610eff5787850151825560209485019460019092019101610edf565b5084821015610f1c57868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e051610100516117fb6106785f395f61030201525f61022101525f61016301525f61033701525f81816106800152610b3701526117fb5ff3fe608060405234801561000f575f5ffd5b5060043610610132575f3560e01c8063392f37e9116100b4578063a9059cbb11610079578063a9059cbb146102c4578063d505accf146102d7578063dd62ed3e146102ea578063ef126967146102fd578063ef31f2cd14610324578063f56a499f14610332575f5ffd5b8063392f37e9146102535780633c130d901461026a57806370a08231146102725780637ecebe001461029757806395d89b41146102bc575f5ffd5b806318bf5077116100fa57806318bf5077146101df57806323b872dd146101f45780632b8c49e314610207578063313ce5671461021a5780633644e5151461024b575f5ffd5b806301ffc9a71461013657806302d05d3f1461015e57806306fdde031461019d578063095ea7b3146101b257806318160ddd146101c5575b5f5ffd5b6101496101443660046113cb565b610359565b60405190151581526020015b60405180910390f35b6101857f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610155565b6101a5610384565b6040516101559190611420565b6101496101c036600461144d565b610413565b6805345cdf77eb68f44c545b604051908152602001610155565b6101f26101ed36600461144d565b610492565b005b610149610202366004611475565b610543565b6101f261021536600461144d565b610600565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610155565b6101d161067d565b61025b61071f565b604051610155939291906114af565b6101a56108c7565b6101d16102803660046114f1565b6387a211a2600c9081525f91909152602090205490565b6101d16102a53660046114f1565b6338377508600c9081525f91909152602090205490565b6101a5610a92565b6101496102d236600461144d565b610aa1565b6101f26102e536600461150a565b610b05565b6101d16102f8366004611577565b610cdf565b6101d17f000000000000000000000000000000000000000000000000000000000000000081565b6101856028602160991b0181565b6101d17f000000000000000000000000000000000000000000000000000000000000000081565b5f61036382610d23565b8061037e57506001600160e01b03198216630cccc66560e21b145b92915050565b60605f8054610392906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546103be906115a8565b80156104095780601f106103e057610100808354040283529160200191610409565b820191905f5260205f20905b8154815290600101906020018083116103ec57829003601f168201915b5050505050905090565b5f6001600160a01b0383166e22d473030f116ddee9f6b43ac78ba3188219151761044457633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b336028602160991b01146104cd57604051632e0d831f60e01b81523360048201526028602160991b0160248201526044015b60405180910390fd5b6001600160a01b0382166104f457604051636c38382960e11b815260040160405180910390fd5b6104fe8282610d73565b60405181815233906001600160a01b038416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105985733602052637f5e9f208117600c526034600c208054801915610595578085111561058f576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156105be5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c5f5160206117cf5f395f51905f52602080a3505060015b9392505050565b336028602160991b011461063657604051632e0d831f60e01b81523360048201526028602160991b0160248201526044016104c4565b6106408282610ddc565b60405181815233906001600160a01b038416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610537565b5f7f0000000000000000000000000000000000000000000000000000000000000000806106b6576106ac610384565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061072e906115a8565b80601f016020809104026020016040519081016040528092919081815260200182805461075a906115a8565b80156107a55780601f1061077c576101008083540402835291602001916107a5565b820191905f5260205f20905b81548152906001019060200180831161078857829003601f168201915b5050505050908060010180546107ba906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546107e6906115a8565b80156108315780601f1061080857610100808354040283529160200191610831565b820191905f5260205f20905b81548152906001019060200180831161081457829003601f168201915b505050505090806002018054610846906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610872906115a8565b80156108bd5780601f10610894576101008083540402835291602001916108bd565b820191905f5260205f20905b8154815290600101906020018083116108a057829003601f168201915b5050505050905083565b6060610a8d60026040518060600160405290815f820180546108e8906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610914906115a8565b801561095f5780601f106109365761010080835404028352916020019161095f565b820191905f5260205f20905b81548152906001019060200180831161094257829003601f168201915b50505050508152602001600182018054610978906115a8565b80601f01602080910402602001604051908101604052809291908181526020018280546109a4906115a8565b80156109ef5780601f106109c6576101008083540402835291602001916109ef565b820191905f5260205f20905b8154815290600101906020018083116109d257829003601f168201915b50505050508152602001600282018054610a08906115a8565b80601f0160208091040260200160405190810160405280929190818152602001828054610a34906115a8565b8015610a7f5780601f10610a5657610100808354040283529160200191610a7f565b820191905f5260205f20905b815481529060010190602001808311610a6257829003601f168201915b505050505081525050610e3d565b905090565b606060018054610392906115a8565b5f6387a211a2600c52335f526020600c20805480841115610ac95763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c335f5160206117cf5f395f51905f52602080a350600192915050565b6001600160a01b0386166e22d473030f116ddee9f6b43ac78ba31885191517610b3557633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610b6d57610b63610384565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610ba357631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610c8b5763ddafbaef5f526004601cfd5b0190556303faf4f960a51b89176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f6e22d473030f116ddee9f6b43ac78ba2196001600160a01b03831601610d0857505f1961037e565b50602052637f5e9f20600c9081525f91909152603490205490565b5f6001600160e01b031982166301ffc9a760e01b1480610d5357506001600160e01b031982166336372b0760e01b145b8061037e57506001600160e01b03198216634ec7fbed60e11b1492915050565b6805345cdf77eb68f44c5481810181811015610d965763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f5f5160206117cf5f395f51905f52602080a35050565b6387a211a2600c52815f526020600c20805480831115610e035763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f8181526001600160a01b0383165f5160206117cf5f395f51905f52602083a35050565b6060610e50610e4b83610e76565b610fd8565b604051602001610e6091906115f7565b6040516020818303038152906040529050919050565b60605f604051602001610e9090607b60f81b815260010190565b60408051601f198184030181529190528351519091505f9015610ee15781610eba855f0151610ffe565b604051602001610ecb929190611628565b6040516020818303038152906040529150600190505b60208401515115610f4a578015610f155781604051602001610f039190611668565b60405160208183030381529060405291505b81610f238560200151610ffe565b604051602001610f34929190611685565b6040516020818303038152906040529150600190505b60408401515115610faf578015610f7e5781604051602001610f6c9190611668565b60405160208183030381529060405291505b81610f8c8560400151610ffe565b604051602001610f9d9291906116ae565b60405160208183030381529060405291505b81604051602001610fc091906116d5565b60405160208183030381529060405292505050919050565b606061037e8260405180606001604052806040815260200161178f604091396001611250565b805160609082905f90611012906002611705565b67ffffffffffffffff81111561102a5761102a61171c565b6040519080825280601f01601f191660200182016040528015611054576020820181803683370190505b5090505f805b8351811015611239575f6110718583016020015190565b90506b100000000000000400003700600160f883901c1b16156111fb57601760fa1b848461109e81611730565b9550815181106110b0576110b0611748565b60200101906001600160f81b03191690815f1a9053506001600160f81b03198116600160fb1b0361111857603160f91b84846110eb81611730565b9550815181106110fd576110fd611748565b60200101906001600160f81b03191690815f1a905350611230565b6001600160f81b03198116600960f81b0361113d57601d60fa1b84846110eb81611730565b6001600160f81b03198116600560f91b0361116257603760f91b84846110eb81611730565b6001600160f81b03198116600360fa1b0361118757603360f91b84846110eb81611730565b6001600160f81b03198116600d60f81b036111ac57603960f91b84846110eb81611730565b6001600160f81b03198116601760fa1b036111d157601760fa1b84846110eb81611730565b6001600160f81b03198116601160f91b036111f657601160f91b84846110eb81611730565b611230565b80848461120781611730565b95508151811061121957611219611748565b60200101906001600160f81b03191690815f1a9053505b5060010161105a565b50808252603f01601f191681016040529392505050565b606083515f0361126e575060408051602081019091525f81526105f9565b5f8261129e576003855160046112849190611705565b61128f90600261175c565b611299919061176f565b6112c3565b6003855160026112ae919061175c565b6112b8919061176f565b6112c3906004611705565b90505f8167ffffffffffffffff8111156112df576112df61171c565b6040519080825280601f01601f191660200182016040528015611309576020820181803683370190505b509050600185016020820187885189016020810180515f82525b8284101561137e576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f8116870151865350600185019450611323565b9052505085156113bf576003885106600181146113a257600281146113b5576113bd565b603d6001830353603d60028303536113bd565b603d60018303535b505b50909695505050505050565b5f602082840312156113db575f5ffd5b81356001600160e01b0319811681146105f9575f5ffd5b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6105f960208301846113f2565b80356001600160a01b0381168114611448575f5ffd5b919050565b5f5f6040838503121561145e575f5ffd5b61146783611432565b946020939093013593505050565b5f5f5f60608486031215611487575f5ffd5b61149084611432565b925061149e60208501611432565b929592945050506040919091013590565b606081525f6114c160608301866113f2565b82810360208401526114d381866113f2565b905082810360408401526114e781856113f2565b9695505050505050565b5f60208284031215611501575f5ffd5b6105f982611432565b5f5f5f5f5f5f5f60e0888a031215611520575f5ffd5b61152988611432565b965061153760208901611432565b95506040880135945060608801359350608088013560ff8116811461155a575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611588575f5ffd5b61159183611432565b915061159f60208401611432565b90509250929050565b600181811c908216806115bc57607f821691505b6020821081036115da57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6105f9601d8301846115e0565b5f61163382856115e0565b6e113232b9b1b934b83a34b7b7111d1160891b8152611655600f8201856115e0565b601160f91b815260010195945050505050565b5f61167382846115e0565b61016160f51b81526002019392505050565b5f61169082856115e0565b6a113bb2b139b4ba32911d1160a91b8152611655600b8201856115e0565b5f6116b982856115e0565b681134b6b0b3b2911d1160b91b815261165560098201856115e0565b5f6116e082846115e0565b607d60f81b81526001019392505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761037e5761037e6116f1565b634e487b7160e01b5f52604160045260245ffd5b5f60018201611741576117416116f1565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561037e5761037e6116f1565b5f8261178957634e487b7160e01b5f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081c000aa164736f6c634300081c000a'; + hex'6080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806340c84ea014610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a'; } } From 231c836b17041732a78d8b006a73ac01e46aad35 Mon Sep 17 00:00:00 2001 From: dianakocsis Date: Tue, 15 Jul 2025 18:22:05 +0100 Subject: [PATCH 13/13] latest --- .../Deploy-all.s.sol/1/run-1750271409.json | 46 ++ broadcast/Deploy-all.s.sol/1/run-latest.json | 269 +-------- .../Deploy-all.s.sol/130/run-1750271110.json | 52 ++ .../Deploy-all.s.sol/130/run-1752599470.json | 52 ++ .../Deploy-all.s.sol/130/run-latest.json | 307 +---------- .../Deploy-all.s.sol/1301/run-1752587621.json | 52 ++ .../Deploy-all.s.sol/1301/run-1752588721.json | 52 ++ .../Deploy-all.s.sol/1301/run-1752588929.json | 52 ++ .../Deploy-all.s.sol/1301/run-latest.json | 36 +- deployments/1.md | 420 +++++++------- deployments/130.md | 518 ++++++++++-------- deployments/1301.md | 62 +++ deployments/json/1.json | 21 + deployments/json/130.json | 42 ++ deployments/json/1301.json | 49 ++ script/deploy/Deploy-all.s.sol | 15 +- script/deploy/tasks/1/task-1750271339.json | 481 ++++++++++++++++ script/deploy/tasks/130/task-1750271080.json | 481 ++++++++++++++++ script/deploy/tasks/130/task-1752599436.json | 481 ++++++++++++++++ script/deploy/tasks/1301/task-1752587562.json | 481 ++++++++++++++++ script/deploy/tasks/1301/task-1752588680.json | 481 ++++++++++++++++ script/deploy/tasks/1301/task-1752588888.json | 481 ++++++++++++++++ script/deploy/tasks/task_template.json | 2 +- ...loyer.sol => USUPERC20FactoryDeployer.sol} | 12 +- .../v2-core/UniswapV2FactoryDeployer.sol | 2 +- ...chainFactory.sol => IUSUPERC20Factory.sol} | 10 +- src/pkgs/uerc20-factory | 2 +- 27 files changed, 3977 insertions(+), 982 deletions(-) create mode 100644 broadcast/Deploy-all.s.sol/1/run-1750271409.json create mode 100644 broadcast/Deploy-all.s.sol/130/run-1750271110.json create mode 100644 broadcast/Deploy-all.s.sol/130/run-1752599470.json create mode 100644 broadcast/Deploy-all.s.sol/1301/run-1752587621.json create mode 100644 broadcast/Deploy-all.s.sol/1301/run-1752588721.json create mode 100644 broadcast/Deploy-all.s.sol/1301/run-1752588929.json create mode 100644 script/deploy/tasks/1/task-1750271339.json create mode 100644 script/deploy/tasks/130/task-1750271080.json create mode 100644 script/deploy/tasks/130/task-1752599436.json create mode 100644 script/deploy/tasks/1301/task-1752587562.json create mode 100644 script/deploy/tasks/1301/task-1752588680.json create mode 100644 script/deploy/tasks/1301/task-1752588888.json rename src/briefcase/deployers/uerc20-factory/{UERC20SuperchainFactoryDeployer.sol => USUPERC20FactoryDeployer.sol} (98%) rename src/briefcase/protocols/uerc20-factory/interfaces/{IUERC20SuperchainFactory.sol => IUSUPERC20Factory.sol} (83%) diff --git a/broadcast/Deploy-all.s.sol/1/run-1750271409.json b/broadcast/Deploy-all.s.sol/1/run-1750271409.json new file mode 100644 index 00000000..38ff7014 --- /dev/null +++ b/broadcast/Deploy-all.s.sol/1/run-1750271409.json @@ -0,0 +1,46 @@ +{ + "transactions": [ + { + "hash": "0x3fd5a6f58f25bd2a6bc180e43a5d613e12a284733c9bf7a80fd857f6ac342ad2", + "transactionType": "CREATE2", + "contractName": "UERC20Factory", + "contractAddress": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5", + "function": null, + "arguments": null, + "transaction": { + "from": "0xe49acc3b16c097ec88dc9352ce4cd57ab7e35b95", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506131a28061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063a255e0ad14610043578063a5ea11da14610080578063f752070e14610095575b5f5ffd5b610056610051366004610ab2565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100886103f9565b6040516100779190610c13565b6100566100a3366004610d15565b610755565b5f806100b684860186610da1565b905073ffffffffffffffffffffffffffffffffffffffff8616610105576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b865f0361013e576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051610100810182528881526020810185905273ffffffffffffffffffffffffffffffffffffffff8816918101829052336060820181905260ff8b166080830181905260a083018e905260c083018d905260e083018590525f8b81556001889055600280547fffffffffffffffffffffffff000000000000000000000000000000000000000016909517909455600380547fffffffffffffffffffffff000000000000000000000000000000000000000000167fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217740100000000000000000000000000000000000000009091021790559060046102448d82610f00565b5060c082015160058201906102599082610f00565b5060e08201518051600683019081906102729082610f00565b50602082015160018201906102879082610f00565b506040820151600282019061029c9082610f00565b5050509050505f8a8a8a33876040516020016102bc959493929190611017565b604051602081830303815290604052805190602001209050806040516102e190610847565b8190604051809103905ff59050801580156102fe573d5f5f3e3d5ffd5b505f8080556001819055600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600380547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590935080610367600482610854565b610374600583015f610854565b600682015f6103838282610854565b610390600183015f610854565b61039d600283015f610854565b505060405173ffffffffffffffffffffffffffffffffffffffff861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505098975050505050505050565b61040161088e565b60408051610100810182525f80548252600154602083015260025473ffffffffffffffffffffffffffffffffffffffff9081169383019390935260035492831660608301527401000000000000000000000000000000000000000090920460ff1660808201526004805491929160a08401919061047d90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990610e63565b80156104f45780601f106104cb576101008083540402835291602001916104f4565b820191905f5260205f20905b8154815290600101906020018083116104d757829003601f168201915b5050505050815260200160058201805461050d90610e63565b80601f016020809104026020016040519081016040528092919081815260200182805461053990610e63565b80156105845780601f1061055b57610100808354040283529160200191610584565b820191905f5260205f20905b81548152906001019060200180831161056757829003601f168201915b50505050508152602001600682016040518060600160405290815f820180546105ac90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890610e63565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b5050505050815260200160018201805461063c90610e63565b80601f016020809104026020016040519081016040528092919081815260200182805461066890610e63565b80156106b35780601f1061068a576101008083540402835291602001916106b3565b820191905f5260205f20905b81548152906001019060200180831161069657829003601f168201915b505050505081526020016002820180546106cc90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546106f890610e63565b80156107435780601f1061071a57610100808354040283529160200191610743565b820191905f5260205f20905b81548152906001019060200180831161072657829003601f168201915b50505050508152505081525050905090565b5f5f8686868686604051602001610770959493929190611017565b6040516020818303038152906040528051906020012090505f6040518060200161079990610847565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190526107d99190602001611072565b6040516020818303038152906040528051906020012090506107fc828230610808565b98975050505050505050565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b61210d8061108983390190565b50805461086090610e63565b5f825580601f1061086f575050565b601f0160209004905f5260205f209081019061088b919061091e565b50565b6040518061010001604052805f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff168152602001606081526020016060815260200161091960405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610932575f815560010161091f565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561098657610986610936565b60405290565b5f82601f83011261099b575f5ffd5b813567ffffffffffffffff8111156109b5576109b5610936565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610a0257610a02610936565b604052818152838201602001851015610a19575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610a45575f5ffd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a45575f5ffd5b5f5f83601f840112610a7d575f5ffd5b50813567ffffffffffffffff811115610a94575f5ffd5b602083019150836020828501011115610aab575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610ac9575f5ffd5b883567ffffffffffffffff811115610adf575f5ffd5b610aeb8b828c0161098c565b985050602089013567ffffffffffffffff811115610b07575f5ffd5b610b138b828c0161098c565b975050610b2260408a01610a35565b955060608901359450610b3760808a01610a4a565b935060a089013567ffffffffffffffff811115610b52575f5ffd5b610b5e8b828c01610a6d565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610bd76060850182610b77565b905060208301518482036020860152610bf08282610b77565b91505060408301518482036040860152610c0a8282610b77565b95945050505050565b6020815281516020820152602082015160408201525f6040830151610c50606084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015173ffffffffffffffffffffffffffffffffffffffff8116608084015250608083015160ff811660a08401525060a083015161010060c0840152610c9d610120840182610b77565b905060c08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160e0850152610cd88282610b77565b91505060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610c0a8282610bc3565b5f5f5f5f5f60a08688031215610d29575f5ffd5b853567ffffffffffffffff811115610d3f575f5ffd5b610d4b8882890161098c565b955050602086013567ffffffffffffffff811115610d67575f5ffd5b610d738882890161098c565b945050610d8260408701610a35565b9250610d9060608701610a4a565b949793965091946080013592915050565b5f60208284031215610db1575f5ffd5b813567ffffffffffffffff811115610dc7575f5ffd5b820160608185031215610dd8575f5ffd5b610de0610963565b813567ffffffffffffffff811115610df6575f5ffd5b610e028682850161098c565b825250602082013567ffffffffffffffff811115610e1e575f5ffd5b610e2a8682850161098c565b602083015250604082013567ffffffffffffffff811115610e49575f5ffd5b610e558682850161098c565b604083015250949350505050565b600181811c90821680610e7757607f821691505b602082108103610eae577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610efb57805f5260205f20601f840160051c81016020851015610ed95750805b601f840160051c820191505b81811015610ef8575f8155600101610ee5565b50505b505050565b815167ffffffffffffffff811115610f1a57610f1a610936565b610f2e81610f288454610e63565b84610eb4565b6020601f821160018114610f7f575f8315610f495750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ef8565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015610fcc5787850151825560209485019460019092019101610fac565b508482101561100857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f61102960a0830188610b77565b828103602084015261103b8188610b77565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b5f82518060208501845e5f92019182525091905056fe610100604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610074919081019061035f565b90508060a001515f908161008891906104e8565b505f60405161009791906105a2565b60405190819003902060805260c08101516001906100b590826104e8565b50608081015160ff1660e090815260608201516001600160a01b031660c052602082015160a052810151805160029081906100f090826104e8565b506020820151600182019061010590826104e8565b506040820151600282019061011a90826104e8565b5050506040810151815161012e9190610134565b50610613565b6805345cdf77eb68f44c54818101818110156101575763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156101ec576101ec6101b5565b60405290565b80516001600160a01b0381168114610208575f5ffd5b919050565b805160ff81168114610208575f5ffd5b5f82601f83011261022c575f5ffd5b81516001600160401b03811115610245576102456101b5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610273576102736101b5565b60405281815283820160200185101561028a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102b6575f5ffd5b604051606081016001600160401b03811182821017156102d8576102d86101b5565b604052825190915081906001600160401b038111156102f5575f5ffd5b6103018582860161021d565b82525060208301516001600160401b0381111561031c575f5ffd5b6103288582860161021d565b60208301525060408301516001600160401b03811115610346575f5ffd5b6103528582860161021d565b6040830152505092915050565b5f6020828403121561036f575f5ffd5b81516001600160401b03811115610384575f5ffd5b82016101008185031215610396575f5ffd5b61039e6101c9565b81518152602080830151908201526103b8604083016101f2565b60408201526103c9606083016101f2565b60608201526103da6080830161020d565b608082015260a08201516001600160401b038111156103f7575f5ffd5b6104038682850161021d565b60a08301525060c08201516001600160401b03811115610421575f5ffd5b61042d8682850161021d565b60c08301525060e08201516001600160401b0381111561044b575f5ffd5b610457868285016102a6565b60e083015250949350505050565b600181811c9082168061047957607f821691505b60208210810361049757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b057805f5260205f20601f840160051c810160208510156104c25750805b601f840160051c820191505b818110156104e1575f81556001016104ce565b5050505050565b81516001600160401b03811115610501576105016101b5565b6105158161050f8454610465565b8461049d565b6020601f821160018114610547575f83156105305750848201515b5f19600385901b1c1916600184901b1784556104e1565b5f84815260208120601f198516915b828110156105765787850151825560209485019460019092019101610556565b508482101561059357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105af81610465565b6001821680156105c657600181146105db57610608565b60ff1983168652811515820286019350610608565b865f5260205f205f5b83811015610600578154888201526001909101906020016105e4565b505081860193505b509195945050505050565b60805160a05160c05160e051611ac061064d5f395f6101e901525f61014601525f6102cc01525f81816105c00152610a970152611ac05ff3fe608060405234801561000f575f5ffd5b5060043610610115575f3560e01c8063392f37e9116100ad57806395d89b411161007d578063d505accf11610063578063d505accf1461029f578063dd62ed3e146102b4578063f56a499f146102c7575f5ffd5b806395d89b4114610284578063a9059cbb1461028c575f5ffd5b8063392f37e91461021b5780633c130d901461023257806370a082311461023a5780637ecebe001461025f575f5ffd5b806318160ddd116100e857806318160ddd146101b557806323b872dd146101cf578063313ce567146101e25780633644e51514610213575f5ffd5b806301ffc9a71461011957806302d05d3f1461014157806306fdde031461018d578063095ea7b3146101a2575b5f5ffd5b61012c61012736600461154a565b6102ee565b60405190151581526020015b60405180910390f35b6101687f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610138565b6101956103d2565b60405161013891906115d5565b61012c6101b036600461160f565b610461565b6805345cdf77eb68f44c545b604051908152602001610138565b61012c6101dd366004611637565b6104ed565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610138565b6101c16105bd565b61022361065f565b60405161013893929190611671565b610195610807565b6101c16102483660046116b3565b6387a211a2600c9081525f91909152602090205490565b6101c161026d3660046116b3565b6338377508600c9081525f91909152602090205490565b6101956109d2565b61012c61029a36600461160f565b6109e1565b6102b26102ad3660046116cc565b610a58565b005b6101c16102c2366004611739565b610c50565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061038057507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b806103cc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b92915050565b60605f80546103e09061176a565b80601f016020809104026020016040519081016040528092919081815260200182805461040c9061176a565b80156104575780601f1061042e57610100808354040283529160200191610457565b820191905f5260205f20905b81548152906001019060200180831161043a57829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba3188219151761049f57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105425733602052637f5e9f208117600c526034600c20805480191561053f5780851115610539576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156105685763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000806105f6576105ec6103d2565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061066e9061176a565b80601f016020809104026020016040519081016040528092919081815260200182805461069a9061176a565b80156106e55780601f106106bc576101008083540402835291602001916106e5565b820191905f5260205f20905b8154815290600101906020018083116106c857829003601f168201915b5050505050908060010180546106fa9061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546107269061176a565b80156107715780601f1061074857610100808354040283529160200191610771565b820191905f5260205f20905b81548152906001019060200180831161075457829003601f168201915b5050505050908060020180546107869061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546107b29061176a565b80156107fd5780601f106107d4576101008083540402835291602001916107fd565b820191905f5260205f20905b8154815290600101906020018083116107e057829003601f168201915b5050505050905083565b60606109cd60026040518060600160405290815f820180546108289061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546108549061176a565b801561089f5780601f106108765761010080835404028352916020019161089f565b820191905f5260205f20905b81548152906001019060200180831161088257829003601f168201915b505050505081526020016001820180546108b89061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546108e49061176a565b801561092f5780601f106109065761010080835404028352916020019161092f565b820191905f5260205f20905b81548152906001019060200180831161091257829003601f168201915b505050505081526020016002820180546109489061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546109749061176a565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081525050610cd0565b905090565b6060600180546103e09061176a565b5f6387a211a2600c52335f526020600c20805480841115610a095763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610a9557633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610acd57610ac36103d2565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b0357631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610beb5763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610cb557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103cc565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610ce3610cde83610d09565b610ea5565b604051602001610cf391906117d2565b6040516020818303038152906040529050919050565b60605f604051602001610d3f907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f9015610dae5781610d87855f0151610ecb565b604051602001610d98929190611803565b6040516020818303038152906040529150600190505b60208401515115610e17578015610de25781604051602001610dd0919061186d565b60405160208183030381529060405291505b81610df08560200151610ecb565b604051602001610e019291906118a5565b6040516020818303038152906040529150600190505b60408401515115610e7c578015610e4b5781604051602001610e39919061186d565b60405160208183030381529060405291505b81610e598560400151610ecb565b604051602001610e6a9291906118e0565b60405160208183030381529060405291505b81604051602001610e8d919061191b565b60405160208183030381529060405292505050919050565b60606103cc82604051806060016040528060408152602001611a746040913960016113cf565b805160609082905f90610edf906002611980565b67ffffffffffffffff811115610ef757610ef7611997565b6040519080825280601f01601f191660200182016040528015610f21576020820181803683370190505b5090505f805b835181101561139a575f610f3e8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611344577f5c000000000000000000000000000000000000000000000000000000000000008484610f87816119c4565b955081518110610f9957610f996119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f080000000000000000000000000000000000000000000000000000000000000003611081577f6200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b95508151811061104e5761104e6119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350611391565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036110f6577f7400000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a000000000000000000000000000000000000000000000000000000000000000361116b577f6e00000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036111e0577f6600000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611255577f7200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036112ca577f5c00000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361133f577f2200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b611391565b808484611350816119c4565b955081518110611362576113626119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101610f27565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036113ed575060408051602081019091525f81526105b6565b5f8261141d576003855160046114039190611980565b61140e906002611a28565b6114189190611a3b565b611442565b60038551600261142d9190611a28565b6114379190611a3b565b611442906004611980565b90505f8167ffffffffffffffff81111561145e5761145e611997565b6040519080825280601f01601f191660200182016040528015611488576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156114fd576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506114a2565b90525050851561153e5760038851066001811461152157600281146115345761153c565b603d6001830353603d600283035361153c565b603d60018303535b505b50909695505050505050565b5f6020828403121561155a575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105b6575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6105b66020830184611589565b803573ffffffffffffffffffffffffffffffffffffffff8116811461160a575f5ffd5b919050565b5f5f60408385031215611620575f5ffd5b611629836115e7565b946020939093013593505050565b5f5f5f60608486031215611649575f5ffd5b611652846115e7565b9250611660602085016115e7565b929592945050506040919091013590565b606081525f6116836060830186611589565b82810360208401526116958186611589565b905082810360408401526116a98185611589565b9695505050505050565b5f602082840312156116c3575f5ffd5b6105b6826115e7565b5f5f5f5f5f5f5f60e0888a0312156116e2575f5ffd5b6116eb886115e7565b96506116f9602089016115e7565b95506040880135945060608801359350608088013560ff8116811461171c575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f6040838503121561174a575f5ffd5b611753836115e7565b9150611761602084016115e7565b90509250929050565b600181811c9082168061177e57607f821691505b6020821081036117b5577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6105b6601d8301846117bb565b5f61180e82856117bb565b7f226465736372697074696f6e223a220000000000000000000000000000000000815261183e600f8201856117bb565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f61187882846117bb565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f6118b082856117bb565b7f2277656273697465223a22000000000000000000000000000000000000000000815261183e600b8201856117bb565b5f6118eb82856117bb565b7f22696d616765223a220000000000000000000000000000000000000000000000815261183e60098201856117bb565b5f61192682846117bb565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176103cc576103cc611953565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119f4576119f4611953565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808201808211156103cc576103cc611953565b5f82611a6e577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0x26", + "chainId": "0x1" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xb3a693", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x3fd5a6f58f25bd2a6bc180e43a5d613e12a284733c9bf7a80fd857f6ac342ad2", + "transactionIndex": "0x1b", + "blockHash": "0xdc57c82a0f985fb2c0aab829110710d221f8a63e19a75d6b248410ecab565a6c", + "blockNumber": "0x15ae169", + "gasUsed": "0x2a84e8", + "effectiveGasPrice": "0x6c756135", + "from": "0xe49acc3b16c097ec88dc9352ce4cd57ab7e35b95", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1750271409, + "chain": 1, + "commit": "dd0a295" +} \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/1/run-latest.json b/broadcast/Deploy-all.s.sol/1/run-latest.json index 4f9537f3..38ff7014 100644 --- a/broadcast/Deploy-all.s.sol/1/run-latest.json +++ b/broadcast/Deploy-all.s.sol/1/run-latest.json @@ -1,128 +1,18 @@ { "transactions": [ { - "hash": "0xa9b42196895a58b31e629e0f55b5e45ab1c4229c9dc970312548291f257f769e", + "hash": "0x3fd5a6f58f25bd2a6bc180e43a5d613e12a284733c9bf7a80fd857f6ac342ad2", "transactionType": "CREATE2", - "contractName": "PositionDescriptor", - "contractAddress": "0xb5b6d1ba9d3c85d3e94331341c1c880b22e3f144", + "contractName": "UERC20Factory", + "contractAddress": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5", "function": null, - "arguments": [ - "0x000000000004444c5dc75cB358380D2e3dE08A90", - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", - "0x4554480000000000000000000000000000000000000000000000000000000000" - ], + "arguments": null, "transaction": { - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", + "from": "0xe49acc3b16c097ec88dc9352ce4cd57ab7e35b95", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060e0346100b357601f615ed138819003918201601f19168301916001600160401b038311848410176100b7578084926060946040528339810103126100b3578051906001600160a01b03821682036100b3576020810151906001600160a01b03821682036100b357604001519160c05260805260a052604051615e0590816100cc8239608051818181607a0152613f05015260a05181818161402c0152614082015260c0518181816101530152613d6c0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe610440806040526004361015610013575f80fd5b5f60a0525f3560e01c908163166c597814613dc257508063b7af3cdc14613d9b578063dc4c90d314613d57578063dee91a2c14613d0e578063e9dc6375146100af5763eb6d3a1114610063575f80fd5b346100a95760a0513660031901126100a9576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60a05180fd5b34613c29576040366003190112613c29576004356001600160a01b03811690819003613c2957602460c081359260405192838092637ba03aad60e01b82528660048301525afa8015613c35575f915f91613c53575b5066ffffffffffffff19811615613c405760a08220604051602081019182526006604082015260408152610139606082613f42565b519020604051631e2eaeaf60e01b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693909290602084602481885afa938415613c35575f94613bfd575b50815160208301516001600160a01b039182169691166101b587613e2a565b6101be82613e2a565b129687159188613bf65780925b15613bee5750955b6101e46101de614001565b836140cb565b956101f66101f0614001565b896140cb565b6101ff84614254565b976102098a614254565b99606089015160020b9562ffffff60408b01511699608060018060a01b0391015116986040516102c0526101e06102c051016102c051811060018060401b03821117613b82576040526102c05152600160a01b60019003166102c05160200152600160a01b60019003166102c051604001526102c051606001526102c051608001526102c05160a0019660ff1687526102c05160c0019760ff1688526102c05160e0019889528060081c60020b6102c051610100015260201c60020b6102c051610120015260a01c60020b6102c05161014001526102c0516101600152826102c05161018001526102c0516101a001526102c0516101c0015261030b9061458d565b906102c0516060015161031d90614828565b916102c0516080015161032f90614828565b93855115805f149660036020600298602a82849a816103bc61046b9f9c60019b610388849f9c859d613bdd576101006102c051015160020b5b6101606102c051015160020b9160ff85511690159260ff87511692614d92565b9a51158015613bcb576101206102c051015160020b915b60ff806101606102c051015160020b925116921594511692614d92565b9a6040516103e0526902ab734b9bbb0b81016960b51b826103e0510152805191829101856103e051015e6103e05101906201016960ed1b84830152805192839101602d83015e010190602f60f81b84830152805192839101600483015e0101906201016960ed1b84830152805192839101600483015e010190611e1f60f11b84830152805192839101600583015e01015f828201526103e051900301601f1981016103e051526103e051613f42565b6105ec6002605961048260606102c0510151614828565b61049260806102c0510151614828565b90600160206104af828060a01b036101a06102c051015116615481565b604051610400527f54686973204e465420726570726573656e74732061206c697175696469747920826104005101527803837b9b4ba34b7b71034b71030902ab734b9bbb0b8103b1a1603d1b604061040051015285828551968187019780898561040051015e610400510190602d60f81b84830152805192839101605a83015e010190660103837b7b617160cd1b848301527f546865206f776e6572206f662074686973204e46542063616e206d6f646966796008830152791037b9103932b232b2b6903a3432903837b9b4ba34b7b7172e3760311b60288301527702e372837b7b61026b0b730b3b2b91020b2323932b9b99d160451b6042830152805192839101605a83015e010190612e3760f11b84830152518092605b83015e01015f8282015261040051900301601f198101610400515261040051613f42565b61085c60ac600c8060206106036102c0515161492e565b60108261061660806102c0510151614828565b6102c0518201516001600160a01b031680613bb95750600a826106376142d5565b925b6102c051604001516001600160a01b031680613ba8575060028261065b6142d5565b6102c0516101c001516001600160a01b031680613b965750602a8261067e6142f9565b955b8161069762ffffff6101806102c05101511661458d565b9a6040516103c0526901020b2323932b9b99d160b51b826103c0510152805191829101856103c051015e6103c0510190612e3760f11b84830152805192839101602c83015e0101906901020b2323932b9b99d160b51b848301528051928391018d83015e0101906f02e372437b7b59020b2323932b9b99d160851b84830152805192839101601a83015e0101906b02e372332b2902a34b2b91d160a51b84830152805192839101601c83015e0101906b02e372a37b5b2b71024a21d160a51b84830152805192839101601883015e0101632e372e3760e11b828201527fe29aa0efb88f20444953434c41494d45523a204475652064696c6967656e636560108201527f20697320696d7065726174697665207768656e20617373657373696e6720746860308201527f6973204e46542e204d616b6520737572652063757272656e637920616464726560508201527f73736573206d61746368207468652065787065637465642063757272656e636960708201527f65732c2061732063757272656e63792073796d626f6c73206d6179206265206960908201526736b4ba30ba32b21760c11b60b08201526103c051900301608c81016103c05152016103c051613f42565b6102c05160200151610876906001600160a01b0316615481565b6102c05160400151610890906001600160a01b0316615481565b610320526102c0516101c08101516001600160a01b03166102e05260608101516080820151610180909201519091906108cd9062ffffff1661458d565b6101006102c051015160020b916101206102c051015160020b610360526101606102c051015160020b610380526109136101406102c051015160020b610360518561553d565b610420526102c051519361093560018060a01b0360206102c051015116615564565b610300526102c05160400151610953906001600160a01b0316615564565b6102c05160200151909690610970906001600160a01b03166155c3565b610260526102c0516040015161098e906001600160a01b03166155c3565b610280526102c0516020810151905160ff916109af919060101c8316614a76565b6101026103a08190529190068181029181159183041417156137e25760ff610340526109e36109e891610340519004614527565b61492e565b6102a0526102c051604081015190516103405191610a14919060101c83166001600160901b0316614a76565b6101806102408190529190068181029181159183041417156137e2576103405115613b15576109e3610a4b91610340519004614535565b610220526102c05160208181015191516103405192610a75921c83166001600160801b0316614a76565b6103a0519190068181029181159183041417156137e2576103405115613b15576109e3610aa791610340519004614527565b610200526102c051604081015190516103405191610ad3919060201c83166001600160801b0316614a76565b610240519190068181029181159183041417156137e2576103405115613b15576109e3610b0591610340519004614535565b6101e0526102c051602081015190516103405191610b31919060301c83166001600160701b0316614a76565b6103a0519190068181029181159183041417156137e2576103405115613b15576109e3610b6391610340519004614527565b6101c0526102c051604081015190516103405191610b8f919060301c83166001600160701b0316614a76565b610240519190068181029181159183041417156137e2576103405115613b15576109e3610bc191610340519004614535565b6101a0526040516101808190526102a081019081106001600160401b03821117613b825760405261018051526103205160206101805101526102e05160406101805101526060610180510152608061018051015260a061018051015260c06101805101526103605160e061018051015261038051610100610180510152610420515f0b6101206101805101526101406101805101526103005161016061018051015261024051610180510152610260516101a0610180510152610280516101c06101805101526102a0516101e061018051015261022051610200610180510152610200516102206101805101526101e0516102406101805101526101c0516102606101805101526101a051610280610180510152611c206101e4610655603f6020610da36040515f80516020615cb9833981519152838201525f80516020615db983398151915260408201527f2f2f7777772e77332e6f72672f323030302f737667273e3c726563742077696460608201527f74683d27323930707827206865696768743d273530307078272066696c6c3d276080820152602360f81b60a0820152610d9e600960a1836103005151808861030051018484015e81016813979f1e17b9bb339f60b91b838201520301601619810184520182613f42565b614a89565b603e82610e4f81610d9e600960136101e0610180510151600685610200610180510151816102405161018051015191604051998a96610de3828901615661565b90805192839101825e019065272063793d2760d01b82528051928391018683015e0190722720723d273132307078272066696c6c3d272360681b84830152805192839101601983015e01016813979f1e17b9bb339f60b91b838201520301601619810184520182613f42565b8282610e8d81610d9e60096013610220610180510151600685610240610180510151816101a061018051015191604051998a96610de3828901615661565b60f382610f3881610d9e60096013610260610180510151600685610280610180510151816101c061018051015191604051998a96610ecc828901615661565b90805192839101825e019065272063793d2760d01b82528051928391018683015e0190722720723d273130307078272066696c6c3d272360681b84830152805192839101601983015e01016813979f1e17b9bb339f60b91b838201520301601619810184520182613f42565b95816101606101805101519a60405160c0527f3c7376672077696474683d2232393022206865696768743d22353030222076698260c05101527f6577426f783d2230203020323930203530302220786d6c6e733d22687474703a604060c0510152751797bbbbbb973b999737b933979918181817b9bb339160511b606060c05101527f20786d6c6e733a786c696e6b3d27687474703a2f2f7777772e77332e6f72672f607660c05101526b189c9c9c97bc3634b735939f60a11b609660c0510152651e3232b3399f60d11b60a260c05101527f3c66696c7465722069643d226631223e3c6665496d61676520726573756c743d60a860c05101527f2270302220786c696e6b3a687265663d22646174613a696d6167652f7376672b60c860c05101526a1e1b5b0ed8985cd94d8d0b60aa1b60e860c05101528051918291018560c051015e60c05101907f222f3e3c6665496d61676520726573756c743d2270312220786c696e6b3a6872848301525f80516020615c9983398151915261011383015280519283910161013183015e0101907f222f3e3c6665496d61676520726573756c743d2270322220786c696e6b3a6872848301525f80516020615c99833981519152605e830152805192839101607c83015e010190631110179f60e11b848301527f3c6665496d61676520726573756c743d2270332220786c696e6b3a687265663d60428301527a0899185d184e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b602a1b6062830152805192839101607d83015e7f22202f3e3c6665426c656e64206d6f64653d226f7665726c61792220696e3d22910191909101848101919091527f70302220696e323d22703122202f3e3c6665426c656e64206d6f64653d226578605f8201527f636c7573696f6e2220696e323d22703222202f3e3c6665426c656e64206d6f64607f8201527f653d226f7665726c61792220696e323d2270332220726573756c743d22626c65609f820152780373227baba1110179f1e3332a3b0bab9b9b4b0b721363ab91603d1b60bf8201527f696e3d22626c656e644f75742220737464446576696174696f6e3d223432222060d88201527f2f3e3c2f66696c7465723e203c636c6970506174682069643d22636f726e657260f88201527f73223e3c726563742077696474683d2232393022206865696768743d223530306101188201527f222072783d223432222072793d22343222202f3e3c2f636c6970506174683e006101388201527f3c706174682069643d22746578742d706174682d612220643d224d34302031326101578201527f20483235302041323820323820302030203120323738203430205634363020416101778201527f32382032382030203020312032353020343838204834302041323820323820306101978201527f20302031203132203436302056343020413238203238203020302031203430206101b7820152671899103d1110179f60c11b6101d78201527f3c706174682069643d226d696e696d61702220643d224d3233342034343443326101df8201527f3334203435372e393439203234322e323120343633203235332034363322202f6101ff820152601f60f91b61021f8201527f3c66696c7465722069643d22746f702d726567696f6e2d626c7572223e3c66656102208201527f476175737369616e426c757220696e3d22536f757263654772617068696322206102408201527f737464446576696174696f6e3d22323422202f3e3c2f66696c7465723e0000006102608201527f3c6c696e6561724772616469656e742069643d22677261642d7570222078313d61027d8201527f2231222078323d2230222079313d2231222079323d2230223e3c73746f70206f61029d8201527f66667365743d22302e30222073746f702d636f6c6f723d2277686974652220736102bd820152713a37b816b7b830b1b4ba3c9e91189110179f60711b6102dd8201527f3c73746f70206f66667365743d222e39222073746f702d636f6c6f723d2277686102ef8201527f697465222073746f702d6f7061636974793d223022202f3e3c2f6c696e65617261030f8201526823b930b234b2b73a1f60b91b61032f8201527f3c6c696e6561724772616469656e742069643d22677261642d646f776e2220786103388201527f313d2230222078323d2231222079313d2230222079323d2231223e3c73746f706103588201527f206f66667365743d22302e30222073746f702d636f6c6f723d227768697465226103788201527f2073746f702d6f7061636974793d223122202f3e3c73746f70206f66667365746103988201527f3d22302e39222073746f702d636f6c6f723d227768697465222073746f702d6f6103b88201527f7061636974793d223022202f3e3c2f6c696e6561724772616469656e743e00006103d88201527f3c6d61736b2069643d22666164652d757022206d61736b436f6e74656e74556e6103f68201527f6974733d226f626a656374426f756e64696e67426f78223e3c726563742077696104168201527f6474683d223122206865696768743d2231222066696c6c3d2275726c282367726104368201527030b216bab8149110179f1e17b6b0b9b59f60791b6104568201527f3c6d61736b2069643d22666164652d646f776e22206d61736b436f6e74656e746104678201527f556e6974733d226f626a656374426f756e64696e67426f78223e3c72656374206104878201527f77696474683d223122206865696768743d2231222066696c6c3d2275726c28236104a78201527433b930b216b237bbb7149110179f1e17b6b0b9b59f60591b6104c78201527f3c6d61736b2069643d226e6f6e6522206d61736b436f6e74656e74556e6974736104dc8201527f3d226f626a656374426f756e64696e67426f78223e3c726563742077696474686104fc8201527f3d223122206865696768743d2231222066696c6c3d22776869746522202f3e3c61051c8201526517b6b0b9b59f60d11b61053c8201527f3c6c696e6561724772616469656e742069643d22677261642d73796d626f6c226105428201527f3e3c73746f70206f66667365743d22302e37222073746f702d636f6c6f723d226105628201527f7768697465222073746f702d6f7061636974793d223122202f3e3c73746f70206105828201527f6f66667365743d222e3935222073746f702d636f6c6f723d22776869746522206105a28201527f73746f702d6f7061636974793d223022202f3e3c2f6c696e65617247726164696105c28201526332b73a1f60e11b6105e28201527f3c6d61736b2069643d22666164652d73796d626f6c22206d61736b436f6e74656105e68201527f6e74556e6974733d227573657253706163654f6e557365223e3c7265637420776106068201527f696474683d22323930707822206865696768743d223230307078222066696c6c6106268201527f3d2275726c2823677261642d73796d626f6c2922202f3e3c2f6d61736b3e3c2f610646820152643232b3399f60d91b6106668201527f3c6720636c69702d706174683d2275726c2823636f726e65727329223e00000061066b8201526b1e3932b1ba103334b6361e9160a11b610688820152815192909183910161069483015e01017f2220783d223070782220793d22307078222077696474683d223239307078222082820152703432b4b3b43a1e911a9818383c1110179f60791b6106758201527f3c72656374207374796c653d2266696c7465723a2075726c28236631292220786106868201527f3d223070782220793d22307078222077696474683d22323930707822206865696106a68201526d33b43a1e911a9818383c1110179f60911b6106c68201527f203c67207374796c653d2266696c7465723a75726c2823746f702d726567696f6106d48201527f6e2d626c7572293b207472616e73666f726d3a7363616c6528312e35293b20746106f48201527f72616e73666f726d2d6f726967696e3a63656e74657220746f703b223e0000006107148201527f3c726563742066696c6c3d226e6f6e652220783d223070782220793d223070786107318201527f222077696474683d22323930707822206865696768743d22353030707822202f610751820152601f60f91b6107718201527f3c656c6c697073652063783d22353025222063793d22307078222072783d22316107728201527f38307078222072793d223132307078222066696c6c3d222330303022206f70616107928201527131b4ba3c9e9118171c1a9110179f1e17b39f60711b6107b28201527f3c7265637420783d22302220793d2230222077696474683d22323930222068656107c48201527f696768743d22353030222072783d223432222072793d223432222066696c6c3d6107e48201527f227267626128302c302c302c302922207374726f6b653d2272676261283235356108048201527416191a9a96191a9a96181719149110179f1e17b39f60591b61082482015260c0519003016101c4810160c051520160c051613f42565b61217f608b6005610100610180515160206101805101518360606101805101519160806101805101519060405186527f3c7465787420746578742d72656e646572696e673d226f7074696d697a6553706020875101526432b2b2111f60d91b6040875101527f3c74657874506174682073746172744f66667365743d222d31303025222066696045875101527f6c6c3d2277686974652220666f6e742d66616d696c793d2227436f75726965726065875101527f204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d223130706085875101527f782220786c696e6b3a687265663d2223746578742d706174682d61223e00000060a5875101528281516020830190808260c28b51015e8851019264010714051160dd1b60c285015260c285516020870195818760c783015e0101905f80516020615c79833981519152848301525f80516020615d5983398151915260258301525f80516020615d398339815191526045830152783832b0ba21b7bab73a1e9134b73232b334b734ba329110179f60391b60658301527f3c2f74657874506174683e203c74657874506174682073746172744f66667365607e8301527f743d223025222066696c6c3d2277686974652220666f6e742d66616d696c793d609e8301527f2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d60be8301527f73697a653d22313070782220786c696e6b3a687265663d2223746578742d706160de830152653a3416b0911f60d11b60fe83015251809261010483015e01019164010714051160dd1b6103405184015251809161010484015e610340519101015f80516020615c79833981519152828201525f80516020615d5983398151915260258201525f80516020615d3983398151915260458201527f70656174436f756e743d22696e646566696e69746522202f3e203c2f746578746065820152642830ba341f60d91b60858201527f3c74657874506174682073746172744f66667365743d22353025222066696c6c608a8201527f3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e60aa8201527f6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782260ca8201527a103c3634b7359d343932b31e9111ba32bc3a16b830ba3416b0911f60291b60ea8201528184516020860192818461010583015e01019364010714051160dd1b868601528584516020860196818861010583015e0101905f80516020615c79833981519152848301525f80516020615d5983398151915260258301527f6f3d22313030252220626567696e3d22307322206475723d223330732200000060458301527f20726570656174436f756e743d22696e646566696e69746522202f3e3c2f746560628301527f7874506174683e3c74657874506174682073746172744f66667365743d222d3560828301527f3025222066696c6c3d2277686974652220666f6e742d66616d696c793d22274360a28301527f6f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a60c28301527f653d22313070782220786c696e6b3a687265663d2223746578742d706174682d60e28301526230911f60e91b6103a05183015251809261010583015e01019064010714051160dd1b8483015251809261010583015e01015f80516020615c79833981519152828201525f80516020615d5983398151915260258201525f80516020615d3983398151915260458201527f70656174436f756e743d22696e646566696e69746522202f3e3c2f746578745060658201526a30ba341f1e17ba32bc3a1f60a91b608582015261010051900301606b810161010051520161010051613f42565b6020612418607e60776060610180510151600185608061018051015160ed8260a0610180510151926040519a8b977f3c67206d61736b3d2275726c2823666164652d73796d626f6c29223e3c726563828a01527f742066696c6c3d226e6f6e652220783d223070782220793d223070782220776960408a01527f6474683d22323930707822206865696768743d22323030707822202f3e203c7460608a01527f65787420793d22373070782220783d2233327078222066696c6c3d227768697460808a01527f652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d60a08a01527f6f6e6f73706163652220666f6e742d7765696768743d223230302220666f6e7460c08a01526c16b9b4bd329e91199b383c111f60991b60e08a0152805191829101858a015e870190602f60f81b8483015280519283910160ee83015e0101907f3c2f746578743e3c7465787420793d2231313570782220783d22333270782220848301527f66696c6c3d2277686974652220666f6e742d66616d696c793d2227436f75726960218301527f6572204e6577272c206d6f6e6f73706163652220666f6e742d7765696768743d6041830152761119181811103337b73a16b9b4bd329e91199b383c111f60491b6061830152805192839101607883015e01016a1e17ba32bc3a1f1e17b39f60a91b838201527f3c7265637420783d2231362220793d223136222077696474683d22323538222060828201527f6865696768743d22343638222072783d223236222072793d223236222066696c60a28201527f6c3d227267626128302c302c302c302922207374726f6b653d2272676261283260c2820152721a9a96191a9a96191a9a96181719149110179f60691b60e28201520301605e810184520182613f42565b60c061018051015160020b9060e061018051015160020b9161010061018051015160020b906101206101805101515f0b90600182145f14613b2957604051612461604082613f42565b6008815267023666164652d75760c41b6020820152945b03627fffff198112627fffff8213176137e25760020b908215613b1557627fffff1982145f198414166137e25761293f926048920560020b600481136139365750607960206040516124cb604082613f42565b601a8152794d3120314334312034312031303520313035203134352031343560301b82820152925b60406101608190528051906125089082613f42565b6002815261373360f01b838201908152610160518051939061252a9085613f42565b60038452848401906203139360ec1b825261016051519261254e6101605185613f42565b60038452868401926232313760e81b84526101605151936125726101605186613f42565b6003855288850191620ccccd60ea1b8352600185146001860361392c575b15613840575050505092602786602a946008828196602c82809c6126c39c5f191493845f14613839578a5b85156138325782985b861561382a5750945b156138225750955b61016051516b1e31b4b931b6329031bc1e9160a11b8f8201528a51909e8f9b829101858d015e8a019067383c111031bc9e9160c11b84830152805192839101603483015e0101907f70782220723d22347078222066696c6c3d22776869746522202f3e3c63697263848301526636329031bc1e9160c91b6028830152805192839101602f83015e01019067383c111031bc9e9160c11b84830152805192839101602f83015e01017f70782220723d2232347078222066696c6c3d226e6f6e6522207374726f6b653d8382015269113bb434ba329110179f60b11b60288201520301600a810184520182613f42565b606561016051519889956c078ce40dac2e6d67a44eae4d85609b1b85880152858251868401908082602d8c015e89019361149160f11b602d8601525f80516020615dd9833981519152602f8601527f2c313839707829223e3c7265637420783d222d313670782220793d222d313670604f8601527f78222077696474683d22313830707822206865696768743d2231383070782220606f860152763334b6361e913737b7329110179f1e3830ba3410321e9160491b608f860152602d845189860196818860a683015e0101907f22207374726f6b653d227267626128302c302c302c302e332922207374726f6b848301527f652d77696474683d2233327078222066696c6c3d226e6f6e6522207374726f6b6099830152733296b634b732b1b0b81e913937bab7321110179f60611b60b9830152700785ece7c78ce40dac2e6d67a44eae4d85607b1b60cd83015251809260de83015e01019061149160f11b848301525f80516020615dd983398151915260678301526816189c1cb83c14911f60b91b60878301527f3c7265637420783d222d313670782220793d222d31367078222077696474683d60908301527f22313830707822206865696768743d223138307078222066696c6c3d226e6f6e60b083015264329110179f60d91b60d0830152681e3830ba3410321e9160b91b60d583015251809260de83015e0101907f22207374726f6b653d2272676261283235352c3235352c3235352c3129222066848301527f696c6c3d226e6f6e6522207374726f6b652d6c696e656361703d22726f756e646099830152671110179f1e17b39f60c11b60b983015280519283910160c183015e01015f838201520301601f198101845283613f42565b61295061014061018051015161492e565b60018060a01b0360406101805101511660c061018051015160020b9160e061018051015160020b9261298183615481565b60e05261298d8161591c565b6129968561591c565b928051946004860186116137e2576136bb576129b06142f9565b80519360058501928386116136a357845191600a83018084116136a357885195600a8701928388116136a35760049c6129e891615a45565b9c909b6008810191829101116136a357806007029060078204036136a357612a1160099161492e565b99018091116136a357806007029060078204036136a357612a33600e9161492e565b94018091116136a357806007029060078204036136a357612a55600e9161492e565b95018091116136a35760078181020481036136a357600702612a769061492e565b9561016051516080526080516020015f80516020615d9983398151915290526c1cb83c1610199a9a383c14911f60991b6101605160805101526c1e3932b1ba103bb4b23a341e9160991b608051604d015280516020819201608051605a015e60805101605a0160a0518152612aea906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d198339815191529052608081016c1f24a21d101e17ba39b830b71f60991b905281516020819301608d83015e6a1e17ba32bc3a1f1e17b39f60a91b608d92909101918201525f80516020615d9983398151915260988201526c1cb83c1610199c1a383c14911f60991b60b88201526c1e3932b1ba103bb4b23a341e9160991b60c5820152815191829060200160d283015e01608d0160450160a0518152612bd5906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d198339815191529052608081016e1f2437b7b59d101e17ba39b830b71f60891b905281516020819301608f83015e6a1e17ba32bc3a1f1e17b39f60a91b608f92909101918201525f80516020615d99833981519152609a8201526c1cb83c16101a189a383c14911f60991b60ba8201526c1e3932b1ba103bb4b23a341e9160991b60c7820152815191829060200160d483015e01608f0160450160a0518152612cc2906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d19833981519152905260808101721f26b4b7102a34b1b59d101e17ba39b830b71f60691b905281516020819301609383015e6a1e17ba32bc3a1f1e17b39f60a91b609392909101918201525f80516020615d99833981519152609e8201526c1cb83c16101a1a1a383c14911f60991b60be8201526c1e3932b1ba103bb4b23a341e9160991b60cb820152815191829060200160d883015e0160930160450160a0518152612db3906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d19833981519152905260808101721f26b0bc102a34b1b59d101e17ba39b830b71f60691b905281516020819301609383015e7f3c2f746578743e3c2f673e3c67207374796c653d227472616e73666f726d3a7460939290910191820152773930b739b630ba329419191b383c16101a1999b83c14911f60411b60b38201527f3c726563742077696474683d223336707822206865696768743d22333670782260cb8201527f2072783d22387078222072793d22387078222066696c6c3d226e6f6e6522207360eb8201527f74726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e61010b8201527f3c70617468207374726f6b652d6c696e656361703d22726f756e642220643d2261012b8201527f4d38203943382e30303030342032322e393439342031362e323039392032382061014b8201527f3237203238222066696c6c3d226e6f6e6522207374726f6b653d22776869746561016b820152631110179f60e11b61018b8201527f3c636972636c65207374796c653d227472616e73666f726d3a7472616e736c6161018f820152640e8ca66c8560db1b6101af82015281519182906020016101b483015e016093016101218101630383c16160e51b90528151602081930161012583015e7f70782c2030707829222063783d22307078222063793d223070782220723d2234610125929091019182015275383c11103334b6361e913bb434ba3291179f1e17b39f60511b6101458201526080805161013b9281900392830190525161303b9161015b0190613f42565b61018051610140015191610180516040015160a0515060606101605151906020820192868452600160601b6001900319911b166101605182015260348152613084605482613f42565b5190209280156100a9578060018060801b031060071b81811c60018060401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c610340511060031b17906f8421084210842108cc6318c6db6d54be7b01c1818141808140018080c0814100004181408140c0c100414140c160221b91831c1c601f161a1760011b6101fe811660fe8216036136a35760fe9060a0515016600101906103405182116136a3576103405182161561368b5761360f6020610d9e6002602761353c84610d9e6006829b83603d9b61366c9f61365e9e61034051165f1904115f14613670578161016051517f3c67207374796c653d227472616e73666f726d3a7472616e736c617465283232828201527f3670782c20333932707829223e3c726563742077696474683d22333670782220610160518201527f6865696768743d2233367078222072783d22387078222072793d22387078222060608201527f66696c6c3d226e6f6e6522207374726f6b653d2272676261283235352c32353560808201526c16191a9a96181719149110179f60991b60a08201527f3c673e3c70617468207374796c653d227472616e73666f726d3a7472616e736c60ad8201527f617465283670782c367078292220643d224d313220304c31322e36353232203960cd8201527f2e35363538374c313820312e363037374c31332e373831392031302e3231383160ed82015272026191917199c9919901b26189a171a199a189606d1b61010d8201527f31312e333437384c32342031324c31342e343334312031322e363532324c32326101208201527f2e333932332031384c31332e373831392031332e373831394c31382032322e336101408201527f3932334c31322e363532322031342e343334314c31322032344c31312e33343761016082015270382031342e343334314c362032322e333960781b610240518201527f32334c31302e323138312031332e373831394c312e363037372031384c392e356101918201527f363538372031322e363532324c302031324c392e35363538372031312e3334376101b18201527f384c312e3630373720364c31302e323138312031302e323138314c3620312e366101d18201527f3037374c31312e3334373820392e35363538374c313220305a222066696c6c3d6101f182015269113bb434ba329110179f60b11b6102118201527f3c616e696d6174655472616e73666f726d206174747269627574654e616d653d61021b8201527f227472616e73666f726d2220747970653d22726f74617465222066726f6d3d2261023b8201527f302031382031382220746f3d2233363020313820313822206475723d2231307361025b8201527f2220726570656174436f756e743d22696e646566696e697465222f3e3c2f673e61027b820152631e17b39f60e11b61029b82015261027f81526134ac61029f82613f42565b915b61016051519788958160c05151808260c05101838b015e88018181019060a051825261010051518092846101005101905e01019060a0518252805192839101825e019060a0518252805192839101825e0160a05181526080515190818460805101825e019060a0518252805192839101825e01651e17b9bb339f60d11b815203601919810184520182613f42565b6101605151948591683d913730b6b2911d1160b91b82840152601260296103e0515180856103e051018388015e850171111610113232b9b1b934b83a34b7b7111d1160711b8282015261040051519081866104005101603b83015e01018181019060a05182526103c051518092866103c05101905e0101906c1116101134b6b0b3b2911d101160991b82527919185d184e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b60321b600d8301528051928391018583015e0161227d60f01b838201520301601d19810184520182613f42565b61016051519384917f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000828401528051918291018484015e810160a051838201520301601f198101835282613f42565b610160515191829182613e00565b0390f35b8161016051516136808282613f42565b60a0518152916134ae565b634e487b7160e01b60a051526012600452602460a051fd5b634e487b7160e01b60a051526011600452602460a051fd5b60055f60a0526136cb6005613f65565b610140526101605151610120526136e86101405161012051613f42565b600561012051526101205150601f196137016005613f65565b013660206101205101375f5b8181106137f65750505f60a052600361372581613f65565b61373461016051519182613f42565b818152601f1961374383613f65565b0136602083013760275b602a81106137ac5750602091816137a792508361016051519485926101205151808361012051018487015e8401906217171760e91b83830152805192839101602383015e01015f838201520301601f198101835282613f42565b6129b0565b60ff60f81b6137bd8260e051613fdc565b51169060261981018181116137e2576137db6001935f1a9185613fdc565b530161374d565b634e487b7160e01b5f52601160045260245ffd5b60019060ff60f81b61380a8260e051613fdc565b51165f1a61381b8261012051613fdc565b530161370d565b9050956125d5565b9050946125cd565b81986125c4565b879a6125bb565b61392797945060089591601b97602c88936027979c61016051519d8e9a6b1e31b4b931b6329031bc1e9160a11b60208d0152518091858d015e8a019067383c111031bc9e9160c11b84830152518092603483015e0101907a383c1110391e911a383c11103334b6361e913bb434ba329110179f60291b848301526b1e31b4b931b6329031bc1e9160a11b6023830152518092602f83015e01019067383c111031bc9e9160c11b84830152518092602f83015e01017a383c1110391e911a383c11103334b6361e913bb434ba329110179f60291b838201520301600419810184520182613f42565b6126c3565b505f198514612590565b6008811361397c575060796020604051613951604082613f42565b60198152784d31203143333320343920393720313133203134352031343560381b82820152926124f3565b601081136139c2575060796020604051613997604082613f42565b60198152784d31203143333320353720383920313133203134352031343560381b82820152926124f3565b60208113613a085750607960206040516139dd604082613f42565b60198152784d31203143323520363520383120313231203134352031343560381b82820152926124f3565b60408113613a4e575060796020604051613a23604082613f42565b60198152784d31203143313720373320373320313239203134352031343560381b82820152926124f3565b60808113613a93575060796020604051613a69604082613f42565b60188152774d312031433920383120363520313337203134352031343560401b82820152926124f3565b61010012613ad95760796020604051613aad604082613f42565b601a8152794d31203143312038392035372e3520313435203134352031343560301b82820152926124f3565b60796020604051613aeb604082613f42565b60188152774d312031433120393720343920313435203134352031343560401b82820152926124f3565b634e487b7160e01b5f52601260045260245ffd5b5f198203613b5d57604051613b3f604082613f42565b600a81526911b330b23296b237bbb760b11b60208201525b94612478565b604051613b6b604082613f42565b6005815264236e6f6e6560d81b6020820152613b57565b634e487b7160e01b5f52604160045260245ffd5b82613ba2602a92615481565b95610680565b82613bb4600292615481565b61065b565b82613bc5600a92615481565b92610639565b6101006102c051015160020b9161039f565b6101206102c051015160020b610368565b9050956101d3565b81926101cb565b9093506020813d602011613c2d575b81613c1960209383613f42565b81010312613c2957519285610196565b5f80fd5b3d9150613c0c565b6040513d5f823e3d90fd5b8263ed15e6cf60e01b5f5260045260245ffd5b9150508060c03d60c011613d07575b613c6c8183613f42565b81010360c08112613c295760a013613c29576040519060a082016001600160401b03811183821017613b8257604052613ca4816140b7565b8252613cb2602082016140b7565b6020830152604081015162ffffff81168103613c2957604083015260608101518060020b8103613c295760608301526080810151906001600160a01b0382168203613c295760a0916080840152015183610104565b503d613c62565b34613c29576040366003190112613c2957613d27613dea565b6024356001600160a01b0381168103613c2957613d4e613d48602093613e2a565b91613e2a565b12604051908152f35b34613c29575f366003190112613c29576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34613c29575f366003190112613c295761366c613db6614001565b60405191829182613e00565b34613c29576020366003190112613c2957602090613de6613de1613dea565b613e2a565b8152f35b600435906001600160a01b0382168203613c2957565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b6001600160a01b031680158015613f02575b613efb5760014614613e4e575b505f90565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488103613e70575061012c90565b73dac17f958d2ee523a2206206994597c13d831ec78103613e91575060c890565b736b175474e89094c44da98b954eedeac495271d0f8103613eb25750606490565b738daebade922df735c38c80c7ebd708af50815faa8103613ed4575060c71990565b732260fac5e5542a773aa44fbcfedf7c193bc2c59914613ef4575f613e49565b61012b1990565b5060631990565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168114613e3c565b5f1981146137e25760010190565b601f909101601f19168101906001600160401b03821190821017613b8257604052565b6001600160401b038111613b8257601f01601f191660200190565b613f8a6006613f65565b90613f986040519283613f42565b6006825281601f19613faa6006613f65565b0190602036910137565b90613fbe82613f65565b613fcb6040519182613f42565b8281528092613faa601f1991613f65565b908151811015613fed570160200190565b634e487b7160e01b5f52603260045260245ffd5b5f5b602081108061407b575b156140205761401b90613f34565b614003565b61402981613fb4565b907f0000000000000000000000000000000000000000000000000000000000000000905f5b81811061405b5750505090565b6020811015613fed5780836001921a6140748287613fdc565b530161404e565b15613fed577f0000000000000000000000000000000000000000000000000000000000000000811a60f81b6001600160f81b031916151561400d565b51906001600160a01b0382168203613c2957565b6001600160a01b038116915f9190831561421e57506140e99061431e565b9182511561416b5750600c8251116140ff575090565b9061410a600c613f65565b916141186040519384613f42565b600c8352601f19614129600c613f65565b01366020850137805b600c81106141405750505090565b6001906001600160f81b03196141568286613fdc565b5116831a6141648287613fdc565b5301614132565b915050614176613f80565b905f5b6003811061418657505090565b80601303601381116137e2576001600160fd1b03811681036137e257829060031b1c9060f080600f198416161660ff8316039160ff83116137e257600f6141d09160041c1661561f565b600182901b926001600160ff1b03831683036137e2576141fc915f1a6141f68588613fdc565b5361561f565b91600181018091116137e2576142176001935f1a9186613fdc565b5301614179565b9250505090565b3d1561424f573d9061423682613f65565b916142446040519384613f42565b82523d5f602084013e565b606090565b6001600160a01b038116156142cf575f8091604051602081019063313ce56760e01b825260048152614287602482613f42565b51915afa614293614225565b9015613e49578051602081146142aa575b50505f90565b8160209181010312613c29576020015160ff8111156142c957806142a4565b60ff1690565b50601290565b604051906142e4604083613f42565b60068252654e617469766560d01b6020830152565b60405190614308604083613f42565b60078252664e6f20486f6f6b60c81b6020830152565b5f809160405160208101906395d89b4160e01b825260048152614342602482613f42565b51915afa61434e614225565b90156144ad57805160208103614420575060208151918180820193849201010312613c2957519060405191614384604084613f42565b602080845236848201375f905f5b602081106143e15750506143a581613fb4565b905f5b8181106143b6575090925050565b6001906001600160f81b03196143cc8288613fdc565b51165f1a6143da8286613fdc565b53016143a8565b81811a60f881901b6001600160f81b031916614401575b50600101614392565b83614419916144136001949689613fdc565b53613f34565b92906143f8565b6040811161443e575050604051614438602082613f42565b5f815290565b810190602081818401930312613c29576020810151906001600160401b038211613c29570181603f82011215613c295760208101519061447d82613f65565b9261448b6040519485613f42565b82845260408284010111613c2957815f926040602093018386015e8301015290565b50604051614438602082613f42565b60ff1660ff81146137e25760010190565b6040519061010082016001600160401b03811183821017613b82576040525f60e0838281528260208201528260408201528260608201528260808201528260a08201528260c08201520152565b919082039182116137e257565b90601082018092116137e257565b90606482018092116137e257565b919082018092116137e257565b60ff5f199116019060ff82116137e257565b60ff6004199116019060ff82116137e257565b604d81116137e257600a0a90565b8115613b15570490565b62ffffff8116906280000082146148015781156147df575f9262ffffff5f925b169182156146195760ff8116156145de57600a6145d66145d062ffffff936144bc565b96613f34565b9593046145ad565b9362ffffff600a8406166145fc575b600a6145d662ffffff92613f34565b93600a6145d661460f62ffffff936144bc565b96925050506145ed565b90939291506146266144cd565b916005841061475f5760ff8216916004614640848761451a565b106147565760ff5f5b169260041986018681116137e25760ff61466284614550565b1681101561473a57505f905b60808601918183526146808183614543565b5f198101939084116137e2576146b18760ff6146ab8180958d60a0836146bc9c169101525116614550565b16614543565b166040880152614543565b92600184018094116137e25760ff6146f292816146df6146ed946146f898614543565b1660208801525b168661451a565b614575565b90614583565b8152600160e0820152600482111561472d5760031982019182116137e25760ff8061472a93165b166060820152614be7565b90565b61472a915060ff5f61471f565b6147509060ff61474985614550565b169061451a565b9061466e565b60ff6001614649565b83600503600581116137e2576002608085015260028101908181116137e257600181019182116137e25760ff61479f921660a086015260ff841690614543565b600281018091116137e25760ff168060208501526001190160ff81116137e2576146ed60ff6146f894816146f294166040880152600160c08801526146e6565b50506040516147ef604082613f42565b6002815261302560f01b602082015290565b5050604051614811604082613f42565b600781526644796e616d696360c81b602082015290565b905f805b835160ff82169081101561488157614859906001600160f81b0319906148529087613fdc565b5116615413565b61486c575b614867906144bc565b61482c565b90614879614867916144bc565b91905061485e565b505060ff168061488e5750565b61489c6148a1918451614543565b613fb4565b5f925f5b815160ff8216908110156149265761490691906148ce6001600160f81b03196148528387613fdc565b61490b575b6001600160f81b0319906148e79085613fdc565b5116956149006148f682613f34565b975f1a9186613fdc565b536144bc565b6148a5565b605c61492061491989613f34565b9887613fdc565b536148d3565b509193505050565b5f908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b811015614a53575b600a906904ee2d6d415b85acef8160201b811015614a37575b662386f26fc10000811015614a23575b6305f5e100811015614a12575b612710811015614a03575b60648110156149f5575b10156149ea575b600a60216149b260018501613fb4565b938401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a83530480156149e557600a90916149b7565b505090565b6001909101906149a2565b60646002910493019261499b565b61271060049104930192614991565b6305f5e10060089104930192614986565b662386f26fc1000060109104930192614979565b602093909301926904ee2d6d415b85acef8160201b9004614969565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8104614950565b818102929181159184041417156137e257565b90815115614bc55760405191614aa0606084613f42565b604083527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208401527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f60408401528051600281018091116137e257600390046001600160fe1b03811681036137e257614b1d9060021b613fb4565b90602082019080815182019560208701908151925f83525b888110614b775750506003939495965052510680600114614b6557600214614b5b575090565b603d905f19015390565b50603d90815f19820153600119015390565b600360049199969901986001603f8b5182828260121c16870101518453828282600c1c16870101518385015382828260061c1687010151600285015316840101516003820153019497614b35565b9050604051614438602082613f42565b60ff60019116019060ff82116137e257565b614bf760ff602083015116613fb4565b9060e0810151614d1a575b60c0810151614cf6575b60ff6080820151165b60ff614c268160a085015116614bd5565b16811015614c4457806030614c3d60019386613fdc565b5301614c15565b50915b825115614cf15760ff6060840151168015159081614ce0575b50614cb4575b600a835106603001806030116137e257604084018051909160f81b6001600160f81b0319165f1a90614c9b9060ff1685613fdc565b5360ff5f198183511601169052600a8351048352614c47565b6040830160ff8151169081156137e2575f19820160ff169052602e90614cda9084613fdc565b53614c66565b905060ff604085015116145f614c60565b915090565b815115613fed5760306020830153815160011015613fed57602e6021830153614c0c565b81515f1981019081116137e257614d3360259184613fdc565b53614c02565b9060020b9060020b02908160020b9182036137e257565b60405190614d5f604083613f42565b600382526226a4a760e91b6020830152565b60405190614d80604083613f42565b600382526209a82b60eb1b6020830152565b909392938060020b8015613b1557614db08282620d89e71905614d39565b600293840b930b8303614dda57505050509050155f14614dd25761472a614d50565b61472a614d71565b90614de991620d89e805614d39565b60020b8103614e0c57505015159050614e045761472a614d71565b61472a614d50565b8060ff1d8181011890620d89e882116154015763ffffffff91600160801b7001fffcb933bd6fad37aa2d162d1a5940016001831602189190600281166153e5575b600481166153c9575b600881166153ad575b60108116615391575b60208116615375575b60408116615359575b6080811661533d575b6101008116615321575b6102008116615305575b61040081166152e9575b61080081166152cd575b61100081166152b1575b6120008116615295575b6140008116615279575b618000811661525d575b620100008116615241575b620200008116615226575b62040000811661520b575b62080000166151f2575b5f126151ea575b0160201c916151c5575b60ff80911692168083035f8212848212811690858313901516176137e2575f81126151b257925b831515806151a7575b156151955760019283929091111561516957614f6d90614f6085841c614575565b90838060a01b0316614a76565b92161461515b575b614f7f8180615826565b600160601b9190911190811561514c57614f98906158b9565b905b815f815b61513857614fac9150614550565b905f83600560ff85161161510c575b50600a6004818606119404936150fa575b620186a084146150ec575b6150dc575b614fe46144cd565b9181156150605760ff16602b039260ff84116137e25760ff84166007019360ff85116137e25760ff602085019516855260026080850152602b81116137e257600181018091116137e25761504760ff61472a968180941660a08801525116614550565b1660408401525b825260c08201525f60e0820152614be7565b60ff811690600982106150aa5750600319019260ff84116137e25760ff6150988161472a961680602087015260056080870152614550565b1660a08401526004604084015261504e565b61472a9491506150d16150cc60ff926006602088015260056040880152614562565b614bd5565b16606084015261504e565b906150e6906144bc565b90614fdc565b5091600a9004916001614fd7565b92600181018091116137e25792614fcc565b90935060ff61511a84614562565b1690604d82116137e25761513191600a0a90614583565b925f614fbb565b615143600a916144bc565b91049081614f9e565b6151559061586f565b90614f9a565b615164906157aa565b614f75565b6151859061517885841c614575565b90838060a01b0316614583565b921603614f75576151649061570b565b50506001600160a01b03169050614f75565b506012841115614f3f565b600160ff1b81146137e2575f0392614f36565b906001600160a01b03168015613b1557600160c01b046001600160a01b031690614f0f565b5f1904614f05565b6b048a170391f7dc42444e8fa290910260801c90614efe565b6d2216e584f5fa1ea926041bedfe9890920260801c91614ef4565b916e5d6af8dedb81196699c329225ee6040260801c91614ee9565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91614ede565b916f31be135f97d08fd981231505542fcfa60260801c91614ed3565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614ec9565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91614ebf565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614eb5565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614eab565b916ff3392b0822b70005940c7a398e4b70f30260801c91614ea1565b916ff987a7253ac413176f2b074cf7815e540260801c91614e97565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91614e8d565b916ffe5dee046a99a2a811c461f1969c30530260801c91614e83565b916fff2ea16466c96a3843ec78b326b528610260801c91614e7a565b916fff973b41fa98c081472e6896dfb254c00260801c91614e71565b916fffcb9843d60f6159c9db58835c9266440260801c91614e68565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91614e5f565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91614e56565b916ffff97272373d413259a46990580e213a0260801c91614e4d565b6345c3193d60e11b5f5260045260245ffd5b60ff60f81b16601160f91b8114908115615467575b8115615459575b811561544b575b8115615440575090565b600960f81b14919050565b600d60f81b81149150615436565b600560f91b8114915061542f565b600360fa1b81149150615428565b80156137e2575f190190565b8061548c602a613f65565b9161549a6040519384613f42565b602a83526154a8602a613f65565b6020840190601f1901368237835115613fed5760309053825160011015613fed576078602184015360295b600181116154fb57506154e4575090565b63e22e27eb60e01b5f52600452601460245260445ffd5b90600f8116906010821015613fed57615538916f181899199a1a9b1b9c1cb0b131b232b360811b901a61552e8487613fdc565b5360041c91615475565b6154d3565b600292830b920b8212156155525750505f1990565b60020b121561556057600190565b5f90565b60881c61556f613f80565b90815190815b61557e57505090565b600f8116906010821015613fed575f1983018381116137e2576155bc926f181899199a1a9b1b9c1cb0b131b232b360811b901a9061552e9086613fdc565b9081615575565b6155cb613f80565b90815190815b6155da57505090565b600f8116906010821015613fed575f1983018381116137e257615618926f181899199a1a9b1b9c1cb0b131b232b360811b901a9061552e9086613fdc565b90816155d1565b60ff16600a8110156156465760300160ff81116137e25760f81b6001600160f81b03191690565b60370160ff81116137e25760f81b6001600160f81b03191690565b5f80516020615cb983398151915281525f80516020615db983398151915260208201527f2f2f7777772e77332e6f72672f323030302f737667273e3c636972636c652063604082015262783d2760e81b606082015260630190565b7f707822206865696768743d2232367078222072783d22387078222072793d223881527f7078222066696c6c3d227267626128302c302c302c302e362922202f3e0000006020820152603d0190565b608081901b5f19600160801b83098180821091039080820391827003298b075b4b6a5240945790619b37fd4a1115613c295714615791577f1f514b8ee5362595de309a65c03ce543f7e851e1625ea646b8fe88b81023b92d927003298b075b4b6a5240945790619b37fd4a90600160801b900990828211900360ff1b910360011c170290565b507003298b075b4b6a5240945790619b37fd4a91500490565b7003298b075b4b6a5240945790619b37fd4a8102905f197003298b075b4b6a5240945790619b37fd4a820990828083109203918083039283600160801b1115613c29571461581e57600160801b907003298b075b4b6a5240945790619b37fd4a900990828211900360801b910360801c1790565b505060801c90565b81810291905f1982820991838084109303928084039384600160401b1115613c29571461586657600160401b910990828211900360c01b910360401c1790565b50505060401c90565b620186a08102905f19620186a0820990828083109203918083039283600160801b1115613c29571461581e57600160801b90620186a0900990828211900360801b910360801c1790565b6c47bf19673df52e37f2410011d1602c1b81810291905f1990820990828083109203918083039283600160801b1115613c29571461581e57600160801b906c47bf19673df52e37f2410011d1602c1b900990828211900360801b910360801c1790565b60209060405161592c8382613f42565b5f8152828260020b5f8112615983575b508061594f62ffffff61472a951661492e565b6040519584879551918291018487015e8401908282015f8152815193849201905e01015f815203601f198101835282613f42565b925050505f038060020b9081036137e25761472a90828061594f62ffffff6040516159af604082613f42565b60018152602d60f81b84820152949550505061593c565b604051906159d5604083613f42565b6002825261323760f01b6020830152565b604051906159f5604083613f42565b6002825261323160f01b6020830152565b60405190615a15604083613f42565b6002825261062760f31b6020830152565b60405190615a35604083613f42565b60018252600760fb1b6020830152565b9060020b9060020b01627fffff198112627fffff8213176137e257600290810b0560020b6201e8471981125f14615a9f5750615a7f615a26565b90604051615a8e604082613f42565b60018152603760f81b602082015290565b620124f719811215615ad75750615ab4615a26565b90604051615ac3604082613f42565b600481526331302e3560e01b602082015290565b6161a719811215615b0f5750615aeb615a26565b90604051615afa604082613f42565b600581526431342e323560d81b602082015290565b61138719811215615b415750604051615b29604082613f42565b6002815261031360f41b60208201529061472a615a06565b5f811215615b705750604051615b58604082613f42565b6002815261313160f01b60208201529061472a6159e6565b611388811215615bb95750604051615b89604082613f42565b6002815261313360f01b602082015290604051615ba7604082613f42565b6002815261323360f01b602082015290565b6161a8811215615c025750604051615bd2604082613f42565b6002815261313560f01b602082015290604051615bf0604082613f42565b6002815261323560f01b602082015290565b620124f8811215615c375750615c16615a06565b90604051615c25604082613f42565b6002815261191b60f11b602082015290565b6201e8481315615c5257615c496159e6565b9061472a6159c6565b604051615c60604082613f42565b60028152610c8d60f21b60208201529061472a6159c656fe203c616e696d6174652061646469746976653d2273756d22206174747269627565663d22646174613a696d6167652f7376672b786d6c3b6261736536342c00003c7376672077696474683d2732393027206865696768743d2735303027207669696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220663c7465787420783d22313270782220793d22313770782220666f6e742d66616d70616e2066696c6c3d2272676261283235352c3235352c3235352c302e3629226f3d22313030252220626567696e3d22307322206475723d223330732220726574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f6e742d73697a653d2231317078222066696c6c3d227768697465223e3c7473203c67207374796c653d227472616e73666f726d3a7472616e736c61746528326577426f783d2730203020323930203530302720786d6c6e733d27687474703a207374796c653d227472616e73666f726d3a7472616e736c6174652837327078a164736f6c634300081a000a000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc24554480000000000000000000000000000000000000000000000000000000000", - "nonce": "0xb", - "chainId": "0x1" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xf1670f6207b57912bacf5dd33045fa2ae7f3754f4933c11e5d8f892bf27d8977", - "transactionType": "CREATE2", - "contractName": "TransparentUpgradeableProxy", - "contractAddress": "0xd1428ba554f4c8450b763a0b2040a4935c63f06c", - "function": null, - "arguments": [ - "0xb5b6d1BA9D3C85d3e94331341c1C880B22E3F144", - "0x1a9C8182C09F50C8318d769245beA52c32BE35BC", - "0x" - ], - "transaction": { - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052604051610d80380380610d808339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610d60833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610d608339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104c68061089a83390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516104326104685f395f601001526104325ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610206919061040f565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff811115610380575f80fd5b8301601f81018513610390575f80fd5b803567ffffffffffffffff8111156103aa576103aa61032a565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103d9576103d961032a565b6040528181528282016020018710156103f0575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea164736f6c634300081a000a608060405234801561000f575f80fd5b506040516104c63803806104c683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103d1806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f80fd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f80fd5b8401601f810186136102b8575f80fd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f80fd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea164736f6c634300081a000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103000000000000000000000000b5b6d1ba9d3c85d3e94331341c1c880b22e3f1440000000000000000000000001a9c8182c09f50c8318d769245bea52c32be35bc00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0xc", - "chainId": "0x1" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x9b4fa07bf2fb896e4d09479402eb587e89195dd3a33ceacfc95ce3e410f7fd4c", - "transactionType": "CREATE2", - "contractName": "PositionManager", - "contractAddress": "0xbd216513d74c8cf14cf4747e6aaa6420ff64ee9e", - "function": null, - "arguments": [ - "0x000000000004444c5dc75cB358380D2e3dE08A90", - "0x000000000022D473030F116dDEE9F6B43aC78BA3", - "150000", - "0xd1428Ba554F4C8450b763a0B2040A4935c63f06C", - "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" - ], - "transaction": { - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000061018080604052346105365760a0816162a38038038091610020828561053a565b8339810103126105365780516001600160a01b03811681036105365760208201516001600160a01b03811681036105365760408301516060840151936001600160a01b03851685036105365760800151926001600160a01b03841684036105365760405161008f60408261053a565b6018815260208101907f556e697377617020763420506f736974696f6e73204e4654000000000000000082526040516100c960408261053a565b600b81526a554e492d56342d504f534d60a81b602082015281516001600160401b03811161044a575f54600181811c9116801561052c575b602082101461042c57601f81116104ca575b50806020601f8211600114610469575f9161045e575b508160011b915f199060031b1c1916175f555b8051906001600160401b03821161044a5760015490600182811c92168015610440575b602083101461042c5781601f8493116103be575b50602090601f8311600114610358575f9261034d575b50508160011b915f199060031b1c1916176001555b5190208060c0524660a05260405160208101917f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86683526040820152466060820152306080820152608081526101f460a08261053a565b51902060805260e052610100526101205261014052600160085561016052604051615d45908161055e8239608051816124d5015260a051816124af015260c05181612524015260e051818181610af601528181610eb501528181611174015281816118c001528181611c3c01528181611cd1015281816120a1015281816121980152818161295801528181612a2c01528181612f1b01528181613d4601528181613e3901528181613edc01528181613ff30152818161431b0152818161457401528181614ae901528181614c6601528181614de401528181614ec901528181614f59015261576f01526101005181818161144001526131fb01526101205181818161039c01528181610a0e01528181610dc90152614efa015261014051818181611482015281816129ca01528181613a4201528181613a9e01528181613bc20152613c4b0152610160518181816116350152611fab0152f35b015190505f80610189565b60015f9081528281209350601f198516905b8181106103a6575090846001959493921061038e575b505050811b0160015561019e565b01515f1960f88460031b161c191690555f8080610380565b9293602060018192878601518155019501930161036a565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c81019160208510610422575b90601f859493920160051c01905b8181106104145750610173565b5f8155849350600101610407565b90915081906103f9565b634e487b7160e01b5f52602260045260245ffd5b91607f169161015f565b634e487b7160e01b5f52604160045260245ffd5b90508301515f610129565b5f8080528181209250601f198416905b8181106104b25750908360019493921061049a575b5050811b015f5561013c565b8501515f1960f88460031b161c191690555f8061048e565b9192602060018192868a015181550194019201610479565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c81019160208410610522575b601f0160051c01905b8181106105175750610113565b5f815560010161050a565b9091508190610501565b90607f1690610101565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761044a5760405256fe60806040526004361015610022575b3615610018575f80fd5b6100206129c0565b005b5f3560e01c80622a3e3a1461029057806301ffc9a71461028b57806305c1ee201461028657806306fdde0314610281578063081812fc1461027c578063095ea7b3146102775780630f5730f11461027257806312261ee71461026d57806316a24131146102685780631efeed331461026357806323b872dd1461025e5780632b67b570146102595780632b9261de146102545780633644e5151461024f5780633aea60f01461024a57806342842e0e146102455780634767565f146102405780634aa4a4fc1461023b5780634afe393c14610236578063502e1a16146102315780635a9d7a681461022c5780636352211e1461022757806370a082311461022257806375794a3c1461021d5780637ba03aad1461021857806386b6be7d1461021357806389097a6a1461020e57806391dd73461461020957806395d89b4114610204578063a22cb465146101ff578063ac9650d8146101fa578063ad0b27fb146101f5578063b88d4fde146101f0578063c87b56dd146101eb578063d737d0c7146101e6578063dc4c90d3146101e1578063dd46508f146101dc578063e985e9c5146101d75763f70204050361000e576122ae565b612248565b6120c5565b612082565b61203d565b611f56565b611c7c565b611c28565b611b2b565b611a7b565b6119c6565b611884565b61185a565b6117be565b61174f565b611732565b611688565b611659565b611616565b6115cc565b6114d7565b611463565b611429565b611161565b611088565b611057565b610e72565b610d58565b610ae2565b610a65565b610a32565b6109ef565b6108e0565b610839565b610806565b6106ef565b61063e565b61056c565b61033c565b6001600160a01b038116036102a657565b5f80fd5b35906102b582610295565b565b9181601f840112156102a65782359167ffffffffffffffff83116102a657602083818601950101116102a657565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103399281815201906102e5565b90565b60606003193601126102a65760043561035481610295565b6024359067ffffffffffffffff82116102a6578136039160606003198401126102a65760443567ffffffffffffffff81116102a6576103979036906004016102b7565b6060947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693909290843b156102a6576001600160a01b03604051967f2a2d80d10000000000000000000000000000000000000000000000000000000088521660048701526060602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156102a65781016024600482013591019467ffffffffffffffff82116102a6578160071b360386136102a65760606064890152819052869460e48601949392915f5b81811061051a575050506104cb5f9694869488946044856104b36104a360248b99016102aa565b6001600160a01b03166084890152565b013560a48601526003198584030160448601526123c0565b03925af19081610500575b506104f757506104f36104e7612466565b60405191829182610328565b0390f35b6104f3906104e7565b8061050e5f610514936106ae565b80610656565b5f6104d6565b91965091929394608080826105316001948b612361565b01970191019188969594939261047c565b7fffffffff000000000000000000000000000000000000000000000000000000008116036102a657565b346102a65760206003193601126102a65760207fffffffff000000000000000000000000000000000000000000000000000000006004356105ac81610542565b167f01ffc9a7000000000000000000000000000000000000000000000000000000008114908115610614575b81156105ea575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150145f6105df565b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491506105d8565b60206003193601126102a65761002060043533612a54565b5f9103126102a657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176106a957604052565b610660565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a957604052565b346102a6575f6003193601126102a6576040515f80548060011c90600181169081156107fc575b6020831082146107cf5782855260208501919081156107985750600114610748575b6104f3846104e7818603826106ae565b5f8080529250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818410610784575050016104e782610738565b805484840152602090930192600101610771565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b0190506104e782610738565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610716565b346102a65760206003193601126102a6576004355f52600460205260206001600160a01b0360405f205416604051908152f35b346102a65760406003193601126102a65760043561085681610295565b602435805f5260026020526001600160a01b0360405f2054169182331415806108af575b6108875761002092612ab5565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b50825f52600560205260ff6108d83360405f20906001600160a01b03165f5260205260405f2090565b54161561087a565b60a06003193601126102a6576004356108f881610295565b602435604435916064359260843567ffffffffffffffff81116102a6576109239036906004016102b7565b948242116109c7576109bc856109c293610020986109b6885f8099868252600260205281896001600160a01b036040832054169c8d9981604051977f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad89526001600160a01b0360208a01911681526040890192835260608901948552608089019687528160a08a20995252525252612b2c565b91612be5565b82612a54565b612ab5565b7f5a9165ff000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576004355f52600760205260206001600160a01b0360405f205416604051908152f35b346102a65760206003193601126102a6576020610a9c600435610a8781612669565b919082851c60020b9260081c60020b91612e68565b6fffffffffffffffffffffffffffffffff60405191168152f35b60031960609101126102a657600435610ace81610295565b90602435610adb81610295565b9060443590565b346102a657610af036610ab6565b91610b1a7f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30578291610c41610b54610b48610b3b865f52600260205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b91610b6a6001600160a01b03851693841461302f565b610bb46001600160a01b03821694610b83861515613094565b8433148015610cf2575b8015610ccd575b610b9d906130f9565b6001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610bf5816001600160a01b03165f52600360205260405f2090565b80546001019055610c0e855f52600260205260405f2090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610c7e610c56845f52600460205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4610cbe610cb7825f52600960205260405f2090565b5460ff1690565b610cc457005b6100209061315e565b50610b9d610ce9610b48610b3b8a5f52600460205260405f2090565b33149050610b94565b50610d2b610cb733610d15846001600160a01b03165f52600560205260405f2090565b906001600160a01b03165f5260205260405f2090565b610b8d565b7fd4b05fe0000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101006003193601126102a657600435610d7181610295565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102a65760e43567ffffffffffffffff81116102a657610dbb9036906004016102b7565b916060926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576001600160a01b035f80946104cb604051978896879586947f2b67b570000000000000000000000000000000000000000000000000000000008652166004850152610e3d602485016122f6565b6001600160a01b0360a435610e5181610295565b1660a485015260c43560c485015261010060e48501526101048401916123c0565b60606003193601126102a657602435600435610e8d82610295565b60443567ffffffffffffffff81116102a657610ead9036906004016102b7565b610ed99391937f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057610ee783336132b6565b1561102b576001600160a01b03610f09610b3b855f52600760205260405f2090565b1680610fef57505f83815260096020526040902080546001179055610fbf90610fbb90610fb56001600160a01b03851696610f5088610c0e895f52600760205260405f2090565b610f896040519384927f8d57f6b20000000000000000000000000000000000000000000000000000000060208501528960248501612495565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826106ae565b8361334b565b1590565b610fea57507f9709492381f90bdc5938bb4e3b8e35b7e0eac8af058619e27191c5a40ce79fa95f80a3005b61338c565b7f25fbd8be000000000000000000000000000000000000000000000000000000005f5260048490526001600160a01b031660245260445ffd5b5ffd5b7f0ca968d8000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346102a6575f6003193601126102a65760206110716124ac565b604051908152f35b6044359081151582036102a657565b60c06003193601126102a6576004356110a081610295565b6024356110ac81610295565b6110b4611079565b906064359260843560a43567ffffffffffffffff81116102a6576110dc9036906004016102b7565b8692919242116109c7578361115c936109bc926109b6885f6100209c8189818f81604051977f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f7689526001600160a01b0360208a0191168152600160408a019316835260608901948552608089019687528160a08a20995252525252612b2c565b6136b8565b346102a65761116f36610ab6565b6111987f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30576111b4610b48610b3b835f52600260205260405f2090565b916111ca6001600160a01b03851693841461302f565b816001600160a01b03821680946111e2821515613094565b8033148015611401575b80156113dc575b6111fc906130f9565b611217876001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611258846001600160a01b03165f52600360205260405f2090565b8054600101905561127584610c0e855f52600260205260405f2090565b61128a610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a46112c3610cb7835f52600960205260405f2090565b6113ce575b3b159182156112db575b6100208361257e565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039490941660248501526044840191909152608060648401525f6084840181905260209250839160a49183915af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f9161139a575b5016145f806112d2565b6113bc915060203d6020116113c2575b6113b481836106ae565b810190612569565b5f611390565b503d6113aa565b6123fe565b6113d78261315e565b6112c8565b506111fc6113f8610b48610b3b865f52600460205260405f2090565b331490506111f3565b50611424610cb733610d158a6001600160a01b03165f52600560205260405f2090565b6111ec565b346102a6575f6003193601126102a65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156102a65782359167ffffffffffffffff83116102a6576020808501948460051b0101116102a657565b60406003193601126102a65760043567ffffffffffffffff81116102a6576115039036906004016102b7565b60243567ffffffffffffffff81116102a6576115239036906004016114a6565b916001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a45761157f93337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d61376b565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a65760406003193601126102a6576004356115e981610295565b6001600160a01b0360243591165f52600660205260405f20905f52602052602060405f2054604051908152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576020611677600435612648565b6001600160a01b0360405191168152f35b346102a65760206003193601126102a6576001600160a01b036004356116ad81610295565b1680156116d4575f5260036020526104f360405f2054604051918291829190602083019252565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b346102a6575f6003193601126102a6576020600854604051908152f35b346102a65760206003193601126102a65760c061176d600435612669565b6117b760405180936001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a0820152f35b346102a65760206003193601126102a6576004357fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000081168091036102a6575f908152600a60209081526040918290208054600182015460029283015485516001600160a01b0393841681528383169581019590955260a082811c62ffffff169686019690965260b89190911c90920b6060840152166080820152f35b346102a65760206003193601126102a6576004355f526009602052602060405f2054604051908152f35b346102a65760206003193601126102a65760043567ffffffffffffffff81116102a6576118b59036906004016102b7565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361199e5760408135189063ffffffff60408201351663ffffffe0601f8201169260608401602084013518179282019260608401359483641fffffffe08760051b16805f905b8881831061196f5790506080929150010191011017611962576060608063ffffffff61195796169401920161376b565b6104f36104e7612452565b633b99b53d5f526004601cfd5b8294509263ffffffe0601f60808060209687969801013599848b1817998d010135011601019201869291611927565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a6576040515f6001548060011c9060018116908115611a71575b6020831082146107cf5782855260208501919081156107985750600114611a1f576104f3846104e7818603826106ae565b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b818410611a5d575050016104e782610738565b805484840152602090930192600101611a4a565b91607f16916119ee565b346102a65760406003193601126102a657600435611a9881610295565b60243580151581036102a65761002091336136b8565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611ae057505050505090565b9091929394602080611b1c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102e5565b97019301930191939290611ad1565b60206003193601126102a65760043567ffffffffffffffff81116102a657611b579036906004016114a6565b90611b6182612747565b91611b6f60405193846106ae565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611b9c82612747565b015f5b818110611c175750505f5b818110611bbf57604051806104f38682611aae565b5f80611bcc83858761278c565b90611bdc604051809381936127f1565b0390305af4611be9612466565b9015611c0f5790600191611bfd82876127fe565b52611c0881866127fe565b5001611baa565b602081519101fd5b806060602080938801015201611b9f565b60206003193601126102a657600435611c607f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611c6e81336132b6565b1561102b576100209061315e565b346102a65760806003193601126102a657600435611c9981610295565b60243590611ca682610295565b60443560643567ffffffffffffffff81116102a657611cc99036906004016102b7565b939091611cf57f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611d11610b48610b3b835f52600260205260405f2090565b91611d276001600160a01b03861693841461302f565b816001600160a01b0382168094611d3f821515613094565b8033148015611f2e575b8015611f09575b611d59906130f9565b611d74886001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611db5846001600160a01b03165f52600360205260405f2090565b80546001019055611dd284610c0e855f52600260205260405f2090565b611de7610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611e20610cb7835f52600960205260405f2090565b611efb575b3b15938415611e38575b6100208561257e565b602094505f90611e78604051978896879586947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701612812565b03925af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91611edc575b5016145f808080611e2f565b611ef5915060203d6020116113c2576113b481836106ae565b5f611ed0565b611f048261315e565b611e25565b50611d59611f25610b48610b3b865f52600460205260405f2090565b33149050611d50565b50611f51610cb733610d158b6001600160a01b03165f52600560205260405f2090565b611d49565b346102a65760206003193601126102a657600435604051907fe9dc637500000000000000000000000000000000000000000000000000000000825230600483015260248201525f816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9575f90611fea575b6104f39060405191829182610328565b503d805f833e611ffa81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a6570181601f820112156102a6576104f39181602061203893519101612840565b611fda565b346102a6575f6003193601126102a65760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6001600160a01b0360405191168152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60406003193601126102a65760043567ffffffffffffffff81116102a6576120f19036906004016102b7565b6024356001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a457337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d80421161221d576040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f818061218b6024820187896123c0565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9576121cd575b610020613746565b3d805f833e6121dc81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a657019080601f830112156102a657815161221692602001612840565b50806121c5565b7fbfb22adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102a65760406003193601126102a657602060ff6122a260043561226c81610295565b6001600160a01b036024359161228183610295565b165f526005845260405f20906001600160a01b03165f5260205260405f2090565b54166040519015158152f35b600319360160c081126102a65760a0136102a65760206122d860a4356122d381610295565b6128a3565b6040519060020b8152f35b359065ffffffffffff821682036102a657565b6001600160a01b0360243561230a81610295565b1681526001600160a01b0360443561232181610295565b16602082015260643565ffffffffffff81168091036102a657604082015260843565ffffffffffff811681036102a65765ffffffffffff60609116910152565b65ffffffffffff6123ba606080936001600160a01b03813561238281610295565b1686526001600160a01b03602082013561239b81610295565b166020870152836123ae604083016122e3565b166040870152016122e3565b16910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6040513d5f823e3d90fd5b604051906102b56080836106ae565b67ffffffffffffffff81116106a957601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b604051906124616020836106ae565b5f8252565b3d15612490573d9061247782612418565b9161248560405193846106ae565b82523d5f602084013e565b606090565b6040906103399492815281602082015201916123c0565b467f0000000000000000000000000000000000000000000000000000000000000000036124f7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f000000000000000000000000000000000000000000000000000000000000000060408201524660608201523060808201526080815261256360a0826106ae565b51902090565b908160209103126102a6575161033981610542565b1561258557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fd5b156125ea57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b5f5260026020526001600160a01b0360405f205416906102b58215156125e3565b5f60806040516126788161068d565b82815282602082015282604082015282606082015201525f52600960205260405f2054807fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f206127446127346002604051936126de8561068d565b6001600160a01b03815416855261272661271c60018301546001600160a01b038116602089015262ffffff8160a01c16604089015260b81c60020b90565b60020b6060870152565b01546001600160a01b031690565b6001600160a01b03166080830152565b91565b67ffffffffffffffff81116106a95760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156127ec5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102a657019081359167ffffffffffffffff83116102a65760200182360381136102a6579190565b61275f565b908092918237015f815290565b80518210156127ec5760209160051b010190565b90926001600160a01b03608093816103399896168452166020830152604082015281606082015201916123c0565b92919261284c82612418565b9161285a60405193846106ae565b8294818452818301116102a6578281602093845f96015e010152565b8060020b036102a657565b908160209103126102a6575161033981612876565b62ffffff8116036102a657565b6001600160a01b03604051917f6276cbbe000000000000000000000000000000000000000000000000000000008352816004356128df81610295565b166004840152816024356128f281610295565b16602484015262ffffff60443561290881612896565b16604484015260643561291a81612876565b60020b606484015261294160843561293181610295565b6001600160a01b03166084850152565b1660a482015260208160c4815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af15f918161298f575b506103395750627fffff90565b6129b291925060203d6020116129b9575b6129aa81836106ae565b810190612881565b905f612982565b503d6129a0565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633141580612a21575b6129f957565b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314156129f3565b906001600160a01b03600160ff83161b92165f52600660205260405f209060081c5f5260205260405f20818154188091551615612a8d57565b7f1fb09b80000000000000000000000000000000000000000000000000000000005f5260045ffd5b906001600160a01b038091845f526004602052612b038160405f20906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b90612b356124ac565b91604051927f19010000000000000000000000000000000000000000000000000000000000008452600284015260228301525f604060428420938281528260208201520152565b91908260409103126102a6576020823592013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff601b9116019060ff8211612bd157565b612b92565b90604010156127ec5760400190565b90833b612d7a5760418103612cee5790602092612c6e83612c46612c40612c1a612c125f98880188612b7c565b949097612bd6565b357fff000000000000000000000000000000000000000000000000000000000000001690565b60f81c90565b935b604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156113c9576001600160a01b035f5116908115612cc6576001600160a01b031603612c9e57565b7f815e1d64000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b9060408203612d5257602092612d0b825f94612c6e940190612b7c565b929092612d4c612d47612d417f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c90565b60ff1690565b612bbf565b93612c48565b7f4be6321b000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092612dc1936001600160a01b03602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501612495565b0392165afa9081156113c9577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000915f91612e49575b501603612e2157565b7fb0669cbc000000000000000000000000000000000000000000000000000000005f5260045ffd5b612e62915060203d6020116113c2576113b481836106ae565b5f612e18565b9290612ea39260a092604051956026870152600686015260038501523084525f603a600c860120948160408201528160208201525220614bbf565b60068101809111612bd15760408051602081810194855291810192909252612f0f929091612ed48160608101610f89565b519020604051809381927f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9576fffffffffffffffffffffffffffffffff915f91612f6057501690565b612f82915060203d602011612f86575b612f7a81836106ae565b810190612f8d565b1690565b503d612f70565b908160209103126102a6575190565b60206001600160a01b03916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156113c9575f91613010575b50151590565b613029915060203d602011612f8657612f7a81836106ae565b5f61300a565b1561303657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b1561309b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b1561310057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b6001600160a01b0361317b610b3b835f52600760205260405f2090565b1690811561328e575f81815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556131cb610c56825f52600760205260405f2090565b813b6131f8575b7fa0ebb1de82db929a9153472f37d3a66dbede4436258311ad0f52a35a2c91d1505f80a3565b5a7f000000000000000000000000000000000000000000000000000000000000000080911061328957823b156102a6575f60405180927faf45dd140000000000000000000000000000000000000000000000000000000082528183878261326789600483019190602083019252565b0393f1613275575b506131d2565b8061050e5f613283936106ae565b5f61326f565b6137d4565b7f237e6c28000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b036132c783612648565b16916001600160a01b03821692831492831561332a575b5082156132ea57505090565b60ff9250906001600160a01b0361330361332593612648565b165f52600560205260405f20906001600160a01b03165f5260205260405f2090565b541690565b908093505f5260046020526001600160a01b0360405f20541614915f6132de565b803b1561336457815f92918360208194519301915af190565b7f7c402b21000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f8d57f6b2000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f81ea5e9e0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fb1a9116f000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7face944810000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60206001600160a01b03807f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31931693845f526005835261370c8160405f20906001600160a01b03165f5260205260405f2090565b951515957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff88161790556040519586521693a3565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d565b909291938284036137ac575f5b848110156137a45760019061379e81850161379483888b61278c565b913560f81c6137fc565b01613778565b509350505050565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fed43c3a6000000000000000000000000000000000000000000000000000000005f5260045ffd5b909190600b8110156139175780613827575061381b906102b5926149cc565b94939093929192614b63565b60048103613846575061383d906102b592614185565b93929092614a79565b60018103613868575061385c906102b5926149cc565b94939093929192614a0e565b600281036138975750613881613891916102b5936145df565b9890979691959295949394613cc2565b9561478a565b600581036138c357506138b06138bd916102b593614481565b9790969591949294613cc2565b94614543565b91600383146138ff57505061102891505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f52600452602490565b6102b592509061390e91614185565b939290926141c1565b600d8103613933575061392d906102b592613caf565b90614147565b6011810361395b575061394c613955916102b593613e9e565b92909192613cc2565b9161412c565b600b810361398f5750613989613977613983926102b594613e9e565b93829493929193613f73565b92613fa1565b91613fe2565b600e81036139c157506139b56139ab6139bb926102b594613e9e565b9282949291613cc2565b92613eb6565b91613eca565b601281036139dc57506139d7906102b592613ac8565b613e32565b601381036139f857506139f2906102b592613caf565b90613d25565b60148103613a1f5750613a11613a19916102b593613caf565b919091613cc2565b90613d07565b60158103613a6d5750613a38613a68916102b593613ac8565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690613b54565b613c39565b9160168314613a8257505061102891506138d4565b6102b59250613ac391613a9491613ac8565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613ad4565b613bb0565b90602011611962573590565b613adf903090614bdf565b7f80000000000000000000000000000000000000000000000000000000000000008214613b4f578115613b3e575b8111613b165790565b7ff4d678b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050613b495f614c5f565b90613b0d565b905090565b90613b5f305f614bdf565b907f80000000000000000000000000000000000000000000000000000000000000008314613baa578215613b98575b508111613b165790565b613ba3919250614c5f565b905f613b8e565b50905090565b80613bb85750565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b156102a6575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af180156113c957613c2f5750565b5f6102b5916106ae565b80613c415750565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af180156113c957613c2f5750565b9190604011611962576020823592013590565b6001600160a01b03811660018103613cfb5750507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b60020361033957503090565b90613d1182614cd1565b9081613d1c57505050565b6102b592614d37565b90613d2f82614ddd565b908115613e01578111613dd5576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6575f9283926040519485809481937f80f0b44c0000000000000000000000000000000000000000000000000000000083526020600484016001600160a01b036040820194168152015203925af180156113c957613dc75750565b8061050e5f6102b5936106ae565b6102b5917f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90613eca565b505050565b7f80000000000000000000000000000000000000000000000000000000000000008114612bd1575f0390565b613e5d81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b907f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f831215613e94576139896102b593613e06565b6102b59291613eca565b90606011611962578035916040602083013592013590565b9081613ec6576103399150614ddd565b5090565b90918015613e01576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156113c957613f5e5750565b80613f6a5f80936106ae565b8003126102a657565b15613f9d577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b3090565b907f80000000000000000000000000000000000000000000000000000000000000008203613fd3576103399150614cd1565b81613ec6576103399150614c5f565b908215613e01576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f8160248183885af180156113c957614118575b506001600160a01b0381166140ce5750506020906004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b6140cb9060203d602011612f8657612f7a81836106ae565b50565b5f93602093926140dd92614ea7565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b8061050e5f614126936106ae565b5f614064565b9161413e6102b593826139bb82614ddd565b6139bb82614ddd565b906102b59161417c7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c918261398982614c5f565b61398982614c5f565b919082359260208101359260408201359263ffffffff60608401351683019063ffffffff82351693602080840193860101910110611962579190565b939290927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6141f186826132b6565b156143ae575061420085612669565b9290938360081c60020b958460201c60020b9661423761422289838a8d612e68565b6fffffffffffffffffffffffffffffffff1690565b966142418a612648565b955f6142558c5f52600960205260405f2090565b5561425f8b614faa565b5f9989614291575b505050505050508160ff1661427e575b5050505050565b614287946151b4565b5f80808080614277565b60409495969a509061430e916142d16142b16142ac8d61507e565b613e06565b916142c76142bd612409565b97889060020b9052565b60020b6020870152565b858501528b606085015284519a8b9485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9575f965f9161436e575b509061435d826143629493986150b0565b6150ed565b5f808080808080614267565b61435d97506143629392915061439b9060403d6040116143a7575b61439381836106ae565b8101906143e3565b9790979192935061434c565b503d614389565b6001600160a01b03907f0ca968d8000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b91908260409103126102a6576020825192015190565b6060610339959361444a83610140956001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201528161012082015201916123c0565b91908260a08101359260c08201359260e083013592610100810135926101208201359263ffffffff6101408401351683019063ffffffff82351693602080840193860101910110611962579190565b91908260a09103126102a6576040516144e88161068d565b608080829480356144f881610295565b8452602081013561450881610295565b6020850152604081013561451b81612896565b6040850152606081013561452e81612876565b606085015201359161453f83610295565b0152565b90916102b59796959493926fffffffffffffffffffffffffffffffff6145d861459860a061457136886144d0565b207f0000000000000000000000000000000000000000000000000000000000000000615264565b5050506145a484615303565b6145ad86615303565b6145c088356145bb81610295565b614ddd565b916145d260208a01356145bb81610295565b9361564f565b169261478a565b9091819260a08301359260c08101359260e08201359261010083013592610120810135926101408201359263ffffffff6101608401351683019063ffffffff82351693602080840193860101910110611962579190565b600260806102b593614680813561464c81610295565b85906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b600184016146c9602083013561469581610295565b82906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60408201356146d781612896565b81547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000606086013561472081612876565b60b81b79ffffff0000000000000000000000000000000000000000000000169360a01b1691161717905501359161475683610295565b01906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b90919496929793959760085492600184016008556001600160a01b038a16996147b48b1515613094565b845f5260026020526001600160a01b0360405f20541661496e5761488a6149259861491f93876102b59e61481986614800614917986001600160a01b03165f52600360205260405f2090565b80546001019055610c0e845f52600260205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461484836886144d0565b63ffffff007fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000060a066ffffff000000009320169260081b169260201b16171790565b928361489e875f52600960205260405f2090565b55837fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000168561490760016148fc847fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b015460b81c60020b90565b60020b1561492b575b505061507e565b9236906144d0565b906156fc565b506157de565b614962614967927fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b614636565b5f85614910565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152fd5b909181359260208301359260408101359260608201359263ffffffff60808401351683019063ffffffff82351693602080840193860101910110611962579190565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614a4283826132b6565b156143ae57509561435d92826142ac6102b59899614a6d614a65614a7397612669565b93909261507e565b916156fc565b906150b0565b949394929091927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614aac82826132b6565b156143ae57506102b59495614b5e9282614ac8614a7394612669565b90614a6d6fffffffffffffffffffffffffffffffff614b58614b0d60a085207f0000000000000000000000000000000000000000000000000000000000000000615264565b505050614b1f8660081c60020b615303565b614b2e8760201c60020b615303565b614b416001600160a01b03885116614ddd565b916145d26001600160a01b0360208a015116614ddd565b1661507e565b6157de565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614b9783826132b6565b156143ae575095614b5e9282614a6d6102b59899614bb7614a7396612669565b92909161507e565b6040516020810191825260066040820152604081526125636060826106ae565b6001600160a01b038116614bf257503190565b906001600160a01b0360246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa9081156113c9575f91614c46575090565b610339915060203d602011612f8657612f7a81836106ae565b614c8a81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8213614c9c575061033990613e06565b6001600160a01b03907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b038116614ce457504790565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290602090829060249082906001600160a01b03165afa9081156113c9575f91614c46575090565b9091906001600160a01b038116614d6457505f808080614d5894865af11590565b614d5f5750565b613532565b91906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d11600185511416171692828152826020820152015215614dcf5750565b6001600160a01b031661345f565b614e0881307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8212614e14575090565b6001600160a01b03907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b03809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa9081156113c9575f91614c46575090565b9091906001600160a01b0383163003614eef576102b592506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690614d37565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0394851660048201527f00000000000000000000000000000000000000000000000000000000000000008516602482015291841660448301529190921660648301525f908290608490829084905af180156113c957613dc75750565b805f5260026020525f6001600160a01b03604082205416614fcc8115156125e3565b8082526003602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055615010835f52600260205260405f2090565b80548360031b906001600160a01b03808616831b921b191617905561503d835f52600460205260405f2090565b80548360031b906001600160a01b03808616831b921b19161790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4565b905f821261508857565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b6150d3906150c58360801d8260801d0361592c565b92600f0b90600f0b0361592c565b6fffffffffffffffffffffffffffffffff169060801b1790565b929190926fffffffffffffffffffffffffffffffff8160801d94816151118761593a565b9116918291161061519957506fffffffffffffffffffffffffffffffff929350600f0b908261513f8361593a565b9116928391161061514e575050565b906151696fffffffffffffffffffffffffffffffff9261593a565b907f12816f22000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b6fffffffffffffffffffffffffffffffff906151698661593a565b5f81815260076020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091556001600160a01b039081169561525895610fbb959394919390929091604051957fb1a9116f00000000000000000000000000000000000000000000000000000000602088015260248701521660448501526064840152608483015260a482015260a48152610fb560c4826106ae565b61525f5750565b6135e5565b602090602461527b6001600160a01b039594614bbf565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156113c9575f926152e2575b506001600160a01b038216918060a01c60020b9162ffffff808360b81c169260d01c1690565b6152fc91925060203d602011612f8657612f7a81836106ae565b905f6152bc565b60020b908160ff1d82810118620d89e881116156495763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661562d575b60048116615611575b600881166155f5575b601081166155d9575b602081166155bd575b604081166155a1575b60808116615585575b6101008116615569575b610200811661554d575b6104008116615531575b6108008116615515575b61100081166154f9575b61200081166154dd575b61400081166154c1575b61800081166154a5575b620100008116615489575b62020000811661546e575b620400008116615453575b620800001661543a575b5f12615413575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0461540c565b6b048a170391f7dc42444e8fa290910260801c90615405565b6d2216e584f5fa1ea926041bedfe9890920260801c916153fb565b916e5d6af8dedb81196699c329225ee6040260801c916153f0565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916153e5565b916f31be135f97d08fd981231505542fcfa60260801c916153da565b916f70d869a156d2a1b890bb3df62baf32f70260801c916153d0565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916153c6565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916153bc565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916153b2565b916ff3392b0822b70005940c7a398e4b70f30260801c916153a8565b916ff987a7253ac413176f2b074cf7815e540260801c9161539e565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91615394565b916ffe5dee046a99a2a811c461f1969c30530260801c9161538a565b916fff2ea16466c96a3843ec78b326b528610260801c91615381565b916fff973b41fa98c081472e6896dfb254c00260801c91615378565b916fffcb9843d60f6159c9db58835c9266440260801c9161536f565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91615366565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161535d565b916ffff97272373d413259a46990580e213a0260801c91615354565b82615959565b936001600160a01b0383166001600160a01b038316116156f4575b6001600160a01b0385811695908316861161568b57505061033993506159b7565b92909391946001600160a01b038216115f146156e85782916156b1916156b795946159b7565b93615987565b6fffffffffffffffffffffffffffffffff81166fffffffffffffffffffffffffffffffff8316105f14613b4f575090565b91505061033992615987565b90919061566a565b95939460409161576261570d612409565b60088a901c60020b81529260208a811c60020b908501528585850152866060850152845198899485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156113c9575f945f926157ba575b5081949560ff166157b157505050565b6102b592615a00565b9094506157d6915060403d6040116143a75761439381836106ae565b90935f6157a1565b908160801d600f0b91600f0b915f8112806158f7575b6158955750505f81128061585e575b61580b575050565b9061581b61422261102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff91821660045216602452604490565b506fffffffffffffffffffffffffffffffff8061587a83613e06565b16166fffffffffffffffffffffffffffffffff831610615803565b906fffffffffffffffffffffffffffffffff6158b361102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff9283166004521616602452604490565b506fffffffffffffffffffffffffffffffff61591282613e06565b166fffffffffffffffffffffffffffffffff8316106157f4565b9081600f0b91820361508857565b5f81600f0b12615088576fffffffffffffffffffffffffffffffff1690565b7f8b86327a000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b916001600160a01b03610339936159ac93828116838316116159b1575b031690615b43565b615d1b565b906159a4565b916159ac91610339936001600160a01b0382166001600160a01b038216116159fa575b6001600160a01b03906159f1828416838316615bff565b92031691615c79565b906159da565b615a6a9192815f5260076020526001600160a01b0360405f20541693604051927fd8865c2700000000000000000000000000000000000000000000000000000000602085015260248401526044830152606482015260648152615a646084826106ae565b8261334b565b15615a725750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fd8865c27000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fe94f10e20000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b156102a657565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000008409928280851094039380850394615b91868511615b3c565b14615bf8576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156102a65714615c70576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395615cb9878611615b3c565b14615d13579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b906fffffffffffffffffffffffffffffffff82168092036150885756fea164736f6c634300081a000a000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba300000000000000000000000000000000000000000000000000000000000249f0000000000000000000000000d1428ba554f4c8450b763a0b2040a4935c63f06c000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "nonce": "0xd", - "chainId": "0x1" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xc56194b3e8eb020eefcd6aafa6e445d331f0f174adf504ec831ce6a0ebf9a059", - "transactionType": "CREATE2", - "contractName": "V4Quoter", - "contractAddress": "0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203", - "function": null, - "arguments": [ - "0x000000000004444c5dc75cB358380D2e3dE08A90" - ], - "transaction": { - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a034607b57601f61175038819003918201601f19168301916001600160401b03831184841017607f57808492602094604052833981010312607b57516001600160a01b0381168103607b576080526040516116bc908161009482396080518181816101b5015281816102ab015281816105b001526114910152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063147d2af91461087f578063587330731461082d578063595323f5146107815780636a36a38c1461065657806391dd73461461052c578063aa2f15011461037f578063aa9d21cb1461032d578063ca253dc9146101d9578063dc4c90d31461016b5763eebe0c6a14610087575f80fd5b346101675761009536610d77565b30330361013f57806101016100fb6100f660a06fffffffffffffffffffffffffffffffff9501936100c5856110fd565b6100de876100d560c0850161110a565b16600f0b611289565b906100ec60e0840184611127565b9490933690610c2a565b61134b565b916110fd565b156101355781165b7fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60801d8116610109565b7f29c3b7ee000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b34610167575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101675760406101e936610a53565b5f806102915f61022b6102575a9688519283917f6a36a38c00000000000000000000000000000000000000000000000000000000602084015260248301610e99565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610936565b8651809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610de7565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908161030d575b506103055750506102f76102f16102e9611020565b925a9061104f565b916112b5565b905b82519182526020820152f35b9091506102f9565b610328903d805f833e6103208183610936565b810190610fbd565b6102d4565b3461016757604061033d36610c93565b5f806102915f61022b6102575a9688519283917feebe0c6a0000000000000000000000000000000000000000000000000000000060208401526024830161105c565b346101675761038d36610e2a565b30330361013f57602081016103a281836111a7565b90506103b06040840161110a565b916103ba846111fb565b9190815b610400576fffffffffffffffffffffffffffffffff847fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90919261040d82866111a7565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85018581116104dc5761046561045e6fffffffffffffffffffffffffffffffff926104ac966104819561121c565b9788611588565b939061047460808a018a611127565b939092169085159061134b565b90156105095761049390600f0b611178565b6fffffffffffffffffffffffffffffffff165b936111fb565b9180156104dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190816103be565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105159060801d611178565b6fffffffffffffffffffffffffffffffff166104a6565b346101675760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101675760043567ffffffffffffffff811161016757366023820112156101675780600401359067ffffffffffffffff82116101675736602483830101116101675773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361062e575f6024819284806040519384930183378101838152039082305af16105f9611020565b9061060657602081519101fd5b7fe0752a5a000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101675761066436610e2a565b30330361013f57602081019061067a82826111a7565b90506106886040830161110a565b91610692816111fb565b935f915b8383106106db576fffffffffffffffffffffffffffffffff857fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091929361075c6fffffffffffffffffffffffffffffffff61073d61072860019461071a6107138a61070d8b8b6111a7565b9061121c565b9b8c611588565b948593919216600f0b611289565b61073560808d018d611127565b93909261134b565b9015610767576fffffffffffffffffffffffffffffffff165b966111fb565b959493019190610696565b60801d6fffffffffffffffffffffffffffffffff16610756565b346101675761078f36610d77565b30330361013f57806107db6100fb6100f660a06fffffffffffffffffffffffffffffffff9501936107bf856110fd565b866107cc60c0840161110a565b16906100ec60e0840184611127565b1561081a576107ec9060801d611178565b81167fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b61082690600f0b611178565b8116610109565b3461016757604061083d36610c93565b5f806102915f61022b6102575a9688519283917f595323f50000000000000000000000000000000000000000000000000000000060208401526024830161105c565b3461016757604061088f36610a53565b5f806102915f61022b6102575a9688519283917faa2f150100000000000000000000000000000000000000000000000000000000602084015260248301610e99565b6060810190811067ffffffffffffffff8211176108ed57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176108ed57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176108ed57604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361016757565b359062ffffff8216820361016757565b35908160020b820361016757565b67ffffffffffffffff81116108ed57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561016757803590610a07826109b6565b92610a156040519485610936565b8284526020838301011161016757815f926020809301838601378301015290565b35906fffffffffffffffffffffffffffffffff8216820361016757565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101675760043567ffffffffffffffff81116101675760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82840301126101675760405191610ac8836108d1565b610ad482600401610977565b8352602482013567ffffffffffffffff811161016757820190806023830112156101675760048201359167ffffffffffffffff83116108ed578260051b60405193610b226020830186610936565b845281016024019060208401908383116101675760248101915b838310610b615750505050506020830152610b5990604401610a36565b604082015290565b823567ffffffffffffffff8111610167576004908301019060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083880301126101675760405190610bb28261091a565b610bbe60208401610977565b8252610bcc60408401610998565b6020830152610bdd606084016109a8565b6040830152610bee60808401610977565b606083015260a08301359167ffffffffffffffff831161016757610c1a886020809695819601016109f0565b6080820152815201920191610b3c565b91908260a091031261016757604051610c428161091a565b6080610c8e818395610c5381610977565b8552610c6160208201610977565b6020860152610c7260408201610998565b6040860152610c83606082016109a8565b606086015201610977565b910152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101675760043567ffffffffffffffff8111610167576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828403011261016757604051916080830183811067ffffffffffffffff8211176108ed57604052610d278183600401610c2a565b835260a48201358015158103610167576020840152610d4860c48301610a36565b604084015260e48201359167ffffffffffffffff831161016757610d6f92016004016109f0565b606082015290565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610167576004359067ffffffffffffffff8211610167577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610100920301126101675760040190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610167576004359067ffffffffffffffff8211610167577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826060920301126101675760040190565b60208152608081019173ffffffffffffffffffffffffffffffffffffffff815116602083015260208101519260606040840152835180915260a0830190602060a08260051b8601019501915f905b828210610f1157505050506fffffffffffffffffffffffffffffffff604060609201511691015290565b90919295602080610faf837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608a6001960301865260a060808c5173ffffffffffffffffffffffffffffffffffffffff815116845262ffffff868201511686850152604081015160020b604085015273ffffffffffffffffffffffffffffffffffffffff60608201511660608501520151918160808201520190610de7565b980192019201909291610ee7565b6020818303126101675780519067ffffffffffffffff8211610167570181601f8201121561016757805190610ff1826109b6565b92610fff6040519485610936565b8284526020838301011161016757815f9260208093018386015e8301015290565b3d1561104a573d90611031826109b6565b9161103f6040519384610936565b82523d5f602084013e565b606090565b919082039182116104dc57565b61012060606110fa93602084526110c160208501825173ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b6020810151151560c08501526fffffffffffffffffffffffffffffffff60408201511660e0850152015191610100808201520190610de7565b90565b3580151581036101675790565b356fffffffffffffffffffffffffffffffff811681036101675790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610167570180359067ffffffffffffffff82116101675760200191813603831361016757565b600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081146104dc575f0390565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610167570180359067ffffffffffffffff821161016757602001918160051b3603831361016757565b3573ffffffffffffffffffffffffffffffffffffffff811681036101675790565b919081101561125c5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6181360301821215610167570190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f800000000000000000000000000000000000000000000000000000000000000081146104dc575f0390565b7fecbd9804000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000060208301511603611309576024015190565b611347906040519182917f6190b2b0000000000000000000000000000000000000000000000000000000008352602060048401526024830190610de7565b0390fd5b92949390801561156d576401000276a4915b806040519261136b846108d1565b1515978884526020840194868652604085019073ffffffffffffffffffffffffffffffffffffffff1681526040519586957ff3cd914c00000000000000000000000000000000000000000000000000000000875260048701611417908b73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b51151560a48701525160c48601525173ffffffffffffffffffffffffffffffffffffffff1660e48501526101048401610120905281610124850152610144840137808201610144015f9052601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681010361014401817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691815a6020945f91f1908115611562575f91611530575b5080945f8312145f146115285760801d5b600f0b036114f95750565b60a090207f7a5ed734000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b600f0b6114ee565b90506020813d60201161155a575b8161154b60209383610936565b8101031261016757515f6114dd565b3d915061153e565b6040513d5f823e3d90fd5b73fffd8963efd1fc6a506488495d951d5263988d259161135d565b905f60806040516115988161091a565b82815282602082015282604082015282606082015201526115b8826111fb565b73ffffffffffffffffffffffffffffffffffffffff82169173ffffffffffffffffffffffffffffffffffffffff82168084105f14611690575073ffffffffffffffffffffffffffffffffffffffff905b1680921492602081013562ffffff8116809103610167576040820135918260020b80930361016757606001359273ffffffffffffffffffffffffffffffffffffffff84168094036101675773ffffffffffffffffffffffffffffffffffffffff90604051956116768761091a565b865216602085015260408401526060830152608082015291565b91505073ffffffffffffffffffffffffffffffffffffffff829161160856fea164736f6c634300081a000a000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90", - "nonce": "0xe", - "chainId": "0x1" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x3d71d82b2c02425520a1296de1513ab45c4fc6e4768582673ae68aff4bb1b3f0", - "transactionType": "CREATE2", - "contractName": "StateView", - "contractAddress": "0x7ffe42c4a5deea5b0fec41c94c136cf115597227", - "function": null, - "arguments": [ - "0x000000000004444c5dc75cB358380D2e3dE08A90" - ], - "transaction": { - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a03460b357601f610e9738819003918201601f19168301916001600160401b0383118484101760b75780849260209460405283398101031260b357516001600160a01b038116810360b357608052604051610dcb90816100cc823960805181818161012b01528181610246015281816102db0152818161039e0152818161048101528181610549015281816105db01528181610622015281816106870152818161073401528181610810015261096a0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80631c7ccb4c146108ac57806353e9c1fb146107c95780637c40f1fe146106ab5780638a2bb9e61461064657806397fd7b421461060b5780639ec538c8146105a2578063c815641c1461050b578063caedab54146103f6578063dacf1d2f146102ff578063dc4c90d314610291578063f0928f29146101e65763fa6793d51461009d575f80fd5b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576100d7600435610d2f565b600381018091116101b957604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f90610177575b6020906fffffffffffffffffffffffffffffffff60405191168152f35b506020813d6020116101a6575b8161019160209383610a2b565b810103126101a2576020905161015a565b5f80fd5b3d9150610184565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b346101a2576101fd6101f7366109f7565b90610d8b565b604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f90610177576020906fffffffffffffffffffffffffffffffff60405191168152f35b346101a2575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101a25760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760243573ffffffffffffffffffffffffffffffffffffffff811681036101a2576103566109e7565b6064358060020b81036101a2576103f2926103c2926040519260843560268501526006840152600383015281525f603a600c83012091816040820152816020820152526004357f0000000000000000000000000000000000000000000000000000000000000000610bc0565b604080516fffffffffffffffffffffffffffffffff90941684526020840192909252908201529081906060820190565b0390f35b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576104386104306109d7565b600435610d55565b604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f906104d8575b6040908151906fffffffffffffffffffffffffffffffff8116825260801d600f0b6020820152f35b506020813d602011610503575b816104f260209383610a2b565b810103126101a257604090516104b0565b3d91506104e5565b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257608062ffffff8061056d6004357f0000000000000000000000000000000000000000000000000000000000000000610c63565b92949173ffffffffffffffffffffffffffffffffffffffff6040519616865260020b6020860152166040840152166060820152f35b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406105ff6004357f0000000000000000000000000000000000000000000000000000000000000000610c58565b82519182526020820152f35b346101a2576103f26103c261061f366109f7565b907f0000000000000000000000000000000000000000000000000000000000000000610bc0565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406105ff6106826109d7565b6004357f0000000000000000000000000000000000000000000000000000000000000000610b1e565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576106e56104306109d7565b604051907f35fd631a0000000000000000000000000000000000000000000000000000000082526004820152600360248201525f8160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae576080915f916107a7575b506020810151906060604082015191015190604051926fffffffffffffffffffffffffffffffff81168452841d600f0b602084015260408301526060820152f35b6107c391503d805f833e6107bb8183610a2b565b810190610a99565b82610766565b346101a25760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406004356108056109d7565b9061080e6109e7565b7f00000000000000000000000000000000000000000000000000000000000000009061083a8383610c58565b90610846868686610b1e565b96909361085f610857828989610b1e565b989097610c63565b5050905060020b9160020b82125f14610885575050505003910382519182526020820152f35b95969593949360020b1361089d5750500391036105ff565b949392909403039203036105ff565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576024358060010b8091036101a2576108f4600435610d2f565b600581018091116101b957604051906020820192835260408201526040815261091e606082610a2b565b519020604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f906109a4575b602090604051908152f35b506020813d6020116109cf575b816109be60209383610a2b565b810103126101a25760209051610999565b3d91506109b1565b602435908160020b82036101a257565b604435908160020b82036101a257565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60409101126101a2576004359060243590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a6c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6020818303126101a25780519067ffffffffffffffff82116101a257019080601f830112156101a25781519167ffffffffffffffff8311610a6c578260051b9060405193610aea6020840186610a2b565b84526020808501928201019283116101a257602001905b828210610b0e5750505090565b8151815260209182019101610b01565b9291610b2991610d55565b600181018091116101b95773ffffffffffffffffffffffffffffffffffffffff9260445f9260405195869384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260026024840152165afa9182156101ae575f92610ba4575b506040602083015192015190565b610bb99192503d805f833e6107bb8183610a2b565b905f610b96565b6044610be273ffffffffffffffffffffffffffffffffffffffff945f94610d8b565b60405194859384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260036024840152165afa9081156101ae575f91610c3e575b506020810151916060604083015192015190565b610c5291503d805f833e6107bb8183610a2b565b5f610c2a565b9190610b2990610d2f565b6020906024610c8773ffffffffffffffffffffffffffffffffffffffff9594610d2f565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156101ae575f92610cfb575b5073ffffffffffffffffffffffffffffffffffffffff8216918060a01c60020b9162ffffff808360b81c169260d01c1690565b9091506020813d602011610d27575b81610d1760209383610a2b565b810103126101a25751905f610cc8565b3d9150610d0a565b604051602081019182526006604082015260408152610d4f606082610a2b565b51902090565b610d5e90610d2f565b600481018091116101b95760405190602082019260020b8352604082015260408152610d4f606082610a2b565b610d9490610d2f565b600681018091116101b9576040519060208201928352604082015260408152610d4f606082610a2b56fea164736f6c634300081a000a000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90", - "nonce": "0xf", - "chainId": "0x1" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x7e770b7713bde88afd49651461b8533a5e7d864b9ddb20252392aaa1ef6cc6e0", - "transactionType": "CREATE2", - "contractName": "UniversalRouter", - "contractAddress": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af", - "function": null, - "arguments": [ - "(0x000000000022D473030F116dDEE9F6B43aC78BA3, 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f, 0x1F98431c8aD98523631AE4a59f267346ea31F984, 0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f, 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54, 0x000000000004444c5dc75cB358380D2e3dE08A90, 0xC36442b4a4522E871399CD717aBDD847Ab11FE88, 0xbD216513d74C8cf14cf4747E6AaA6420FF64ee9e)" - ], - "transaction": { - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x00000000000000000000000000000000000000000000000000000000000000006101a0604052346102d657604051601f614f3938819003918201601f19168301916001600160401b038311848410176102c257808492610120946040528339810103126102d6576040519061012082016001600160401b038111838210176102c25760405261006d816102f9565b825261007b602082016102f9565b6020830190815261008e604083016102f9565b604084019081526100a1606084016102f9565b93606081019485526080840151946080820195865260a08501519560a083019687526100cf60c087016102f9565b9660c084019788526100f66101006100e960e08a016102f9565b988960e0880152016102f9565b97886101008601526101066102da565b6001600160a01b03988916815298881660208a0190815290519451965190989796871696908116959416936101396102da565b968752602087019586525192519151905160405190936001600160a01b0393841693169060808101906001600160401b038211818310176102c257604091825282815260208101948552808201938452606001948552608091909152905160a05290516001600160a01b0390811660c052915160e052610100929092529151821661012052915181166101405291518216610160529151166101805251614c2b908161030e82396080518181816115d90152818161182701526137e4015260a0518181816115b80152818161184901526137c3015260c05181612ee6015260e05181612f39015261010051818181609e01528181610449015281816105b1015281816123240152818161288d0152818161431b015281816143ac015281816144b4015281816146350152614a45015261012051818181602f01528181611cb40152611e270152610140518181816112450152818161206201526133610152610160518181816106e301528181612458015261255101526101805181818161052701526129860152f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60408051919082016001600160401b038111838210176102c257604052565b51906001600160a01b03821682036102d65756fe60c060405260043610156100c6575b3615610018575f80fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633141580610086575b61005e57005b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016331415610058565b5f3560e01c806324856bc3146108685780633593564c14610707578063817122dc1461069957806391dd73461461054b578063d0c9f6cb146104dd578063d737d0c71461046d578063dc4c90d3146103ff5763fa461e330361000e57346102e05760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760243560043560443567ffffffffffffffff81116102e057610177903690600401610942565b5f8313918215806103f5575b6103cd578181016040828203126102e057813567ffffffffffffffff81116102e057820181601f820112156102e05780356101bd81612c69565b926101cb6040519485612c28565b818452602082840101116102e0575f928160208094018483013701015260208101359173ffffffffffffffffffffffffffffffffffffffff83168093036102e05761021591612e12565b90601790602b83106103a5578035968760601c9561024362ffffff8585013560601c9a60481c168a89612e65565b73ffffffffffffffffffffffffffffffffffffffff3391160361037d571561037357508685105b156102805750505061027e93503391612f86565b005b91935091939482602b0180602b116103465784106102e457508282116102e05781019103907f80000000000000000000000000000000000000000000000000000000000000008410156102e05761027e936102db3391612ca3565b613018565b5f80fd5b925050507faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6929291925c821161031e5761027e923391612f86565b7f739dbe52000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b955084871061026a565b7f32b13d91000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f3b99b53d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f316cf0eb000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f851315610183565b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760207f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102e05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e05761059a903690600401610942565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610671576105e091613404565b90818303610649575f5b83811061061d57610619604051610602602082612c28565b5f81526040519182916020835260208301906109a1565b0390f35b8061064361062e60019387896109e4565b3560f81c61063d838787610a6e565b91613ac3565b016105ea565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e057610751903690600401610942565b60243567ffffffffffffffff81116102e057610771903690600401610970565b916044354211610840573330146108375773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c1661080f576107ea93337f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d610a89565b5f7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b61027e93610a89565b7f5bf6f916000000000000000000000000000000000000000000000000000000005f5260045ffd5b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e0576108b2903690600401610942565b60243567ffffffffffffffff81116102e0576108d2903690600401610970565b913330146108375773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c1661080f576107ea93337f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d610a89565b9181601f840112156102e05782359167ffffffffffffffff83116102e057602083818601950101116102e057565b9181601f840112156102e05782359167ffffffffffffffff83116102e0576020808501948460051b0101116102e057565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b908210156109f0570190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102e0570180359067ffffffffffffffff82116102e0576020019181360383136102e057565b908210156109f057610a859160051b810190610a1d565b9091565b9290808203612bb7579291905f915b848310610aa6575050505050565b9091929394610ab68487876109e4565b3592610ac3858285610a6e565b979092606097603f8760f81c1695600196602181105f14612a1c5760108110156122b15760088110156115245780610eeb5750610b0560208701359b87612e3a565b9590608088013515610ee4577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c9c5b610b3f89356131e2565b9d9188816080527f80000000000000000000000000000000000000000000000000000000000000008314610e58575b50505b604260a052602b7f80000000000000000000000000000000000000000000000000000000000000008210156102e05760a0518f908a10610e52575030915b8982116102e05760409173ffffffffffffffffffffffffffffffffffffffff5f6080513595610cb2610c2b610c5d85610c018b60601c6017608051013560601c62ffffff8183109e60481c1691612e65565b16968a8614610e37576401000276a49b5b878b519485938d60208601526060850190608051612ccf565b91168b830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b8488519a8b98899788967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528b6024870152604486015216606484015260a0608484015260a48301906109a1565b03925af1908115610e2c575f905f92610df0575b610cd6935015610de95750612ca3565b60a0519096908110610d1d573090806017116102e0576080805160170190527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe90196610b71565b50979396929a50979490989360409091013511610dc1575b159081610d96575b50610d4f575060010191909392610a98565b90610d926040519283927f2c4029e900000000000000000000000000000000000000000000000000000000845260048401526040602484015260448301906109a1565b0390fd5b7f8000000000000000000000000000000000000000000000000000000000000000915016155f610d3d565b7f39d35496000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050612ca3565b9150506040823d8211610e24575b81610e0b60409383612c28565b810103126102e057816020610cd6935191015191610cc6565b3d9150610dfe565b6040513d5f823e3d90fd5b73fffd8963efd1fc6a506488495d951d5263988d259b610c12565b91610baf565b6014919250106103a5576020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301523560601c5afa908115610e2c575f91610eb3575b505f80610b6e565b90506020813d8211610edc575b81610ecd60209383612c28565b810103126102e057515f610eab565b3d9150610ec0565b309c610b35565b6001819c929a97939b96999598949c145f14611024575090610f1260208201359282612e3a565b60808301351561101d577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b6040610f4c85356131e2565b9401357faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6925d7f80000000000000000000000000000000000000000000000000000000000000008510156102e057610fa6936102db86612ca3565b9091901561100e5750610fb890612ca3565b03610fe6575f7faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6925d5b610d35565b7fd4e0248e000000000000000000000000000000000000000000000000000000005f5260045ffd5b6110189150612ca3565b610fb8565b3091610f40565b6002810361106e5750610fe191604081013591507f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c61106760208301356131e2565b9135613348565b93949193909290600381036112a1575050508135820163ffffffff60208401351683019163ffffffff83351693602080850194860101910110611294577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c926040519273ffffffffffffffffffffffffffffffffffffffff60208501957f2a2d80d10000000000000000000000000000000000000000000000000000000087521660248501526060604485015260e484019280357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156102e05781016020813591019467ffffffffffffffff82116102e0578160071b360386136102e05781906060608489015252610104860194905f905b80821061127657505050936111ff5f9694829461122b9460408973ffffffffffffffffffffffffffffffffffffffff6111c360208e9d01612d3c565b1660a4880152013560c48601527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc858403016064860152612ccf565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b51908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b91610d35565b909195608080826112896001948b612d9d565b019701920190611187565b633b99b53d5f526004601cfd5b91949390925090600481036113fa57506112be60208201356131e2565b9073ffffffffffffffffffffffffffffffffffffffff8060408301351691351680155f1461133457504790811061130c57806112fc575b5050610d35565b611305916134c8565b5f806112f5565b7f6a12f104000000000000000000000000000000000000000000000000000000005f5260045ffd5b91604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481875afa928315610e2c575f936113c7575b50821061139f578161138e575b505050610d35565b61139792613a14565b5f8080611386565b7f675cae38000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092506020813d82116113f2575b816113e260209383612c28565b810103126102e05751915f611379565b3d91506113d5565b600581036114215750806040610fe19201359061141a60208201356131e2565b903561326c565b600681036114f9575060408101359073ffffffffffffffffffffffffffffffffffffffff61145260208301356131e2565b9135168061146e5750611468610fe192476139d2565b906134c8565b906040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481865afa908115610e2c575f916114c6575b50610fe1936114c0916139d2565b91613a14565b90506020813d82116114f1575b816114e060209383612c28565b810103126102e05751610fe16114b2565b3d91506114d3565b7fd76a1e9e000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6008819c929a97939b96999598949c145f146117d9575061154a6020830135918361319d565b906080840135156117d2577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b61158385356131e2565b9282156109f057611593826131c1565b83600110156109f0576115b56115fd916115af602086016131c1565b906141ee565b907f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614226565b9485816117b8575b5050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82018281116103465761165a61165573ffffffffffffffffffffffffffffffffffffffff92858561324f565b6131c1565b1693604051927f70a0823100000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff8516928360048601526020856024818a5afa948515610e2c575f9561177b575b50946116c8929160209596613586565b6024604051809581937f70a0823100000000000000000000000000000000000000000000000000000000835260048301525afa918215610e2c575f92611747575b506040611719929301359261325f565b1015610d35577f849eaf98000000000000000000000000000000000000000000000000000000005f5260045ffd5b91506020823d8211611773575b8161176160209383612c28565b810103126102e0579051906040611709565b3d9150611754565b92919450946020833d82116117b0575b8161179860209383612c28565b810103126102e05791519194919390916116c86116b8565b3d915061178b565b6117ca926117c5856131c1565b612f86565b5f8085611605565b3091611579565b60098103611b4357506117ec908261319d565b608083013515611b3c577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b61182484356131e2565b917f0000000000000000000000000000000000000000000000000000000000000000937f0000000000000000000000000000000000000000000000000000000000000000955f9560028510611b14576020820135977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601868111610346579190825b6118fd575050506040013586116118d55782156109f057610fe195856118d0926117c5856131c1565b613586565b7f8ab0bc16000000000000000000000000000000000000000000000000000000005f5260045ffd5b90919897507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901978989116103465761193e6116556119609a898961324f565b61195561194f6116558d8b8b61324f565b826141ee565b8185879d939d614226565b90604051907f0902f1ac00000000000000000000000000000000000000000000000000000000825260608260048173ffffffffffffffffffffffffffffffffffffffff87165afa918215610e2c575f905f93611ab7575b5073ffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8082931694169d169116145f14611ab15799905b9980158015611aa9575b611a815782611a0891613988565b916103e88302928084046103e8149015171561034657611a279161325f565b6103e58102908082046103e5149015171561034657611a459161399b565b6001810180911161034657988015610346577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019190826118a7565b7f7b9c8916000000000000000000000000000000000000000000000000000000005f5260045ffd5b5081156119fa565b906119f0565b6dffffffffffffffffffffffffffff80945073ffffffffffffffffffffffffffffffffffffffff9250611b01839260603d8111611b0d575b611af98183612c28565b810190613550565b509590935050506119b7565b503d611aef565b7f20db8267000000000000000000000000000000000000000000000000000000005f5260045ffd5b309161181a565b93949193909290600a8103611c445750505063ffffffff60c08301351682019063ffffffff82351690836020808501948401019101106112945760a061122b5f946111ff86957f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c9560405195869473ffffffffffffffffffffffffffffffffffffffff60208701997f2b67b570000000000000000000000000000000000000000000000000000000008b52166024870152611c026044870182612d9d565b73ffffffffffffffffffffffffffffffffffffffff611c2360808301612d3c565b1660c4870152013560e4850152610100610104850152610124840191612ccf565b91949390929091600b8103611dfb575050611c64602082013591356131e2565b90807f80000000000000000000000000000000000000000000000000000000000000008103611dcc575050475b80611c9d575050610d35565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102e057604051907fd0e30db00000000000000000000000000000000000000000000000000000000082525f8260048186885af1918215610e2c5773ffffffffffffffffffffffffffffffffffffffff92611dbc575b501690308203611d3f575b506112f5565b60446020925f60405195869485937fa9059cbb000000000000000000000000000000000000000000000000000000008552600485015260248401525af18015610e2c57611d8e575b8080611d39565b611dae9060203d8111611db5575b611da68183612c28565b810190613237565b505f611d87565b503d611d9c565b5f611dc691612c28565b5f611d2e565b471015611c91577f6a12f104000000000000000000000000000000000000000000000000000000005f5260045ffd5b600c8103611f65575050611e0f81356131e2565b9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481855afa928315610e2c575f93611f31575b5060200135821061130c5781611ea357505050610d35565b803b156102e0575f80916024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528760048401525af18015610e2c57611f21575b503073ffffffffffffffffffffffffffffffffffffffff831603611f11575b80611386565b611f1a916134c8565b5f80611f0b565b5f611f2b91612c28565b5f611eec565b9092506020813d8211611f5d575b81611f4c60209383612c28565b810103126102e05751916020611e8b565b3d9150611f3f565b600d819c939c9b929597989b99949699145f146121ac57508a358b0198893594611f976020808d019e8d030187612f79565b116103a55773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c169a935f5b8681101561203d578c73ffffffffffffffffffffffffffffffffffffffff61200760208f8560071b01016131c1565b160361201557600101611fd8565b7fe7002877000000000000000000000000000000000000000000000000000000005f5260045ffd5b50989593979694929b919a50985073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102e0576040517f0d58b1db000000000000000000000000000000000000000000000000000000008152602060048201526024810184905292839160448301915f905b8082106120fe5750505091815f81819503925af18015610e2c576120ee575b50610d35565b5f6120f891612c28565b5f6120e8565b9193509160808060019273ffffffffffffffffffffffffffffffffffffffff61212688612d3c565b16815273ffffffffffffffffffffffffffffffffffffffff61214a60208901612d3c565b16602082015273ffffffffffffffffffffffffffffffffffffffff61217160408901612d3c565b16604082015273ffffffffffffffffffffffffffffffffffffffff61219860608901612d3c565b1660608201520194019201859392916120c9565b80929b93989550600e919a97969450145f146114f95750604051907f70a0823100000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff813516600483015260208260248173ffffffffffffffffffffffffffffffffffffffff84860135165afa918215610e2c575f9261227d575b5060400135111580610fe15791506040517fa328167200000000000000000000000000000000000000000000000000000000602082015260048152611270602482612c28565b9091506020813d82116122a9575b8161229860209383612c28565b810103126102e05751906040612237565b3d915061228b565b6010819c929a97939b96999598949c145f146123cc575061230a915f9160405193849283927f48c89491000000000000000000000000000000000000000000000000000000008452602060048501526024840191612ccf565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610e2c576123565750610d35565b3d805f833e6123658183612c28565b8101906020818303126102e05780519067ffffffffffffffff82116102e0570181601f820112156102e057805161239b81612c69565b926123a96040519485612c28565b818452602082840101116102e0575f928160208094018483015e0101525f6120e8565b80929495506011919350145f146124ae5750907fffffffff000000000000000000000000000000000000000000000000000000008135167f7ac2ff7b0000000000000000000000000000000000000000000000000000000081036124835750815f929183926040519283928337810183815203908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b7ff801e525000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b601281036127ad57507f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c917fffffffff000000000000000000000000000000000000000000000000000000008135167f0c49ccbe0000000000000000000000000000000000000000000000000000000081148015612784575b801561275b575b156124835750600481013573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016936040517f6352211e000000000000000000000000000000000000000000000000000000008152826004820152602081602481895afa908115610e2c5773ffffffffffffffffffffffffffffffffffffffff9182915f9161273d575b50169116908082149182156126a9575b8215612638575b50501561260d575091815f809481946040519384928337810182815203925af190611270612d0d565b7fbb25d4c5000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b909150604051917fe985e9c500000000000000000000000000000000000000000000000000000000835260048301526024820152602081604481885afa908115610e2c575f9161268b575b505f806125e4565b6126a3915060203d8111611db557611da68183612c28565b5f612683565b91506040517f081812fc0000000000000000000000000000000000000000000000000000000081528360048201526020816024818a5afa908115610e2c57839173ffffffffffffffffffffffffffffffffffffffff915f9161270f575b501614916125dd565b612730915060203d8111612736575b6127288183612c28565b81019061349c565b5f612706565b503d61271e565b612755915060203d8111612736576127288183612c28565b5f6125cd565b507f42966c6800000000000000000000000000000000000000000000000000000000811461252f565b507ffc6f7865000000000000000000000000000000000000000000000000000000008114612528565b601381036128b85750505f809160405173ffffffffffffffffffffffffffffffffffffffff60a060208301937f6276cbbe0000000000000000000000000000000000000000000000000000000085528261280682612d3c565b1660248501528261281960208301612d3c565b16604485015262ffffff61282f60408301612d5d565b16606485015261284160608201612d6d565b60020b60848501528261285660808301612d3c565b1660a485015201351660c482015260c4815261287360e482612c28565b51908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b601481036114f957507fffffffff000000000000000000000000000000000000000000000000000000008235167fdd46508f0000000000000000000000000000000000000000000000000000000081036124835750806004116102e05761294d6129477ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830160048501612e12565b90612e12565b5f5b8181106129b1575050505f91829147918160405192839283378101848152039173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b6129bc8183856109e4565b3560f81c8015908115612a11575b8115612a06575b506129de5760010161294f565b7f5d1d0f9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b60039150145f6129d1565b6001811491506129ca565b9098959199506021819b939b989598979497145f146114f9575090612a4091613404565b612a836040959395519460208601967f24856bc3000000000000000000000000000000000000000000000000000000008852604060248801526064870191612ccf565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc858503016044860152818452602084019160208160051b86010194845f907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603015b848310612b3d5750505050505050509181612b2e5f94938594037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b519082305af190611270612d0d565b90919293949596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08582030188528835828112156102e0578301906020823592019167ffffffffffffffff81116102e05780360383136102e057612ba760209283928b95612ccf565b9a01980196959493019190612ae9565b7fff633a38000000000000000000000000000000000000000000000000000000005f5260045ffd5b60a0810190811067ffffffffffffffff821117612bfb57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612bfb57604052565b67ffffffffffffffff8111612bfb57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b7f80000000000000000000000000000000000000000000000000000000000000008114610346575f0390565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b3d15612d37573d90612d1e82612c69565b91612d2c6040519384612c28565b82523d5f602084013e565b606090565b359073ffffffffffffffffffffffffffffffffffffffff821682036102e057565b359062ffffff821682036102e057565b35908160020b82036102e057565b908160209103126102e0575190565b359065ffffffffffff821682036102e057565b65ffffffffffff612e0c6060809373ffffffffffffffffffffffffffffffffffffffff612dc982612d3c565b16865273ffffffffffffffffffffffffffffffffffffffff612ded60208301612d3c565b16602087015283612e0060408301612d8a565b16604087015201612d8a565b16910152565b909163ffffffff82351682019263ffffffff8435169260208086019585010191011061129457565b909163ffffffff60608301351682019263ffffffff8435169260208086019585010191011061129457565b9073ffffffffffffffffffffffffffffffffffffffff9283821684841611612f71575b62ffffff90846040519381602086019616865216604084015216606082015260608152612eb6608082612c28565b5190206040517fff00000000000000000000000000000000000000000000000000000000000000602082019081527f000000000000000000000000000000000000000000000000000000000000000060601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602183015260358201929092527f00000000000000000000000000000000000000000000000000000000000000006055820152612f6a81607581016111ff565b5190201690565b909190612e88565b9190820180921161034657565b9092919073ffffffffffffffffffffffffffffffffffffffff84163003612fb357612fb1935061326c565b565b919273ffffffffffffffffffffffffffffffffffffffff8411612ff05773ffffffffffffffffffffffffffffffffffffffff612fb1941692613348565b7fc4bd89a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b939290602b82106103a5578235938460601c92601785013560601c9380851094859760481c62ffffff169061304c92612e65565b73ffffffffffffffffffffffffffffffffffffffff1692845f1460409673ffffffffffffffffffffffffffffffffffffffff80956130e15f9661313495613182576401000276a4925b846130af8e51978f94899560208701526060860191612ccf565b91168d830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284612c28565b89519b8c998a9889977f128acb080000000000000000000000000000000000000000000000000000000089521660048801526024870152604486015216606484015260a0608484015260a48301906109a1565b03925af18015610e2c575f925f9161314b57509192565b9250506040823d60401161317a575b8161316760409383612c28565b810103126102e057602082519201519192565b3d915061315a565b73fffd8963efd1fc6a506488495d951d5263988d2592613095565b9160608301358301916131ba602084359581860195030185612f79565b116103a557565b3573ffffffffffffffffffffffffffffffffffffffff811681036102e05790565b73ffffffffffffffffffffffffffffffffffffffff8116600181036132285750507f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c90565b60020361323457503090565b90565b908160209103126102e0575180151581036102e05790565b91908110156109f05760051b0190565b9190820391821161034657565b90919073ffffffffffffffffffffffffffffffffffffffff16806132945750612fb1916134c8565b7f800000000000000000000000000000000000000000000000000000000000000082146132c6575b91612fb192613a14565b9050604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481855afa8015610e2c575f90613314575b909250906132bc565b506020833d602011613340575b8161332e60209383612c28565b810103126102e057612fb1925161330b565b3d9150613321565b919273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102e0575f73ffffffffffffffffffffffffffffffffffffffff9384829681608496816040519b8c9a8b997f36c78516000000000000000000000000000000000000000000000000000000008b521660048a01521660248801521660448601521660648401525af18015610e2c576133fa5750565b5f612fb191612c28565b604081351891606082019363ffffffff6040840135169363ffffffe0601f8601169060608201602086013518179084019260608401359463ffffffff861694641fffffffe0608082019760051b1680915f925b80841061346f57506080925001019101101761129457565b90916020809163ffffffe0601f60808089890101359b848d18179b88010135011601019301929190613457565b908160209103126102e0575173ffffffffffffffffffffffffffffffffffffffff811681036102e05790565b5f80809381935af1156134d757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152fd5b51906dffffffffffffffffffffffffffff821682036102e057565b908160609103126102e05761356481613535565b91604061357360208401613535565b92015163ffffffff811681036102e05790565b91600282106139605781156109f05761359e836131c1565b82600110156109f0576135ba906115af602086979596016131c1565b50927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101937ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8201955f906020937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08501965b8884106136415750505050505050505050565b61364f61165585848661324f565b9473ffffffffffffffffffffffffffffffffffffffff61367661165560018801868861324f565b921695604051917f0902f1ac0000000000000000000000000000000000000000000000000000000083526060836004818b5afa918215610e2c57895f945f9461390d575b5073ffffffffffffffffffffffffffffffffffffffff806dffffffffffffffffffffffffffff80602496979816971693169416841494855f146139075791935b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082528d60048301525afa918215610e2c575f926138d8575b50808203928115928380156138d0575b611a8157826103e586029586046103e514911417156103465761376d9084613988565b916103e882029182046103e8141715610346576137939261378d91612f79565b9061399b565b90156138c9575f90915b8b8610156138c057906137be613808926115af61165560028a01888a61324f565b8193917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614226565b915b96604051906138198a83612c28565b5f82528b368b840137803b156102e057613894945f8094604051978895869485937f022c0d9f0000000000000000000000000000000000000000000000000000000085526004850152602484015273ffffffffffffffffffffffffffffffffffffffff891660448401526080606484015260848301906109a1565b03925af1918215610e2c576001926138b0575b5093019261362e565b5f6138ba91612c28565b5f6138a7565b5087905f61380a565b5f9161379d565b50811561374a565b9091508981813d8311613900575b6138f08183612c28565b810103126102e05751905f61373a565b503d6138e6565b936136fa565b6dffffffffffffffffffffffffffff9550602493945073ffffffffffffffffffffffffffffffffffffffff86613951829360603d8111611b0d57611af98183612c28565b509890989796505050506136ba565b7fae52ad0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b8181029291811591840414171561034657565b81156139a5570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61271082116139ec57612710916139e891613988565b0490565b7fdeaa01e6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f9182604492602095604051937fa9059cbb000000000000000000000000000000000000000000000000000000008552600485015260248401525af13d15601f3d1160015f511416171615613a6557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152fd5b929190600b84101561401c5760078403613c3557613ae292935061474f565b6020810190613af1828261475d565b90505f92613afe836131c1565b90613b0b604085016146bc565b906fffffffffffffffffffffffffffffffff821615613c1c575b92915f915b838310613bab5750505050506060016fffffffffffffffffffffffffffffffff80613b54836146bc565b169216918210613b62575050565b613b7c6fffffffffffffffffffffffffffffffff916146bc565b7f8b063d73000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b8496506fffffffffffffffffffffffffffffffff613c0091613be7613be086613bda613c059798999a8c61475d565b906147b1565b9586614ad8565b613bf46080880188610a1d565b949093165f0391614938565b614bff565b946001613c1287936131c1565b9194930191613b2a565b9050613c2f613c2a83614314565b6148f3565b90613b25565b60068403613d2c57613c489293506146ad565b613c5460c082016146bc565b6fffffffffffffffffffffffffffffffff811615613cdb575b613cbe613c0060e092613c9d6fffffffffffffffffffffffffffffffff613c9660a088016146d9565b9216612ca3565b90613cac610100870187610a1d565b929091613cb936896146e6565b614938565b91016fffffffffffffffffffffffffffffffff80613b54836146bc565b50613ce860a082016146d9565b15613d125760e0613cbe613c00613d09613c2a613d04866131c1565b614314565b92505050613c6d565b60e0613cbe613c00613d09613c2a613d04602087016131c1565b60098403613ecf57613d3f92935061474f565b6020810190613d4e828261475d565b5f939150613d5e604084016146bc565b613d67846131c1565b916fffffffffffffffffffffffffffffffff821615613ebb575b92919290815b613e0457505050506060016fffffffffffffffffffffffffffffffff80613dad836146bc565b169216918211613dbb575050565b613dd56fffffffffffffffffffffffffffffffff916146bc565b7f12bacdd3000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b829395506fffffffffffffffffffffffffffffffff613e7b91613e61613e5a613e31613e8596978a61475d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901916147b1565b9889614ad8565b90613e6f60808b018b610a1d565b94909316911590614938565b600f0b5f036148f3565b937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613eb186926131c1565b9392019081613d87565b9050613ec9613c2a8361462e565b90613d81565b60088414613f06575050505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b613f119293506146ad565b613f1d60c082016146bc565b6fffffffffffffffffffffffffffffffff811615613fa1575b613f84613c2a613f7c6fffffffffffffffffffffffffffffffff60e094613f5f60a088016146d9565b613f6d610100890189610a1d565b9390921690613cb9368a6146e6565b600f0b612ca3565b91016fffffffffffffffffffffffffffffffff80613dad836146bc565b50613fae60a082016146d9565b15613ff15760e0613f84613c2a613f7c6fffffffffffffffffffffffffffffffff613fe6613c2a613fe1602089016131c1565b61462e565b945050505050613f36565b60e0613f84613c2a613f7c6fffffffffffffffffffffffffffffffff613fe6613c2a613fe1886131c1565b92600c81036140a05750614030919261461b565b9061403a8161462e565b91808311614070575090612fb1917f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c90614495565b90507f12bacdd3000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b600f810361412357506140b3919261461b565b906140bd81614314565b918083106140f3575090612fb1917f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c9061438d565b90507f8b063d73000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b600b810361417c575061413a90612fb192936142fc565b156141715761416b827f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c92614454565b91614495565b61416b823092614454565b600e81036141af57506141a36141996141a992612fb194956142fc565b92829492916131e2565b92614440565b9161438d565b92601084146141c057505050613edb565b612fb19293506141d66141df926141a9926142fc565b929193906131e2565b916141e984614314565b6139d2565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8216105f14610a855791565b91612f6a9073ffffffffffffffffffffffffffffffffffffffff947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519181602084019460601b16845260601b1660348201526028815261428a604882612c28565b5190206111ff604051938492602084019687917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000605594927fff00000000000000000000000000000000000000000000000000000000000000855260601b166001840152601583015260358201520190565b90606011611294578035916040602083013592013590565b61433f81307f00000000000000000000000000000000000000000000000000000000000000006147f1565b905f821261434b575090565b73ffffffffffffffffffffffffffffffffffffffff907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091801561443b5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102e0575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610e2c576133fa5750565b505050565b9081614450576132349150614314565b5090565b907f8000000000000000000000000000000000000000000000000000000000000000820361448657613234915061488b565b8161445057613234915061462e565b5f9183156146155773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102e05773ffffffffffffffffffffffffffffffffffffffff604051917fa584119400000000000000000000000000000000000000000000000000000000835216908160048201525f8160248183885af18015610e2c57614600575b50806145b35750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156145a7575061457c5750565b61459d9060203d6020116145a0575b6145958183612c28565b810190612d7b565b50565b503d61458b565b604051903d90823e3d90fd5b839483602094936145c393612f86565b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156145a7575061457c5750565b61460d9194505f90612c28565b5f925f614534565b50505050565b9190604011611294576020823592013590565b61465981307f00000000000000000000000000000000000000000000000000000000000000006147f1565b905f821361466b575061323490612ca3565b73ffffffffffffffffffffffffffffffffffffffff907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90610140116112945780350190565b356fffffffffffffffffffffffffffffffff811681036102e05790565b3580151581036102e05790565b91908260a09103126102e0576040516146fe81612bdf565b608061474a81839561470f81612d3c565b855261471d60208201612d3c565b602086015261472e60408201612d5d565b604086015261473f60608201612d6d565b606086015201612d3c565b910152565b9060a0116112945780350190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102e0570180359067ffffffffffffffff82116102e057602001918160051b360383136102e057565b91908110156109f05760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61813603018212156102e0570190565b73ffffffffffffffffffffffffffffffffffffffff809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa908115610e2c575f9161485c575090565b90506020813d602011614883575b8161487760209383612c28565b810103126102e0575190565b3d915061486a565b73ffffffffffffffffffffffffffffffffffffffff16806148ab57504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115610e2c575f9161485c575090565b906fffffffffffffffffffffffffffffffff821680920361491057565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092908315614abd576401000276a4905b60405194606086019386851067ffffffffffffffff861117612bfb5773ffffffffffffffffffffffffffffffffffffffff9788608095614a2b946020986040521515998a8152888101908a82528360408201931683526040519c8d998a997ff3cd914c000000000000000000000000000000000000000000000000000000008b528281511660048c0152828d8201511660248c015262ffffff60408201511660448c0152606081015160020b60648c0152015116608489015251151560a48801525160c4870152511660e4850152610120610104850152610124840191612ccf565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1928315610e2c575f93614a89575b505f1303614a8357600f0b90565b60801d90565b9092506020813d602011614ab5575b81614aa560209383612c28565b810103126102e05751915f614a75565b3d9150614a98565b73fffd8963efd1fc6a506488495d951d5263988d2590614949565b905f6080604051614ae881612bdf565b8281528260208201528260408201528260608201520152614b08826131c1565b73ffffffffffffffffffffffffffffffffffffffff82169173ffffffffffffffffffffffffffffffffffffffff82168084105f14614be0575073ffffffffffffffffffffffffffffffffffffffff905b1680921492602081013562ffffff81168091036102e0576040820135918260020b8093036102e057606001359273ffffffffffffffffffffffffffffffffffffffff84168094036102e05773ffffffffffffffffffffffffffffffffffffffff9060405195614bc687612bdf565b865216602085015260408401526060830152608082015291565b91505073ffffffffffffffffffffffffffffffffffffffff8291614b58565b5f81600f0b12614910576fffffffffffffffffffffffffffffffff169056fea164736f6c634300081a000a000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000005c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f0000000000000000000000001f98431c8ad98523631ae4a59f267346ea31f98496e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54000000000000000000000000000000000004444c5dc75cb358380d2e3de08a90000000000000000000000000c36442b4a4522e871399cd717abdd847ab11fe88000000000000000000000000bd216513d74c8cf14cf4747e6aaa6420ff64ee9e", - "nonce": "0x10", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b506131a28061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c8063a255e0ad14610043578063a5ea11da14610080578063f752070e14610095575b5f5ffd5b610056610051366004610ab2565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100886103f9565b6040516100779190610c13565b6100566100a3366004610d15565b610755565b5f806100b684860186610da1565b905073ffffffffffffffffffffffffffffffffffffffff8616610105576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b865f0361013e576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051610100810182528881526020810185905273ffffffffffffffffffffffffffffffffffffffff8816918101829052336060820181905260ff8b166080830181905260a083018e905260c083018d905260e083018590525f8b81556001889055600280547fffffffffffffffffffffffff000000000000000000000000000000000000000016909517909455600380547fffffffffffffffffffffff000000000000000000000000000000000000000000167fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90931692909217740100000000000000000000000000000000000000009091021790559060046102448d82610f00565b5060c082015160058201906102599082610f00565b5060e08201518051600683019081906102729082610f00565b50602082015160018201906102879082610f00565b506040820151600282019061029c9082610f00565b5050509050505f8a8a8a33876040516020016102bc959493929190611017565b604051602081830303815290604052805190602001209050806040516102e190610847565b8190604051809103905ff59050801580156102fe573d5f5f3e3d5ffd5b505f8080556001819055600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600380547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590935080610367600482610854565b610374600583015f610854565b600682015f6103838282610854565b610390600183015f610854565b61039d600283015f610854565b505060405173ffffffffffffffffffffffffffffffffffffffff861681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a1505098975050505050505050565b61040161088e565b60408051610100810182525f80548252600154602083015260025473ffffffffffffffffffffffffffffffffffffffff9081169383019390935260035492831660608301527401000000000000000000000000000000000000000090920460ff1660808201526004805491929160a08401919061047d90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546104a990610e63565b80156104f45780601f106104cb576101008083540402835291602001916104f4565b820191905f5260205f20905b8154815290600101906020018083116104d757829003601f168201915b5050505050815260200160058201805461050d90610e63565b80601f016020809104026020016040519081016040528092919081815260200182805461053990610e63565b80156105845780601f1061055b57610100808354040283529160200191610584565b820191905f5260205f20905b81548152906001019060200180831161056757829003601f168201915b50505050508152602001600682016040518060600160405290815f820180546105ac90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546105d890610e63565b80156106235780601f106105fa57610100808354040283529160200191610623565b820191905f5260205f20905b81548152906001019060200180831161060657829003601f168201915b5050505050815260200160018201805461063c90610e63565b80601f016020809104026020016040519081016040528092919081815260200182805461066890610e63565b80156106b35780601f1061068a576101008083540402835291602001916106b3565b820191905f5260205f20905b81548152906001019060200180831161069657829003601f168201915b505050505081526020016002820180546106cc90610e63565b80601f01602080910402602001604051908101604052809291908181526020018280546106f890610e63565b80156107435780601f1061071a57610100808354040283529160200191610743565b820191905f5260205f20905b81548152906001019060200180831161072657829003601f168201915b50505050508152505081525050905090565b5f5f8686868686604051602001610770959493929190611017565b6040516020818303038152906040528051906020012090505f6040518060200161079990610847565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408190526107d99190602001611072565b6040516020818303038152906040528051906020012090506107fc828230610808565b98975050505050505050565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b61210d8061108983390190565b50805461086090610e63565b5f825580601f1061086f575050565b601f0160209004905f5260205f209081019061088b919061091e565b50565b6040518061010001604052805f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff168152602001606081526020016060815260200161091960405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610932575f815560010161091f565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff8111828210171561098657610986610936565b60405290565b5f82601f83011261099b575f5ffd5b813567ffffffffffffffff8111156109b5576109b5610936565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610a0257610a02610936565b604052818152838201602001851015610a19575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610a45575f5ffd5b919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a45575f5ffd5b5f5f83601f840112610a7d575f5ffd5b50813567ffffffffffffffff811115610a94575f5ffd5b602083019150836020828501011115610aab575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610ac9575f5ffd5b883567ffffffffffffffff811115610adf575f5ffd5b610aeb8b828c0161098c565b985050602089013567ffffffffffffffff811115610b07575f5ffd5b610b138b828c0161098c565b975050610b2260408a01610a35565b955060608901359450610b3760808a01610a4a565b935060a089013567ffffffffffffffff811115610b52575f5ffd5b610b5e8b828c01610a6d565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610bd76060850182610b77565b905060208301518482036020860152610bf08282610b77565b91505060408301518482036040860152610c0a8282610b77565b95945050505050565b6020815281516020820152602082015160408201525f6040830151610c50606084018273ffffffffffffffffffffffffffffffffffffffff169052565b50606083015173ffffffffffffffffffffffffffffffffffffffff8116608084015250608083015160ff811660a08401525060a083015161010060c0840152610c9d610120840182610b77565b905060c08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160e0850152610cd88282610b77565b91505060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610c0a8282610bc3565b5f5f5f5f5f60a08688031215610d29575f5ffd5b853567ffffffffffffffff811115610d3f575f5ffd5b610d4b8882890161098c565b955050602086013567ffffffffffffffff811115610d67575f5ffd5b610d738882890161098c565b945050610d8260408701610a35565b9250610d9060608701610a4a565b949793965091946080013592915050565b5f60208284031215610db1575f5ffd5b813567ffffffffffffffff811115610dc7575f5ffd5b820160608185031215610dd8575f5ffd5b610de0610963565b813567ffffffffffffffff811115610df6575f5ffd5b610e028682850161098c565b825250602082013567ffffffffffffffff811115610e1e575f5ffd5b610e2a8682850161098c565b602083015250604082013567ffffffffffffffff811115610e49575f5ffd5b610e558682850161098c565b604083015250949350505050565b600181811c90821680610e7757607f821691505b602082108103610eae577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610efb57805f5260205f20601f840160051c81016020851015610ed95750805b601f840160051c820191505b81811015610ef8575f8155600101610ee5565b50505b505050565b815167ffffffffffffffff811115610f1a57610f1a610936565b610f2e81610f288454610e63565b84610eb4565b6020601f821160018114610f7f575f8315610f495750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610ef8565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b82811015610fcc5787850151825560209485019460019092019101610fac565b508482101561100857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b60a081525f61102960a0830188610b77565b828103602084015261103b8188610b77565b60ff969096166040840152505073ffffffffffffffffffffffffffffffffffffffff92909216606083015260809091015292915050565b5f82518060208501845e5f92019182525091905056fe610100604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610074919081019061035f565b90508060a001515f908161008891906104e8565b505f60405161009791906105a2565b60405190819003902060805260c08101516001906100b590826104e8565b50608081015160ff1660e090815260608201516001600160a01b031660c052602082015160a052810151805160029081906100f090826104e8565b506020820151600182019061010590826104e8565b506040820151600282019061011a90826104e8565b5050506040810151815161012e9190610134565b50610613565b6805345cdf77eb68f44c54818101818110156101575763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161010081016001600160401b03811182821017156101ec576101ec6101b5565b60405290565b80516001600160a01b0381168114610208575f5ffd5b919050565b805160ff81168114610208575f5ffd5b5f82601f83011261022c575f5ffd5b81516001600160401b03811115610245576102456101b5565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610273576102736101b5565b60405281815283820160200185101561028a575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102b6575f5ffd5b604051606081016001600160401b03811182821017156102d8576102d86101b5565b604052825190915081906001600160401b038111156102f5575f5ffd5b6103018582860161021d565b82525060208301516001600160401b0381111561031c575f5ffd5b6103288582860161021d565b60208301525060408301516001600160401b03811115610346575f5ffd5b6103528582860161021d565b6040830152505092915050565b5f6020828403121561036f575f5ffd5b81516001600160401b03811115610384575f5ffd5b82016101008185031215610396575f5ffd5b61039e6101c9565b81518152602080830151908201526103b8604083016101f2565b60408201526103c9606083016101f2565b60608201526103da6080830161020d565b608082015260a08201516001600160401b038111156103f7575f5ffd5b6104038682850161021d565b60a08301525060c08201516001600160401b03811115610421575f5ffd5b61042d8682850161021d565b60c08301525060e08201516001600160401b0381111561044b575f5ffd5b610457868285016102a6565b60e083015250949350505050565b600181811c9082168061047957607f821691505b60208210810361049757634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101b057805f5260205f20601f840160051c810160208510156104c25750805b601f840160051c820191505b818110156104e1575f81556001016104ce565b5050505050565b81516001600160401b03811115610501576105016101b5565b6105158161050f8454610465565b8461049d565b6020601f821160018114610547575f83156105305750848201515b5f19600385901b1c1916600184901b1784556104e1565b5f84815260208120601f198516915b828110156105765787850151825560209485019460019092019101610556565b508482101561059357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105af81610465565b6001821680156105c657600181146105db57610608565b60ff1983168652811515820286019350610608565b865f5260205f205f5b83811015610600578154888201526001909101906020016105e4565b505081860193505b509195945050505050565b60805160a05160c05160e051611ac061064d5f395f6101e901525f61014601525f6102cc01525f81816105c00152610a970152611ac05ff3fe608060405234801561000f575f5ffd5b5060043610610115575f3560e01c8063392f37e9116100ad57806395d89b411161007d578063d505accf11610063578063d505accf1461029f578063dd62ed3e146102b4578063f56a499f146102c7575f5ffd5b806395d89b4114610284578063a9059cbb1461028c575f5ffd5b8063392f37e91461021b5780633c130d901461023257806370a082311461023a5780637ecebe001461025f575f5ffd5b806318160ddd116100e857806318160ddd146101b557806323b872dd146101cf578063313ce567146101e25780633644e51514610213575f5ffd5b806301ffc9a71461011957806302d05d3f1461014157806306fdde031461018d578063095ea7b3146101a2575b5f5ffd5b61012c61012736600461154a565b6102ee565b60405190151581526020015b60405180910390f35b6101687f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610138565b6101956103d2565b60405161013891906115d5565b61012c6101b036600461160f565b610461565b6805345cdf77eb68f44c545b604051908152602001610138565b61012c6101dd366004611637565b6104ed565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610138565b6101c16105bd565b61022361065f565b60405161013893929190611671565b610195610807565b6101c16102483660046116b3565b6387a211a2600c9081525f91909152602090205490565b6101c161026d3660046116b3565b6338377508600c9081525f91909152602090205490565b6101956109d2565b61012c61029a36600461160f565b6109e1565b6102b26102ad3660046116cc565b610a58565b005b6101c16102c2366004611739565b610c50565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061038057507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b806103cc57507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b92915050565b60605f80546103e09061176a565b80601f016020809104026020016040519081016040528092919081815260200182805461040c9061176a565b80156104575780601f1061042e57610100808354040283529160200191610457565b820191905f5260205f20905b81548152906001019060200180831161043a57829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba3188219151761049f57633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146105425733602052637f5e9f208117600c526034600c20805480191561053f5780851115610539576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156105685763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000806105f6576105ec6103d2565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061066e9061176a565b80601f016020809104026020016040519081016040528092919081815260200182805461069a9061176a565b80156106e55780601f106106bc576101008083540402835291602001916106e5565b820191905f5260205f20905b8154815290600101906020018083116106c857829003601f168201915b5050505050908060010180546106fa9061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546107269061176a565b80156107715780601f1061074857610100808354040283529160200191610771565b820191905f5260205f20905b81548152906001019060200180831161075457829003601f168201915b5050505050908060020180546107869061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546107b29061176a565b80156107fd5780601f106107d4576101008083540402835291602001916107fd565b820191905f5260205f20905b8154815290600101906020018083116107e057829003601f168201915b5050505050905083565b60606109cd60026040518060600160405290815f820180546108289061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546108549061176a565b801561089f5780601f106108765761010080835404028352916020019161089f565b820191905f5260205f20905b81548152906001019060200180831161088257829003601f168201915b505050505081526020016001820180546108b89061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546108e49061176a565b801561092f5780601f106109065761010080835404028352916020019161092f565b820191905f5260205f20905b81548152906001019060200180831161091257829003601f168201915b505050505081526020016002820180546109489061176a565b80601f01602080910402602001604051908101604052809291908181526020018280546109749061176a565b80156109bf5780601f10610996576101008083540402835291602001916109bf565b820191905f5260205f20905b8154815290600101906020018083116109a257829003601f168201915b505050505081525050610cd0565b905090565b6060600180546103e09061176a565b5f6387a211a2600c52335f526020600c20805480841115610a095763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610a9557633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610acd57610ac36103d2565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610b0357631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610beb5763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610cb557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103cc565b50602052637f5e9f20600c9081525f91909152603490205490565b6060610ce3610cde83610d09565b610ea5565b604051602001610cf391906117d2565b6040516020818303038152906040529050919050565b60605f604051602001610d3f907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f9015610dae5781610d87855f0151610ecb565b604051602001610d98929190611803565b6040516020818303038152906040529150600190505b60208401515115610e17578015610de25781604051602001610dd0919061186d565b60405160208183030381529060405291505b81610df08560200151610ecb565b604051602001610e019291906118a5565b6040516020818303038152906040529150600190505b60408401515115610e7c578015610e4b5781604051602001610e39919061186d565b60405160208183030381529060405291505b81610e598560400151610ecb565b604051602001610e6a9291906118e0565b60405160208183030381529060405291505b81604051602001610e8d919061191b565b60405160208183030381529060405292505050919050565b60606103cc82604051806060016040528060408152602001611a746040913960016113cf565b805160609082905f90610edf906002611980565b67ffffffffffffffff811115610ef757610ef7611997565b6040519080825280601f01601f191660200182016040528015610f21576020820181803683370190505b5090505f805b835181101561139a575f610f3e8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611344577f5c000000000000000000000000000000000000000000000000000000000000008484610f87816119c4565b955081518110610f9957610f996119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f080000000000000000000000000000000000000000000000000000000000000003611081577f6200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b95508151811061104e5761104e6119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350611391565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036110f6577f7400000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a000000000000000000000000000000000000000000000000000000000000000361116b577f6e00000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036111e0577f6600000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611255577f7200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036112ca577f5c00000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361133f577f2200000000000000000000000000000000000000000000000000000000000000848461103c816119c4565b611391565b808484611350816119c4565b955081518110611362576113626119fb565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101610f27565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036113ed575060408051602081019091525f81526105b6565b5f8261141d576003855160046114039190611980565b61140e906002611a28565b6114189190611a3b565b611442565b60038551600261142d9190611a28565b6114379190611a3b565b611442906004611980565b90505f8167ffffffffffffffff81111561145e5761145e611997565b6040519080825280601f01601f191660200182016040528015611488576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156114fd576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f81168701518653506001850194506114a2565b90525050851561153e5760038851066001811461152157600281146115345761153c565b603d6001830353603d600283035361153c565b603d60018303535b505b50909695505050505050565b5f6020828403121561155a575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146105b6575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6105b66020830184611589565b803573ffffffffffffffffffffffffffffffffffffffff8116811461160a575f5ffd5b919050565b5f5f60408385031215611620575f5ffd5b611629836115e7565b946020939093013593505050565b5f5f5f60608486031215611649575f5ffd5b611652846115e7565b9250611660602085016115e7565b929592945050506040919091013590565b606081525f6116836060830186611589565b82810360208401526116958186611589565b905082810360408401526116a98185611589565b9695505050505050565b5f602082840312156116c3575f5ffd5b6105b6826115e7565b5f5f5f5f5f5f5f60e0888a0312156116e2575f5ffd5b6116eb886115e7565b96506116f9602089016115e7565b95506040880135945060608801359350608088013560ff8116811461171c575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f6040838503121561174a575f5ffd5b611753836115e7565b9150611761602084016115e7565b90509250929050565b600181811c9082168061177e57607f821691505b6020821081036117b5577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f6105b6601d8301846117bb565b5f61180e82856117bb565b7f226465736372697074696f6e223a220000000000000000000000000000000000815261183e600f8201856117bb565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f61187882846117bb565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f6118b082856117bb565b7f2277656273697465223a22000000000000000000000000000000000000000000815261183e600b8201856117bb565b5f6118eb82856117bb565b7f22696d616765223a220000000000000000000000000000000000000000000000815261183e60098201856117bb565b5f61192682846117bb565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820281158282048414176103cc576103cc611953565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036119f4576119f4611953565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808201808211156103cc576103cc611953565b5f82611a6e577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0x26", "chainId": "0x1" }, "additionalContracts": [], @@ -132,148 +22,25 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x114e051", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xa9b42196895a58b31e629e0f55b5e45ab1c4229c9dc970312548291f257f769e", - "transactionIndex": "0x97", - "blockHash": "0x7167e8a7d7440b25902fedff18128cf2220d451806dde4f8f4fe70eab161c6f9", - "blockNumber": "0x14af2fe", - "gasUsed": "0x506c26", - "effectiveGasPrice": "0x1ea9aed3a", - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xb5b6d1ba9d3c85d3e94331341c1c880b22e3f144" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x12a205d", - "logs": [ - { - "address": "0xd1428ba554f4c8450b763a0b2040a4935c63f06c", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000b5b6d1ba9d3c85d3e94331341c1c880b22e3f144" - ], - "data": "0x", - "blockHash": "0xf9a7c37d0383dbc034608fa8fafe848e3a512a6ffd2981bdc7516cfe35a10fef", - "blockNumber": "0x14af300", - "transactionHash": "0xf1670f6207b57912bacf5dd33045fa2ae7f3754f4933c11e5d8f892bf27d8977", - "transactionIndex": "0xaa", - "logIndex": "0x18b", - "removed": false - }, - { - "address": "0xbd123d5b1e148266154f5722c1d059d70059cf93", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000001a9c8182c09f50c8318d769245bea52c32be35bc" - ], - "data": "0x", - "blockHash": "0xf9a7c37d0383dbc034608fa8fafe848e3a512a6ffd2981bdc7516cfe35a10fef", - "blockNumber": "0x14af300", - "transactionHash": "0xf1670f6207b57912bacf5dd33045fa2ae7f3754f4933c11e5d8f892bf27d8977", - "transactionIndex": "0xaa", - "logIndex": "0x18c", - "removed": false - }, - { - "address": "0xd1428ba554f4c8450b763a0b2040a4935c63f06c", - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bd123d5b1e148266154f5722c1d059d70059cf93", - "blockHash": "0xf9a7c37d0383dbc034608fa8fafe848e3a512a6ffd2981bdc7516cfe35a10fef", - "blockNumber": "0x14af300", - "transactionHash": "0xf1670f6207b57912bacf5dd33045fa2ae7f3754f4933c11e5d8f892bf27d8977", - "transactionIndex": "0xaa", - "logIndex": "0x18d", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000002000000000000000200000000000000000002000001000000000000000000000000200000000000020220000000000000000800000000800000000000000000000000400000000000000000000000000000000010000000000100000000000000800000010000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000400000000008000000020000000000080000000000000040000000000000000000000000000000000008000", - "type": "0x2", - "transactionHash": "0xf1670f6207b57912bacf5dd33045fa2ae7f3754f4933c11e5d8f892bf27d8977", - "transactionIndex": "0xaa", - "blockHash": "0xf9a7c37d0383dbc034608fa8fafe848e3a512a6ffd2981bdc7516cfe35a10fef", - "blockNumber": "0x14af300", - "gasUsed": "0x993b5", - "effectiveGasPrice": "0x1d6d3c078", - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xd1428ba554f4c8450b763a0b2040a4935c63f06c" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xf491ff", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x9b4fa07bf2fb896e4d09479402eb587e89195dd3a33ceacfc95ce3e410f7fd4c", - "transactionIndex": "0x3e", - "blockHash": "0x7d30a1f6a5878bd38a070957f1435859216fc426c1ba540b2cee45a371173706", - "blockNumber": "0x14af301", - "gasUsed": "0x505a62", - "effectiveGasPrice": "0x2020967bd", - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xbd216513d74c8cf14cf4747e6aaa6420ff64ee9e" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x9418eb", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xc56194b3e8eb020eefcd6aafa6e445d331f0f174adf504ec831ce6a0ebf9a059", - "transactionIndex": "0x75", - "blockHash": "0xeeb5a402b1b3792f2f7bb53c797b7f47d190198d05de3fa78bba61c410f61abc", - "blockNumber": "0x14af302", - "gasUsed": "0x13f5e8", - "effectiveGasPrice": "0x2254f1d86", - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xaeafff", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x3d71d82b2c02425520a1296de1513ab45c4fc6e4768582673ae68aff4bb1b3f0", - "transactionIndex": "0x88", - "blockHash": "0x2c03bb79ecb672d1cb46731784c81a8462fef070df70896d5f318518dc3d7486", - "blockNumber": "0x14af303", - "gasUsed": "0xc6ca5", - "effectiveGasPrice": "0x216bfd4df", - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x7ffe42c4a5deea5b0fec41c94c136cf115597227" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x87fc05", + "cumulativeGasUsed": "0xb3a693", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x7e770b7713bde88afd49651461b8533a5e7d864b9ddb20252392aaa1ef6cc6e0", - "transactionIndex": "0x2b", - "blockHash": "0x9dd2349a7876a647ac06cb96b4f3907363e0980d951beadea1b57626483d4838", - "blockNumber": "0x14af304", - "gasUsed": "0x40e23c", - "effectiveGasPrice": "0x20d87cd02", - "from": "0x2179a60856e37dfeaaca0ab043b931fe224b27b6", + "transactionHash": "0x3fd5a6f58f25bd2a6bc180e43a5d613e12a284733c9bf7a80fd857f6ac342ad2", + "transactionIndex": "0x1b", + "blockHash": "0xdc57c82a0f985fb2c0aab829110710d221f8a63e19a75d6b248410ecab565a6c", + "blockNumber": "0x15ae169", + "gasUsed": "0x2a84e8", + "effectiveGasPrice": "0x6c756135", + "from": "0xe49acc3b16c097ec88dc9352ce4cd57ab7e35b95", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x66a9893cc07d91d95644aedd05d03f95e1dba8af" + "contractAddress": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1737658355, + "timestamp": 1750271409, "chain": 1, - "commit": "2656054" + "commit": "dd0a295" } \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/130/run-1750271110.json b/broadcast/Deploy-all.s.sol/130/run-1750271110.json new file mode 100644 index 00000000..068d5d58 --- /dev/null +++ b/broadcast/Deploy-all.s.sol/130/run-1750271110.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0xede965fabff85e414948c3488a70ee366516e0c17cd5a849e5031a0eb348fdd6", + "transactionType": "CREATE2", + "contractName": "UERC20SuperchainFactory", + "contractAddress": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", + "function": null, + "arguments": null, + "transaction": { + "from": "0xe49acc3b16c097ec88dc9352ce4cd57ab7e35b95", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806340c84ea014610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0x8", + "chainId": "0x82" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x7a3ad9", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xede965fabff85e414948c3488a70ee366516e0c17cd5a849e5031a0eb348fdd6", + "transactionIndex": "0xd", + "blockHash": "0x86f3eb9d1c45a7cc775098c01385299474dde469aa99a33da77b84f91012658c", + "blockNumber": "0x129e4aa", + "gasUsed": "0x2f1240", + "effectiveGasPrice": "0x1e7b6e", + "from": "0xe49acc3b16c097ec88dc9352ce4cd57ab7e35b95", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", + "l1BaseFeeScalar": "0x7d0", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xdbba0", + "l1Fee": "0x50d7ba6a60", + "l1GasPrice": "0x672e952f", + "l1GasUsed": "0x187bf" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1750271110, + "chain": 130, + "commit": "dd0a295" +} \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/130/run-1752599470.json b/broadcast/Deploy-all.s.sol/130/run-1752599470.json new file mode 100644 index 00000000..4a3919a2 --- /dev/null +++ b/broadcast/Deploy-all.s.sol/130/run-1752599470.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0x7887c279399099a21b1318b104d3213a167db63dd0f8bcddeb2b753c79002fcc", + "transactionType": "CREATE2", + "contractName": "USUPERC20Factory", + "contractAddress": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", + "function": null, + "arguments": null, + "transaction": { + "from": "0xe49acc3b16c097ec88dc9352ce4cd57ab7e35b95", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80635dfbfbc214610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0xb", + "chainId": "0x82" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0xaa41c1", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x7887c279399099a21b1318b104d3213a167db63dd0f8bcddeb2b753c79002fcc", + "transactionIndex": "0x34", + "blockHash": "0x9e4a4b6179a555dd17fee7337c631f2a611856cd449bc660804ec14970e57591", + "blockNumber": "0x14d6bd2", + "gasUsed": "0x2f1240", + "effectiveGasPrice": "0x7fc1", + "from": "0xe49acc3b16c097ec88dc9352ce4cd57ab7e35b95", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", + "l1BaseFeeScalar": "0x7d0", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xdbba0", + "l1Fee": "0xaadabe0c46", + "l1GasPrice": "0xda1113f6", + "l1GasUsed": "0x187bf" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1752599470, + "chain": 130, + "commit": "dd0a295" +} \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/130/run-latest.json b/broadcast/Deploy-all.s.sol/130/run-latest.json index f0ac3131..4a3919a2 100644 --- a/broadcast/Deploy-all.s.sol/130/run-latest.json +++ b/broadcast/Deploy-all.s.sol/130/run-latest.json @@ -1,128 +1,18 @@ { "transactions": [ { - "hash": "0x8132a6d9c2f559acafe3fa36d6e50222d85c391d25b8ad09a59dfb15001bc013", + "hash": "0x7887c279399099a21b1318b104d3213a167db63dd0f8bcddeb2b753c79002fcc", "transactionType": "CREATE2", - "contractName": "PositionDescriptor", - "contractAddress": "0x8be6f6785b71c16ca238abbcdd3f33271969c305", + "contractName": "USUPERC20Factory", + "contractAddress": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", "function": null, - "arguments": [ - "0x1F98400000000000000000000000000000000004", - "0x4200000000000000000000000000000000000006", - "0x4554480000000000000000000000000000000000000000000000000000000000" - ], + "arguments": null, "transaction": { - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", + "from": "0xe49acc3b16c097ec88dc9352ce4cd57ab7e35b95", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060e0346100b357601f615ed138819003918201601f19168301916001600160401b038311848410176100b7578084926060946040528339810103126100b3578051906001600160a01b03821682036100b3576020810151906001600160a01b03821682036100b357604001519160c05260805260a052604051615e0590816100cc8239608051818181607a0152613f05015260a05181818161402c0152614082015260c0518181816101530152613d6c0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe610440806040526004361015610013575f80fd5b5f60a0525f3560e01c908163166c597814613dc257508063b7af3cdc14613d9b578063dc4c90d314613d57578063dee91a2c14613d0e578063e9dc6375146100af5763eb6d3a1114610063575f80fd5b346100a95760a0513660031901126100a9576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b60a05180fd5b34613c29576040366003190112613c29576004356001600160a01b03811690819003613c2957602460c081359260405192838092637ba03aad60e01b82528660048301525afa8015613c35575f915f91613c53575b5066ffffffffffffff19811615613c405760a08220604051602081019182526006604082015260408152610139606082613f42565b519020604051631e2eaeaf60e01b815260048101919091527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693909290602084602481885afa938415613c35575f94613bfd575b50815160208301516001600160a01b039182169691166101b587613e2a565b6101be82613e2a565b129687159188613bf65780925b15613bee5750955b6101e46101de614001565b836140cb565b956101f66101f0614001565b896140cb565b6101ff84614254565b976102098a614254565b99606089015160020b9562ffffff60408b01511699608060018060a01b0391015116986040516102c0526101e06102c051016102c051811060018060401b03821117613b82576040526102c05152600160a01b60019003166102c05160200152600160a01b60019003166102c051604001526102c051606001526102c051608001526102c05160a0019660ff1687526102c05160c0019760ff1688526102c05160e0019889528060081c60020b6102c051610100015260201c60020b6102c051610120015260a01c60020b6102c05161014001526102c0516101600152826102c05161018001526102c0516101a001526102c0516101c0015261030b9061458d565b906102c0516060015161031d90614828565b916102c0516080015161032f90614828565b93855115805f149660036020600298602a82849a816103bc61046b9f9c60019b610388849f9c859d613bdd576101006102c051015160020b5b6101606102c051015160020b9160ff85511690159260ff87511692614d92565b9a51158015613bcb576101206102c051015160020b915b60ff806101606102c051015160020b925116921594511692614d92565b9a6040516103e0526902ab734b9bbb0b81016960b51b826103e0510152805191829101856103e051015e6103e05101906201016960ed1b84830152805192839101602d83015e010190602f60f81b84830152805192839101600483015e0101906201016960ed1b84830152805192839101600483015e010190611e1f60f11b84830152805192839101600583015e01015f828201526103e051900301601f1981016103e051526103e051613f42565b6105ec6002605961048260606102c0510151614828565b61049260806102c0510151614828565b90600160206104af828060a01b036101a06102c051015116615481565b604051610400527f54686973204e465420726570726573656e74732061206c697175696469747920826104005101527803837b9b4ba34b7b71034b71030902ab734b9bbb0b8103b1a1603d1b604061040051015285828551968187019780898561040051015e610400510190602d60f81b84830152805192839101605a83015e010190660103837b7b617160cd1b848301527f546865206f776e6572206f662074686973204e46542063616e206d6f646966796008830152791037b9103932b232b2b6903a3432903837b9b4ba34b7b7172e3760311b60288301527702e372837b7b61026b0b730b3b2b91020b2323932b9b99d160451b6042830152805192839101605a83015e010190612e3760f11b84830152518092605b83015e01015f8282015261040051900301601f198101610400515261040051613f42565b61085c60ac600c8060206106036102c0515161492e565b60108261061660806102c0510151614828565b6102c0518201516001600160a01b031680613bb95750600a826106376142d5565b925b6102c051604001516001600160a01b031680613ba8575060028261065b6142d5565b6102c0516101c001516001600160a01b031680613b965750602a8261067e6142f9565b955b8161069762ffffff6101806102c05101511661458d565b9a6040516103c0526901020b2323932b9b99d160b51b826103c0510152805191829101856103c051015e6103c0510190612e3760f11b84830152805192839101602c83015e0101906901020b2323932b9b99d160b51b848301528051928391018d83015e0101906f02e372437b7b59020b2323932b9b99d160851b84830152805192839101601a83015e0101906b02e372332b2902a34b2b91d160a51b84830152805192839101601c83015e0101906b02e372a37b5b2b71024a21d160a51b84830152805192839101601883015e0101632e372e3760e11b828201527fe29aa0efb88f20444953434c41494d45523a204475652064696c6967656e636560108201527f20697320696d7065726174697665207768656e20617373657373696e6720746860308201527f6973204e46542e204d616b6520737572652063757272656e637920616464726560508201527f73736573206d61746368207468652065787065637465642063757272656e636960708201527f65732c2061732063757272656e63792073796d626f6c73206d6179206265206960908201526736b4ba30ba32b21760c11b60b08201526103c051900301608c81016103c05152016103c051613f42565b6102c05160200151610876906001600160a01b0316615481565b6102c05160400151610890906001600160a01b0316615481565b610320526102c0516101c08101516001600160a01b03166102e05260608101516080820151610180909201519091906108cd9062ffffff1661458d565b6101006102c051015160020b916101206102c051015160020b610360526101606102c051015160020b610380526109136101406102c051015160020b610360518561553d565b610420526102c051519361093560018060a01b0360206102c051015116615564565b610300526102c05160400151610953906001600160a01b0316615564565b6102c05160200151909690610970906001600160a01b03166155c3565b610260526102c0516040015161098e906001600160a01b03166155c3565b610280526102c0516020810151905160ff916109af919060101c8316614a76565b6101026103a08190529190068181029181159183041417156137e25760ff610340526109e36109e891610340519004614527565b61492e565b6102a0526102c051604081015190516103405191610a14919060101c83166001600160901b0316614a76565b6101806102408190529190068181029181159183041417156137e2576103405115613b15576109e3610a4b91610340519004614535565b610220526102c05160208181015191516103405192610a75921c83166001600160801b0316614a76565b6103a0519190068181029181159183041417156137e2576103405115613b15576109e3610aa791610340519004614527565b610200526102c051604081015190516103405191610ad3919060201c83166001600160801b0316614a76565b610240519190068181029181159183041417156137e2576103405115613b15576109e3610b0591610340519004614535565b6101e0526102c051602081015190516103405191610b31919060301c83166001600160701b0316614a76565b6103a0519190068181029181159183041417156137e2576103405115613b15576109e3610b6391610340519004614527565b6101c0526102c051604081015190516103405191610b8f919060301c83166001600160701b0316614a76565b610240519190068181029181159183041417156137e2576103405115613b15576109e3610bc191610340519004614535565b6101a0526040516101808190526102a081019081106001600160401b03821117613b825760405261018051526103205160206101805101526102e05160406101805101526060610180510152608061018051015260a061018051015260c06101805101526103605160e061018051015261038051610100610180510152610420515f0b6101206101805101526101406101805101526103005161016061018051015261024051610180510152610260516101a0610180510152610280516101c06101805101526102a0516101e061018051015261022051610200610180510152610200516102206101805101526101e0516102406101805101526101c0516102606101805101526101a051610280610180510152611c206101e4610655603f6020610da36040515f80516020615cb9833981519152838201525f80516020615db983398151915260408201527f2f2f7777772e77332e6f72672f323030302f737667273e3c726563742077696460608201527f74683d27323930707827206865696768743d273530307078272066696c6c3d276080820152602360f81b60a0820152610d9e600960a1836103005151808861030051018484015e81016813979f1e17b9bb339f60b91b838201520301601619810184520182613f42565b614a89565b603e82610e4f81610d9e600960136101e0610180510151600685610200610180510151816102405161018051015191604051998a96610de3828901615661565b90805192839101825e019065272063793d2760d01b82528051928391018683015e0190722720723d273132307078272066696c6c3d272360681b84830152805192839101601983015e01016813979f1e17b9bb339f60b91b838201520301601619810184520182613f42565b8282610e8d81610d9e60096013610220610180510151600685610240610180510151816101a061018051015191604051998a96610de3828901615661565b60f382610f3881610d9e60096013610260610180510151600685610280610180510151816101c061018051015191604051998a96610ecc828901615661565b90805192839101825e019065272063793d2760d01b82528051928391018683015e0190722720723d273130307078272066696c6c3d272360681b84830152805192839101601983015e01016813979f1e17b9bb339f60b91b838201520301601619810184520182613f42565b95816101606101805101519a60405160c0527f3c7376672077696474683d2232393022206865696768743d22353030222076698260c05101527f6577426f783d2230203020323930203530302220786d6c6e733d22687474703a604060c0510152751797bbbbbb973b999737b933979918181817b9bb339160511b606060c05101527f20786d6c6e733a786c696e6b3d27687474703a2f2f7777772e77332e6f72672f607660c05101526b189c9c9c97bc3634b735939f60a11b609660c0510152651e3232b3399f60d11b60a260c05101527f3c66696c7465722069643d226631223e3c6665496d61676520726573756c743d60a860c05101527f2270302220786c696e6b3a687265663d22646174613a696d6167652f7376672b60c860c05101526a1e1b5b0ed8985cd94d8d0b60aa1b60e860c05101528051918291018560c051015e60c05101907f222f3e3c6665496d61676520726573756c743d2270312220786c696e6b3a6872848301525f80516020615c9983398151915261011383015280519283910161013183015e0101907f222f3e3c6665496d61676520726573756c743d2270322220786c696e6b3a6872848301525f80516020615c99833981519152605e830152805192839101607c83015e010190631110179f60e11b848301527f3c6665496d61676520726573756c743d2270332220786c696e6b3a687265663d60428301527a0899185d184e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b602a1b6062830152805192839101607d83015e7f22202f3e3c6665426c656e64206d6f64653d226f7665726c61792220696e3d22910191909101848101919091527f70302220696e323d22703122202f3e3c6665426c656e64206d6f64653d226578605f8201527f636c7573696f6e2220696e323d22703222202f3e3c6665426c656e64206d6f64607f8201527f653d226f7665726c61792220696e323d2270332220726573756c743d22626c65609f820152780373227baba1110179f1e3332a3b0bab9b9b4b0b721363ab91603d1b60bf8201527f696e3d22626c656e644f75742220737464446576696174696f6e3d223432222060d88201527f2f3e3c2f66696c7465723e203c636c6970506174682069643d22636f726e657260f88201527f73223e3c726563742077696474683d2232393022206865696768743d223530306101188201527f222072783d223432222072793d22343222202f3e3c2f636c6970506174683e006101388201527f3c706174682069643d22746578742d706174682d612220643d224d34302031326101578201527f20483235302041323820323820302030203120323738203430205634363020416101778201527f32382032382030203020312032353020343838204834302041323820323820306101978201527f20302031203132203436302056343020413238203238203020302031203430206101b7820152671899103d1110179f60c11b6101d78201527f3c706174682069643d226d696e696d61702220643d224d3233342034343443326101df8201527f3334203435372e393439203234322e323120343633203235332034363322202f6101ff820152601f60f91b61021f8201527f3c66696c7465722069643d22746f702d726567696f6e2d626c7572223e3c66656102208201527f476175737369616e426c757220696e3d22536f757263654772617068696322206102408201527f737464446576696174696f6e3d22323422202f3e3c2f66696c7465723e0000006102608201527f3c6c696e6561724772616469656e742069643d22677261642d7570222078313d61027d8201527f2231222078323d2230222079313d2231222079323d2230223e3c73746f70206f61029d8201527f66667365743d22302e30222073746f702d636f6c6f723d2277686974652220736102bd820152713a37b816b7b830b1b4ba3c9e91189110179f60711b6102dd8201527f3c73746f70206f66667365743d222e39222073746f702d636f6c6f723d2277686102ef8201527f697465222073746f702d6f7061636974793d223022202f3e3c2f6c696e65617261030f8201526823b930b234b2b73a1f60b91b61032f8201527f3c6c696e6561724772616469656e742069643d22677261642d646f776e2220786103388201527f313d2230222078323d2231222079313d2230222079323d2231223e3c73746f706103588201527f206f66667365743d22302e30222073746f702d636f6c6f723d227768697465226103788201527f2073746f702d6f7061636974793d223122202f3e3c73746f70206f66667365746103988201527f3d22302e39222073746f702d636f6c6f723d227768697465222073746f702d6f6103b88201527f7061636974793d223022202f3e3c2f6c696e6561724772616469656e743e00006103d88201527f3c6d61736b2069643d22666164652d757022206d61736b436f6e74656e74556e6103f68201527f6974733d226f626a656374426f756e64696e67426f78223e3c726563742077696104168201527f6474683d223122206865696768743d2231222066696c6c3d2275726c282367726104368201527030b216bab8149110179f1e17b6b0b9b59f60791b6104568201527f3c6d61736b2069643d22666164652d646f776e22206d61736b436f6e74656e746104678201527f556e6974733d226f626a656374426f756e64696e67426f78223e3c72656374206104878201527f77696474683d223122206865696768743d2231222066696c6c3d2275726c28236104a78201527433b930b216b237bbb7149110179f1e17b6b0b9b59f60591b6104c78201527f3c6d61736b2069643d226e6f6e6522206d61736b436f6e74656e74556e6974736104dc8201527f3d226f626a656374426f756e64696e67426f78223e3c726563742077696474686104fc8201527f3d223122206865696768743d2231222066696c6c3d22776869746522202f3e3c61051c8201526517b6b0b9b59f60d11b61053c8201527f3c6c696e6561724772616469656e742069643d22677261642d73796d626f6c226105428201527f3e3c73746f70206f66667365743d22302e37222073746f702d636f6c6f723d226105628201527f7768697465222073746f702d6f7061636974793d223122202f3e3c73746f70206105828201527f6f66667365743d222e3935222073746f702d636f6c6f723d22776869746522206105a28201527f73746f702d6f7061636974793d223022202f3e3c2f6c696e65617247726164696105c28201526332b73a1f60e11b6105e28201527f3c6d61736b2069643d22666164652d73796d626f6c22206d61736b436f6e74656105e68201527f6e74556e6974733d227573657253706163654f6e557365223e3c7265637420776106068201527f696474683d22323930707822206865696768743d223230307078222066696c6c6106268201527f3d2275726c2823677261642d73796d626f6c2922202f3e3c2f6d61736b3e3c2f610646820152643232b3399f60d91b6106668201527f3c6720636c69702d706174683d2275726c2823636f726e65727329223e00000061066b8201526b1e3932b1ba103334b6361e9160a11b610688820152815192909183910161069483015e01017f2220783d223070782220793d22307078222077696474683d223239307078222082820152703432b4b3b43a1e911a9818383c1110179f60791b6106758201527f3c72656374207374796c653d2266696c7465723a2075726c28236631292220786106868201527f3d223070782220793d22307078222077696474683d22323930707822206865696106a68201526d33b43a1e911a9818383c1110179f60911b6106c68201527f203c67207374796c653d2266696c7465723a75726c2823746f702d726567696f6106d48201527f6e2d626c7572293b207472616e73666f726d3a7363616c6528312e35293b20746106f48201527f72616e73666f726d2d6f726967696e3a63656e74657220746f703b223e0000006107148201527f3c726563742066696c6c3d226e6f6e652220783d223070782220793d223070786107318201527f222077696474683d22323930707822206865696768743d22353030707822202f610751820152601f60f91b6107718201527f3c656c6c697073652063783d22353025222063793d22307078222072783d22316107728201527f38307078222072793d223132307078222066696c6c3d222330303022206f70616107928201527131b4ba3c9e9118171c1a9110179f1e17b39f60711b6107b28201527f3c7265637420783d22302220793d2230222077696474683d22323930222068656107c48201527f696768743d22353030222072783d223432222072793d223432222066696c6c3d6107e48201527f227267626128302c302c302c302922207374726f6b653d2272676261283235356108048201527416191a9a96191a9a96181719149110179f1e17b39f60591b61082482015260c0519003016101c4810160c051520160c051613f42565b61217f608b6005610100610180515160206101805101518360606101805101519160806101805101519060405186527f3c7465787420746578742d72656e646572696e673d226f7074696d697a6553706020875101526432b2b2111f60d91b6040875101527f3c74657874506174682073746172744f66667365743d222d31303025222066696045875101527f6c6c3d2277686974652220666f6e742d66616d696c793d2227436f75726965726065875101527f204e6577272c206d6f6e6f73706163652220666f6e742d73697a653d223130706085875101527f782220786c696e6b3a687265663d2223746578742d706174682d61223e00000060a5875101528281516020830190808260c28b51015e8851019264010714051160dd1b60c285015260c285516020870195818760c783015e0101905f80516020615c79833981519152848301525f80516020615d5983398151915260258301525f80516020615d398339815191526045830152783832b0ba21b7bab73a1e9134b73232b334b734ba329110179f60391b60658301527f3c2f74657874506174683e203c74657874506174682073746172744f66667365607e8301527f743d223025222066696c6c3d2277686974652220666f6e742d66616d696c793d609e8301527f2227436f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d60be8301527f73697a653d22313070782220786c696e6b3a687265663d2223746578742d706160de830152653a3416b0911f60d11b60fe83015251809261010483015e01019164010714051160dd1b6103405184015251809161010484015e610340519101015f80516020615c79833981519152828201525f80516020615d5983398151915260258201525f80516020615d3983398151915260458201527f70656174436f756e743d22696e646566696e69746522202f3e203c2f746578746065820152642830ba341f60d91b60858201527f3c74657874506174682073746172744f66667365743d22353025222066696c6c608a8201527f3d2277686974652220666f6e742d66616d696c793d2227436f7572696572204e60aa8201527f6577272c206d6f6e6f73706163652220666f6e742d73697a653d22313070782260ca8201527a103c3634b7359d343932b31e9111ba32bc3a16b830ba3416b0911f60291b60ea8201528184516020860192818461010583015e01019364010714051160dd1b868601528584516020860196818861010583015e0101905f80516020615c79833981519152848301525f80516020615d5983398151915260258301527f6f3d22313030252220626567696e3d22307322206475723d223330732200000060458301527f20726570656174436f756e743d22696e646566696e69746522202f3e3c2f746560628301527f7874506174683e3c74657874506174682073746172744f66667365743d222d3560828301527f3025222066696c6c3d2277686974652220666f6e742d66616d696c793d22274360a28301527f6f7572696572204e6577272c206d6f6e6f73706163652220666f6e742d73697a60c28301527f653d22313070782220786c696e6b3a687265663d2223746578742d706174682d60e28301526230911f60e91b6103a05183015251809261010583015e01019064010714051160dd1b8483015251809261010583015e01015f80516020615c79833981519152828201525f80516020615d5983398151915260258201525f80516020615d3983398151915260458201527f70656174436f756e743d22696e646566696e69746522202f3e3c2f746578745060658201526a30ba341f1e17ba32bc3a1f60a91b608582015261010051900301606b810161010051520161010051613f42565b6020612418607e60776060610180510151600185608061018051015160ed8260a0610180510151926040519a8b977f3c67206d61736b3d2275726c2823666164652d73796d626f6c29223e3c726563828a01527f742066696c6c3d226e6f6e652220783d223070782220793d223070782220776960408a01527f6474683d22323930707822206865696768743d22323030707822202f3e203c7460608a01527f65787420793d22373070782220783d2233327078222066696c6c3d227768697460808a01527f652220666f6e742d66616d696c793d2227436f7572696572204e6577272c206d60a08a01527f6f6e6f73706163652220666f6e742d7765696768743d223230302220666f6e7460c08a01526c16b9b4bd329e91199b383c111f60991b60e08a0152805191829101858a015e870190602f60f81b8483015280519283910160ee83015e0101907f3c2f746578743e3c7465787420793d2231313570782220783d22333270782220848301527f66696c6c3d2277686974652220666f6e742d66616d696c793d2227436f75726960218301527f6572204e6577272c206d6f6e6f73706163652220666f6e742d7765696768743d6041830152761119181811103337b73a16b9b4bd329e91199b383c111f60491b6061830152805192839101607883015e01016a1e17ba32bc3a1f1e17b39f60a91b838201527f3c7265637420783d2231362220793d223136222077696474683d22323538222060828201527f6865696768743d22343638222072783d223236222072793d223236222066696c60a28201527f6c3d227267626128302c302c302c302922207374726f6b653d2272676261283260c2820152721a9a96191a9a96191a9a96181719149110179f60691b60e28201520301605e810184520182613f42565b60c061018051015160020b9060e061018051015160020b9161010061018051015160020b906101206101805101515f0b90600182145f14613b2957604051612461604082613f42565b6008815267023666164652d75760c41b6020820152945b03627fffff198112627fffff8213176137e25760020b908215613b1557627fffff1982145f198414166137e25761293f926048920560020b600481136139365750607960206040516124cb604082613f42565b601a8152794d3120314334312034312031303520313035203134352031343560301b82820152925b60406101608190528051906125089082613f42565b6002815261373360f01b838201908152610160518051939061252a9085613f42565b60038452848401906203139360ec1b825261016051519261254e6101605185613f42565b60038452868401926232313760e81b84526101605151936125726101605186613f42565b6003855288850191620ccccd60ea1b8352600185146001860361392c575b15613840575050505092602786602a946008828196602c82809c6126c39c5f191493845f14613839578a5b85156138325782985b861561382a5750945b156138225750955b61016051516b1e31b4b931b6329031bc1e9160a11b8f8201528a51909e8f9b829101858d015e8a019067383c111031bc9e9160c11b84830152805192839101603483015e0101907f70782220723d22347078222066696c6c3d22776869746522202f3e3c63697263848301526636329031bc1e9160c91b6028830152805192839101602f83015e01019067383c111031bc9e9160c11b84830152805192839101602f83015e01017f70782220723d2232347078222066696c6c3d226e6f6e6522207374726f6b653d8382015269113bb434ba329110179f60b11b60288201520301600a810184520182613f42565b606561016051519889956c078ce40dac2e6d67a44eae4d85609b1b85880152858251868401908082602d8c015e89019361149160f11b602d8601525f80516020615dd9833981519152602f8601527f2c313839707829223e3c7265637420783d222d313670782220793d222d313670604f8601527f78222077696474683d22313830707822206865696768743d2231383070782220606f860152763334b6361e913737b7329110179f1e3830ba3410321e9160491b608f860152602d845189860196818860a683015e0101907f22207374726f6b653d227267626128302c302c302c302e332922207374726f6b848301527f652d77696474683d2233327078222066696c6c3d226e6f6e6522207374726f6b6099830152733296b634b732b1b0b81e913937bab7321110179f60611b60b9830152700785ece7c78ce40dac2e6d67a44eae4d85607b1b60cd83015251809260de83015e01019061149160f11b848301525f80516020615dd983398151915260678301526816189c1cb83c14911f60b91b60878301527f3c7265637420783d222d313670782220793d222d31367078222077696474683d60908301527f22313830707822206865696768743d223138307078222066696c6c3d226e6f6e60b083015264329110179f60d91b60d0830152681e3830ba3410321e9160b91b60d583015251809260de83015e0101907f22207374726f6b653d2272676261283235352c3235352c3235352c3129222066848301527f696c6c3d226e6f6e6522207374726f6b652d6c696e656361703d22726f756e646099830152671110179f1e17b39f60c11b60b983015280519283910160c183015e01015f838201520301601f198101845283613f42565b61295061014061018051015161492e565b60018060a01b0360406101805101511660c061018051015160020b9160e061018051015160020b9261298183615481565b60e05261298d8161591c565b6129968561591c565b928051946004860186116137e2576136bb576129b06142f9565b80519360058501928386116136a357845191600a83018084116136a357885195600a8701928388116136a35760049c6129e891615a45565b9c909b6008810191829101116136a357806007029060078204036136a357612a1160099161492e565b99018091116136a357806007029060078204036136a357612a33600e9161492e565b94018091116136a357806007029060078204036136a357612a55600e9161492e565b95018091116136a35760078181020481036136a357600702612a769061492e565b9561016051516080526080516020015f80516020615d9983398151915290526c1cb83c1610199a9a383c14911f60991b6101605160805101526c1e3932b1ba103bb4b23a341e9160991b608051604d015280516020819201608051605a015e60805101605a0160a0518152612aea906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d198339815191529052608081016c1f24a21d101e17ba39b830b71f60991b905281516020819301608d83015e6a1e17ba32bc3a1f1e17b39f60a91b608d92909101918201525f80516020615d9983398151915260988201526c1cb83c1610199c1a383c14911f60991b60b88201526c1e3932b1ba103bb4b23a341e9160991b60c5820152815191829060200160d283015e01608d0160450160a0518152612bd5906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d198339815191529052608081016e1f2437b7b59d101e17ba39b830b71f60891b905281516020819301608f83015e6a1e17ba32bc3a1f1e17b39f60a91b608f92909101918201525f80516020615d99833981519152609a8201526c1cb83c16101a189a383c14911f60991b60ba8201526c1e3932b1ba103bb4b23a341e9160991b60c7820152815191829060200160d483015e01608f0160450160a0518152612cc2906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d19833981519152905260808101721f26b4b7102a34b1b59d101e17ba39b830b71f60691b905281516020819301609383015e6a1e17ba32bc3a1f1e17b39f60a91b609392909101918201525f80516020615d99833981519152609e8201526c1cb83c16101a1a1a383c14911f60991b60be8201526c1e3932b1ba103bb4b23a341e9160991b60cb820152815191829060200160d883015e0160930160450160a0518152612db3906156bc565b5f80516020615cf98339815191528152602081015f80516020615cd983398151915290526101605181015f80516020615d798339815191529052606081015f80516020615d19833981519152905260808101721f26b0bc102a34b1b59d101e17ba39b830b71f60691b905281516020819301609383015e7f3c2f746578743e3c2f673e3c67207374796c653d227472616e73666f726d3a7460939290910191820152773930b739b630ba329419191b383c16101a1999b83c14911f60411b60b38201527f3c726563742077696474683d223336707822206865696768743d22333670782260cb8201527f2072783d22387078222072793d22387078222066696c6c3d226e6f6e6522207360eb8201527f74726f6b653d2272676261283235352c3235352c3235352c302e322922202f3e61010b8201527f3c70617468207374726f6b652d6c696e656361703d22726f756e642220643d2261012b8201527f4d38203943382e30303030342032322e393439342031362e323039392032382061014b8201527f3237203238222066696c6c3d226e6f6e6522207374726f6b653d22776869746561016b820152631110179f60e11b61018b8201527f3c636972636c65207374796c653d227472616e73666f726d3a7472616e736c6161018f820152640e8ca66c8560db1b6101af82015281519182906020016101b483015e016093016101218101630383c16160e51b90528151602081930161012583015e7f70782c2030707829222063783d22307078222063793d223070782220723d2234610125929091019182015275383c11103334b6361e913bb434ba3291179f1e17b39f60511b6101458201526080805161013b9281900392830190525161303b9161015b0190613f42565b61018051610140015191610180516040015160a0515060606101605151906020820192868452600160601b6001900319911b166101605182015260348152613084605482613f42565b5190209280156100a9578060018060801b031060071b81811c60018060401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c610340511060031b17906f8421084210842108cc6318c6db6d54be7b01c1818141808140018080c0814100004181408140c0c100414140c160221b91831c1c601f161a1760011b6101fe811660fe8216036136a35760fe9060a0515016600101906103405182116136a3576103405182161561368b5761360f6020610d9e6002602761353c84610d9e6006829b83603d9b61366c9f61365e9e61034051165f1904115f14613670578161016051517f3c67207374796c653d227472616e73666f726d3a7472616e736c617465283232828201527f3670782c20333932707829223e3c726563742077696474683d22333670782220610160518201527f6865696768743d2233367078222072783d22387078222072793d22387078222060608201527f66696c6c3d226e6f6e6522207374726f6b653d2272676261283235352c32353560808201526c16191a9a96181719149110179f60991b60a08201527f3c673e3c70617468207374796c653d227472616e73666f726d3a7472616e736c60ad8201527f617465283670782c367078292220643d224d313220304c31322e36353232203960cd8201527f2e35363538374c313820312e363037374c31332e373831392031302e3231383160ed82015272026191917199c9919901b26189a171a199a189606d1b61010d8201527f31312e333437384c32342031324c31342e343334312031322e363532324c32326101208201527f2e333932332031384c31332e373831392031332e373831394c31382032322e336101408201527f3932334c31322e363532322031342e343334314c31322032344c31312e33343761016082015270382031342e343334314c362032322e333960781b610240518201527f32334c31302e323138312031332e373831394c312e363037372031384c392e356101918201527f363538372031322e363532324c302031324c392e35363538372031312e3334376101b18201527f384c312e3630373720364c31302e323138312031302e323138314c3620312e366101d18201527f3037374c31312e3334373820392e35363538374c313220305a222066696c6c3d6101f182015269113bb434ba329110179f60b11b6102118201527f3c616e696d6174655472616e73666f726d206174747269627574654e616d653d61021b8201527f227472616e73666f726d2220747970653d22726f74617465222066726f6d3d2261023b8201527f302031382031382220746f3d2233363020313820313822206475723d2231307361025b8201527f2220726570656174436f756e743d22696e646566696e697465222f3e3c2f673e61027b820152631e17b39f60e11b61029b82015261027f81526134ac61029f82613f42565b915b61016051519788958160c05151808260c05101838b015e88018181019060a051825261010051518092846101005101905e01019060a0518252805192839101825e019060a0518252805192839101825e0160a05181526080515190818460805101825e019060a0518252805192839101825e01651e17b9bb339f60d11b815203601919810184520182613f42565b6101605151948591683d913730b6b2911d1160b91b82840152601260296103e0515180856103e051018388015e850171111610113232b9b1b934b83a34b7b7111d1160711b8282015261040051519081866104005101603b83015e01018181019060a05182526103c051518092866103c05101905e0101906c1116101134b6b0b3b2911d101160991b82527919185d184e9a5b5859d94bdcdd99cade1b5b0ed8985cd94d8d0b60321b600d8301528051928391018583015e0161227d60f01b838201520301601d19810184520182613f42565b61016051519384917f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000828401528051918291018484015e810160a051838201520301601f198101835282613f42565b610160515191829182613e00565b0390f35b8161016051516136808282613f42565b60a0518152916134ae565b634e487b7160e01b60a051526012600452602460a051fd5b634e487b7160e01b60a051526011600452602460a051fd5b60055f60a0526136cb6005613f65565b610140526101605151610120526136e86101405161012051613f42565b600561012051526101205150601f196137016005613f65565b013660206101205101375f5b8181106137f65750505f60a052600361372581613f65565b61373461016051519182613f42565b818152601f1961374383613f65565b0136602083013760275b602a81106137ac5750602091816137a792508361016051519485926101205151808361012051018487015e8401906217171760e91b83830152805192839101602383015e01015f838201520301601f198101835282613f42565b6129b0565b60ff60f81b6137bd8260e051613fdc565b51169060261981018181116137e2576137db6001935f1a9185613fdc565b530161374d565b634e487b7160e01b5f52601160045260245ffd5b60019060ff60f81b61380a8260e051613fdc565b51165f1a61381b8261012051613fdc565b530161370d565b9050956125d5565b9050946125cd565b81986125c4565b879a6125bb565b61392797945060089591601b97602c88936027979c61016051519d8e9a6b1e31b4b931b6329031bc1e9160a11b60208d0152518091858d015e8a019067383c111031bc9e9160c11b84830152518092603483015e0101907a383c1110391e911a383c11103334b6361e913bb434ba329110179f60291b848301526b1e31b4b931b6329031bc1e9160a11b6023830152518092602f83015e01019067383c111031bc9e9160c11b84830152518092602f83015e01017a383c1110391e911a383c11103334b6361e913bb434ba329110179f60291b838201520301600419810184520182613f42565b6126c3565b505f198514612590565b6008811361397c575060796020604051613951604082613f42565b60198152784d31203143333320343920393720313133203134352031343560381b82820152926124f3565b601081136139c2575060796020604051613997604082613f42565b60198152784d31203143333320353720383920313133203134352031343560381b82820152926124f3565b60208113613a085750607960206040516139dd604082613f42565b60198152784d31203143323520363520383120313231203134352031343560381b82820152926124f3565b60408113613a4e575060796020604051613a23604082613f42565b60198152784d31203143313720373320373320313239203134352031343560381b82820152926124f3565b60808113613a93575060796020604051613a69604082613f42565b60188152774d312031433920383120363520313337203134352031343560401b82820152926124f3565b61010012613ad95760796020604051613aad604082613f42565b601a8152794d31203143312038392035372e3520313435203134352031343560301b82820152926124f3565b60796020604051613aeb604082613f42565b60188152774d312031433120393720343920313435203134352031343560401b82820152926124f3565b634e487b7160e01b5f52601260045260245ffd5b5f198203613b5d57604051613b3f604082613f42565b600a81526911b330b23296b237bbb760b11b60208201525b94612478565b604051613b6b604082613f42565b6005815264236e6f6e6560d81b6020820152613b57565b634e487b7160e01b5f52604160045260245ffd5b82613ba2602a92615481565b95610680565b82613bb4600292615481565b61065b565b82613bc5600a92615481565b92610639565b6101006102c051015160020b9161039f565b6101206102c051015160020b610368565b9050956101d3565b81926101cb565b9093506020813d602011613c2d575b81613c1960209383613f42565b81010312613c2957519285610196565b5f80fd5b3d9150613c0c565b6040513d5f823e3d90fd5b8263ed15e6cf60e01b5f5260045260245ffd5b9150508060c03d60c011613d07575b613c6c8183613f42565b81010360c08112613c295760a013613c29576040519060a082016001600160401b03811183821017613b8257604052613ca4816140b7565b8252613cb2602082016140b7565b6020830152604081015162ffffff81168103613c2957604083015260608101518060020b8103613c295760608301526080810151906001600160a01b0382168203613c295760a0916080840152015183610104565b503d613c62565b34613c29576040366003190112613c2957613d27613dea565b6024356001600160a01b0381168103613c2957613d4e613d48602093613e2a565b91613e2a565b12604051908152f35b34613c29575f366003190112613c29576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b34613c29575f366003190112613c295761366c613db6614001565b60405191829182613e00565b34613c29576020366003190112613c2957602090613de6613de1613dea565b613e2a565b8152f35b600435906001600160a01b0382168203613c2957565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b6001600160a01b031680158015613f02575b613efb5760014614613e4e575b505f90565b73a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488103613e70575061012c90565b73dac17f958d2ee523a2206206994597c13d831ec78103613e91575060c890565b736b175474e89094c44da98b954eedeac495271d0f8103613eb25750606490565b738daebade922df735c38c80c7ebd708af50815faa8103613ed4575060c71990565b732260fac5e5542a773aa44fbcfedf7c193bc2c59914613ef4575f613e49565b61012b1990565b5060631990565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168114613e3c565b5f1981146137e25760010190565b601f909101601f19168101906001600160401b03821190821017613b8257604052565b6001600160401b038111613b8257601f01601f191660200190565b613f8a6006613f65565b90613f986040519283613f42565b6006825281601f19613faa6006613f65565b0190602036910137565b90613fbe82613f65565b613fcb6040519182613f42565b8281528092613faa601f1991613f65565b908151811015613fed570160200190565b634e487b7160e01b5f52603260045260245ffd5b5f5b602081108061407b575b156140205761401b90613f34565b614003565b61402981613fb4565b907f0000000000000000000000000000000000000000000000000000000000000000905f5b81811061405b5750505090565b6020811015613fed5780836001921a6140748287613fdc565b530161404e565b15613fed577f0000000000000000000000000000000000000000000000000000000000000000811a60f81b6001600160f81b031916151561400d565b51906001600160a01b0382168203613c2957565b6001600160a01b038116915f9190831561421e57506140e99061431e565b9182511561416b5750600c8251116140ff575090565b9061410a600c613f65565b916141186040519384613f42565b600c8352601f19614129600c613f65565b01366020850137805b600c81106141405750505090565b6001906001600160f81b03196141568286613fdc565b5116831a6141648287613fdc565b5301614132565b915050614176613f80565b905f5b6003811061418657505090565b80601303601381116137e2576001600160fd1b03811681036137e257829060031b1c9060f080600f198416161660ff8316039160ff83116137e257600f6141d09160041c1661561f565b600182901b926001600160ff1b03831683036137e2576141fc915f1a6141f68588613fdc565b5361561f565b91600181018091116137e2576142176001935f1a9186613fdc565b5301614179565b9250505090565b3d1561424f573d9061423682613f65565b916142446040519384613f42565b82523d5f602084013e565b606090565b6001600160a01b038116156142cf575f8091604051602081019063313ce56760e01b825260048152614287602482613f42565b51915afa614293614225565b9015613e49578051602081146142aa575b50505f90565b8160209181010312613c29576020015160ff8111156142c957806142a4565b60ff1690565b50601290565b604051906142e4604083613f42565b60068252654e617469766560d01b6020830152565b60405190614308604083613f42565b60078252664e6f20486f6f6b60c81b6020830152565b5f809160405160208101906395d89b4160e01b825260048152614342602482613f42565b51915afa61434e614225565b90156144ad57805160208103614420575060208151918180820193849201010312613c2957519060405191614384604084613f42565b602080845236848201375f905f5b602081106143e15750506143a581613fb4565b905f5b8181106143b6575090925050565b6001906001600160f81b03196143cc8288613fdc565b51165f1a6143da8286613fdc565b53016143a8565b81811a60f881901b6001600160f81b031916614401575b50600101614392565b83614419916144136001949689613fdc565b53613f34565b92906143f8565b6040811161443e575050604051614438602082613f42565b5f815290565b810190602081818401930312613c29576020810151906001600160401b038211613c29570181603f82011215613c295760208101519061447d82613f65565b9261448b6040519485613f42565b82845260408284010111613c2957815f926040602093018386015e8301015290565b50604051614438602082613f42565b60ff1660ff81146137e25760010190565b6040519061010082016001600160401b03811183821017613b82576040525f60e0838281528260208201528260408201528260608201528260808201528260a08201528260c08201520152565b919082039182116137e257565b90601082018092116137e257565b90606482018092116137e257565b919082018092116137e257565b60ff5f199116019060ff82116137e257565b60ff6004199116019060ff82116137e257565b604d81116137e257600a0a90565b8115613b15570490565b62ffffff8116906280000082146148015781156147df575f9262ffffff5f925b169182156146195760ff8116156145de57600a6145d66145d062ffffff936144bc565b96613f34565b9593046145ad565b9362ffffff600a8406166145fc575b600a6145d662ffffff92613f34565b93600a6145d661460f62ffffff936144bc565b96925050506145ed565b90939291506146266144cd565b916005841061475f5760ff8216916004614640848761451a565b106147565760ff5f5b169260041986018681116137e25760ff61466284614550565b1681101561473a57505f905b60808601918183526146808183614543565b5f198101939084116137e2576146b18760ff6146ab8180958d60a0836146bc9c169101525116614550565b16614543565b166040880152614543565b92600184018094116137e25760ff6146f292816146df6146ed946146f898614543565b1660208801525b168661451a565b614575565b90614583565b8152600160e0820152600482111561472d5760031982019182116137e25760ff8061472a93165b166060820152614be7565b90565b61472a915060ff5f61471f565b6147509060ff61474985614550565b169061451a565b9061466e565b60ff6001614649565b83600503600581116137e2576002608085015260028101908181116137e257600181019182116137e25760ff61479f921660a086015260ff841690614543565b600281018091116137e25760ff168060208501526001190160ff81116137e2576146ed60ff6146f894816146f294166040880152600160c08801526146e6565b50506040516147ef604082613f42565b6002815261302560f01b602082015290565b5050604051614811604082613f42565b600781526644796e616d696360c81b602082015290565b905f805b835160ff82169081101561488157614859906001600160f81b0319906148529087613fdc565b5116615413565b61486c575b614867906144bc565b61482c565b90614879614867916144bc565b91905061485e565b505060ff168061488e5750565b61489c6148a1918451614543565b613fb4565b5f925f5b815160ff8216908110156149265761490691906148ce6001600160f81b03196148528387613fdc565b61490b575b6001600160f81b0319906148e79085613fdc565b5116956149006148f682613f34565b975f1a9186613fdc565b536144bc565b6148a5565b605c61492061491989613f34565b9887613fdc565b536148d3565b509193505050565b5f908072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b811015614a53575b600a906904ee2d6d415b85acef8160201b811015614a37575b662386f26fc10000811015614a23575b6305f5e100811015614a12575b612710811015614a03575b60648110156149f5575b10156149ea575b600a60216149b260018501613fb4565b938401015b5f1901916f181899199a1a9b1b9c1cb0b131b232b360811b8282061a83530480156149e557600a90916149b7565b505090565b6001909101906149a2565b60646002910493019261499b565b61271060049104930192614991565b6305f5e10060089104930192614986565b662386f26fc1000060109104930192614979565b602093909301926904ee2d6d415b85acef8160201b9004614969565b506040915072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8104614950565b818102929181159184041417156137e257565b90815115614bc55760405191614aa0606084613f42565b604083527f4142434445464748494a4b4c4d4e4f505152535455565758595a61626364656660208401527f6768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f60408401528051600281018091116137e257600390046001600160fe1b03811681036137e257614b1d9060021b613fb4565b90602082019080815182019560208701908151925f83525b888110614b775750506003939495965052510680600114614b6557600214614b5b575090565b603d905f19015390565b50603d90815f19820153600119015390565b600360049199969901986001603f8b5182828260121c16870101518453828282600c1c16870101518385015382828260061c1687010151600285015316840101516003820153019497614b35565b9050604051614438602082613f42565b60ff60019116019060ff82116137e257565b614bf760ff602083015116613fb4565b9060e0810151614d1a575b60c0810151614cf6575b60ff6080820151165b60ff614c268160a085015116614bd5565b16811015614c4457806030614c3d60019386613fdc565b5301614c15565b50915b825115614cf15760ff6060840151168015159081614ce0575b50614cb4575b600a835106603001806030116137e257604084018051909160f81b6001600160f81b0319165f1a90614c9b9060ff1685613fdc565b5360ff5f198183511601169052600a8351048352614c47565b6040830160ff8151169081156137e2575f19820160ff169052602e90614cda9084613fdc565b53614c66565b905060ff604085015116145f614c60565b915090565b815115613fed5760306020830153815160011015613fed57602e6021830153614c0c565b81515f1981019081116137e257614d3360259184613fdc565b53614c02565b9060020b9060020b02908160020b9182036137e257565b60405190614d5f604083613f42565b600382526226a4a760e91b6020830152565b60405190614d80604083613f42565b600382526209a82b60eb1b6020830152565b909392938060020b8015613b1557614db08282620d89e71905614d39565b600293840b930b8303614dda57505050509050155f14614dd25761472a614d50565b61472a614d71565b90614de991620d89e805614d39565b60020b8103614e0c57505015159050614e045761472a614d71565b61472a614d50565b8060ff1d8181011890620d89e882116154015763ffffffff91600160801b7001fffcb933bd6fad37aa2d162d1a5940016001831602189190600281166153e5575b600481166153c9575b600881166153ad575b60108116615391575b60208116615375575b60408116615359575b6080811661533d575b6101008116615321575b6102008116615305575b61040081166152e9575b61080081166152cd575b61100081166152b1575b6120008116615295575b6140008116615279575b618000811661525d575b620100008116615241575b620200008116615226575b62040000811661520b575b62080000166151f2575b5f126151ea575b0160201c916151c5575b60ff80911692168083035f8212848212811690858313901516176137e2575f81126151b257925b831515806151a7575b156151955760019283929091111561516957614f6d90614f6085841c614575565b90838060a01b0316614a76565b92161461515b575b614f7f8180615826565b600160601b9190911190811561514c57614f98906158b9565b905b815f815b61513857614fac9150614550565b905f83600560ff85161161510c575b50600a6004818606119404936150fa575b620186a084146150ec575b6150dc575b614fe46144cd565b9181156150605760ff16602b039260ff84116137e25760ff84166007019360ff85116137e25760ff602085019516855260026080850152602b81116137e257600181018091116137e25761504760ff61472a968180941660a08801525116614550565b1660408401525b825260c08201525f60e0820152614be7565b60ff811690600982106150aa5750600319019260ff84116137e25760ff6150988161472a961680602087015260056080870152614550565b1660a08401526004604084015261504e565b61472a9491506150d16150cc60ff926006602088015260056040880152614562565b614bd5565b16606084015261504e565b906150e6906144bc565b90614fdc565b5091600a9004916001614fd7565b92600181018091116137e25792614fcc565b90935060ff61511a84614562565b1690604d82116137e25761513191600a0a90614583565b925f614fbb565b615143600a916144bc565b91049081614f9e565b6151559061586f565b90614f9a565b615164906157aa565b614f75565b6151859061517885841c614575565b90838060a01b0316614583565b921603614f75576151649061570b565b50506001600160a01b03169050614f75565b506012841115614f3f565b600160ff1b81146137e2575f0392614f36565b906001600160a01b03168015613b1557600160c01b046001600160a01b031690614f0f565b5f1904614f05565b6b048a170391f7dc42444e8fa290910260801c90614efe565b6d2216e584f5fa1ea926041bedfe9890920260801c91614ef4565b916e5d6af8dedb81196699c329225ee6040260801c91614ee9565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91614ede565b916f31be135f97d08fd981231505542fcfa60260801c91614ed3565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614ec9565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91614ebf565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614eb5565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614eab565b916ff3392b0822b70005940c7a398e4b70f30260801c91614ea1565b916ff987a7253ac413176f2b074cf7815e540260801c91614e97565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91614e8d565b916ffe5dee046a99a2a811c461f1969c30530260801c91614e83565b916fff2ea16466c96a3843ec78b326b528610260801c91614e7a565b916fff973b41fa98c081472e6896dfb254c00260801c91614e71565b916fffcb9843d60f6159c9db58835c9266440260801c91614e68565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91614e5f565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c91614e56565b916ffff97272373d413259a46990580e213a0260801c91614e4d565b6345c3193d60e11b5f5260045260245ffd5b60ff60f81b16601160f91b8114908115615467575b8115615459575b811561544b575b8115615440575090565b600960f81b14919050565b600d60f81b81149150615436565b600560f91b8114915061542f565b600360fa1b81149150615428565b80156137e2575f190190565b8061548c602a613f65565b9161549a6040519384613f42565b602a83526154a8602a613f65565b6020840190601f1901368237835115613fed5760309053825160011015613fed576078602184015360295b600181116154fb57506154e4575090565b63e22e27eb60e01b5f52600452601460245260445ffd5b90600f8116906010821015613fed57615538916f181899199a1a9b1b9c1cb0b131b232b360811b901a61552e8487613fdc565b5360041c91615475565b6154d3565b600292830b920b8212156155525750505f1990565b60020b121561556057600190565b5f90565b60881c61556f613f80565b90815190815b61557e57505090565b600f8116906010821015613fed575f1983018381116137e2576155bc926f181899199a1a9b1b9c1cb0b131b232b360811b901a9061552e9086613fdc565b9081615575565b6155cb613f80565b90815190815b6155da57505090565b600f8116906010821015613fed575f1983018381116137e257615618926f181899199a1a9b1b9c1cb0b131b232b360811b901a9061552e9086613fdc565b90816155d1565b60ff16600a8110156156465760300160ff81116137e25760f81b6001600160f81b03191690565b60370160ff81116137e25760f81b6001600160f81b03191690565b5f80516020615cb983398151915281525f80516020615db983398151915260208201527f2f2f7777772e77332e6f72672f323030302f737667273e3c636972636c652063604082015262783d2760e81b606082015260630190565b7f707822206865696768743d2232367078222072783d22387078222072793d223881527f7078222066696c6c3d227267626128302c302c302c302e362922202f3e0000006020820152603d0190565b608081901b5f19600160801b83098180821091039080820391827003298b075b4b6a5240945790619b37fd4a1115613c295714615791577f1f514b8ee5362595de309a65c03ce543f7e851e1625ea646b8fe88b81023b92d927003298b075b4b6a5240945790619b37fd4a90600160801b900990828211900360ff1b910360011c170290565b507003298b075b4b6a5240945790619b37fd4a91500490565b7003298b075b4b6a5240945790619b37fd4a8102905f197003298b075b4b6a5240945790619b37fd4a820990828083109203918083039283600160801b1115613c29571461581e57600160801b907003298b075b4b6a5240945790619b37fd4a900990828211900360801b910360801c1790565b505060801c90565b81810291905f1982820991838084109303928084039384600160401b1115613c29571461586657600160401b910990828211900360c01b910360401c1790565b50505060401c90565b620186a08102905f19620186a0820990828083109203918083039283600160801b1115613c29571461581e57600160801b90620186a0900990828211900360801b910360801c1790565b6c47bf19673df52e37f2410011d1602c1b81810291905f1990820990828083109203918083039283600160801b1115613c29571461581e57600160801b906c47bf19673df52e37f2410011d1602c1b900990828211900360801b910360801c1790565b60209060405161592c8382613f42565b5f8152828260020b5f8112615983575b508061594f62ffffff61472a951661492e565b6040519584879551918291018487015e8401908282015f8152815193849201905e01015f815203601f198101835282613f42565b925050505f038060020b9081036137e25761472a90828061594f62ffffff6040516159af604082613f42565b60018152602d60f81b84820152949550505061593c565b604051906159d5604083613f42565b6002825261323760f01b6020830152565b604051906159f5604083613f42565b6002825261323160f01b6020830152565b60405190615a15604083613f42565b6002825261062760f31b6020830152565b60405190615a35604083613f42565b60018252600760fb1b6020830152565b9060020b9060020b01627fffff198112627fffff8213176137e257600290810b0560020b6201e8471981125f14615a9f5750615a7f615a26565b90604051615a8e604082613f42565b60018152603760f81b602082015290565b620124f719811215615ad75750615ab4615a26565b90604051615ac3604082613f42565b600481526331302e3560e01b602082015290565b6161a719811215615b0f5750615aeb615a26565b90604051615afa604082613f42565b600581526431342e323560d81b602082015290565b61138719811215615b415750604051615b29604082613f42565b6002815261031360f41b60208201529061472a615a06565b5f811215615b705750604051615b58604082613f42565b6002815261313160f01b60208201529061472a6159e6565b611388811215615bb95750604051615b89604082613f42565b6002815261313360f01b602082015290604051615ba7604082613f42565b6002815261323360f01b602082015290565b6161a8811215615c025750604051615bd2604082613f42565b6002815261313560f01b602082015290604051615bf0604082613f42565b6002815261323560f01b602082015290565b620124f8811215615c375750615c16615a06565b90604051615c25604082613f42565b6002815261191b60f11b602082015290565b6201e8481315615c5257615c496159e6565b9061472a6159c6565b604051615c60604082613f42565b60028152610c8d60f21b60208201529061472a6159c656fe203c616e696d6174652061646469746976653d2273756d22206174747269627565663d22646174613a696d6167652f7376672b786d6c3b6261736536342c00003c7376672077696474683d2732393027206865696768743d2735303027207669696c793d2227436f7572696572204e6577272c206d6f6e6f73706163652220663c7465787420783d22313270782220793d22313770782220666f6e742d66616d70616e2066696c6c3d2272676261283235352c3235352c3235352c302e3629226f3d22313030252220626567696e3d22307322206475723d223330732220726574654e616d653d2273746172744f6666736574222066726f6d3d2230252220746f6e742d73697a653d2231317078222066696c6c3d227768697465223e3c7473203c67207374796c653d227472616e73666f726d3a7472616e736c61746528326577426f783d2730203020323930203530302720786d6c6e733d27687474703a207374796c653d227472616e73666f726d3a7472616e736c6174652837327078a164736f6c634300081a000a0000000000000000000000001f9840000000000000000000000000000000000400000000000000000000000042000000000000000000000000000000000000064554480000000000000000000000000000000000000000000000000000000000", - "nonce": "0xe", - "chainId": "0x82" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x86f8f6510d17aaafa452e052fe0a50479145abe63373bf6f60d49a2790c55288", - "transactionType": "CREATE2", - "contractName": "TransparentUpgradeableProxy", - "contractAddress": "0x9fb28449a191cd8c03a1b7abfb0f5996ecf7f722", - "function": null, - "arguments": [ - "0x8Be6F6785B71c16CA238ABbCdD3F33271969C305", - "0x2BAD8182C09F50c8318d769245beA52C32Be46CD", - "0x" - ], - "transaction": { - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a0604052604051610d80380380610d808339810160408190526100229161036a565b828161002e828261008c565b50508160405161003d9061032e565b6001600160a01b039091168152602001604051809103905ff080158015610066573d5f803e3d5ffd5b506001600160a01b031660805261008461007f60805190565b6100ea565b505050610451565b61009582610157565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156100de576100d982826101d5565b505050565b6100e6610248565b5050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6101295f80516020610d60833981519152546001600160a01b031690565b604080516001600160a01b03928316815291841660208301520160405180910390a161015481610269565b50565b806001600160a01b03163b5f0361019157604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b60605f80846001600160a01b0316846040516101f1919061043b565b5f60405180830381855af49150503d805f8114610229576040519150601f19603f3d011682016040523d82523d5f602084013e61022e565b606091505b50909250905061023f8583836102a6565b95945050505050565b34156102675760405163b398979f60e01b815260040160405180910390fd5b565b6001600160a01b03811661029257604051633173bdd160e11b81525f6004820152602401610188565b805f80516020610d608339815191526101b4565b6060826102bb576102b682610305565b6102fe565b81511580156102d257506001600160a01b0384163b155b156102fb57604051639996b31560e01b81526001600160a01b0385166004820152602401610188565b50805b9392505050565b8051156103155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104c68061089a83390190565b80516001600160a01b0381168114610351575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f6060848603121561037c575f80fd5b6103858461033b565b92506103936020850161033b565b60408501519092506001600160401b038111156103ae575f80fd5b8401601f810186136103be575f80fd5b80516001600160401b038111156103d7576103d7610356565b604051601f8201601f19908116603f011681016001600160401b038111828210171561040557610405610356565b60405281815282820160200188101561041c575f80fd5b8160208401602083015e5f602083830101528093505050509250925092565b5f82518060208501845e5f920191825250919050565b6080516104326104685f395f601001526104325ff3fe608060405261000c61000e565b005b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361007a575f356001600160e01b03191663278f794360e11b14610070576040516334ad5dbb60e21b815260040160405180910390fd5b610078610082565b565b6100786100b0565b5f806100913660048184610303565b81019061009e919061033e565b915091506100ac82826100c0565b5050565b6100786100bb61011a565b610151565b6100c98261016f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156101125761010d82826101ea565b505050565b6100ac61025c565b5f61014c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e80801561016b573d5ff35b3d5ffd5b806001600160a01b03163b5f036101a957604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610206919061040f565b5f60405180830381855af49150503d805f811461023e576040519150601f19603f3d011682016040523d82523d5f602084013e610243565b606091505b509150915061025385838361027b565b95945050505050565b34156100785760405163b398979f60e01b815260040160405180910390fd5b6060826102905761028b826102da565b6102d3565b81511580156102a757506001600160a01b0384163b155b156102d057604051639996b31560e01b81526001600160a01b03851660048201526024016101a0565b50805b9392505050565b8051156102ea5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f8085851115610311575f80fd5b8386111561031d575f80fd5b5050820193919092039150565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561034f575f80fd5b82356001600160a01b0381168114610365575f80fd5b9150602083013567ffffffffffffffff811115610380575f80fd5b8301601f81018513610390575f80fd5b803567ffffffffffffffff8111156103aa576103aa61032a565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103d9576103d961032a565b6040528181528282016020018710156103f0575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f82518060208501845e5f92019182525091905056fea164736f6c634300081a000a608060405234801561000f575f80fd5b506040516104c63803806104c683398101604081905261002e916100bb565b806001600160a01b03811661005c57604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b6100658161006c565b50506100e8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100cb575f80fd5b81516001600160a01b03811681146100e1575f80fd5b9392505050565b6103d1806100f55f395ff3fe608060405260043610610049575f3560e01c8063715018a61461004d5780638da5cb5b146100635780639623609d1461008e578063ad3cb1cc146100a1578063f2fde38b146100de575b5f80fd5b348015610058575f80fd5b506100616100fd565b005b34801561006e575f80fd5b505f546040516001600160a01b0390911681526020015b60405180910390f35b61006161009c366004610260565b610110565b3480156100ac575f80fd5b506100d1604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100859190610365565b3480156100e9575f80fd5b506100616100f836600461037e565b61017b565b6101056101bd565b61010e5f6101e9565b565b6101186101bd565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906101489086908690600401610399565b5f604051808303818588803b15801561015f575f80fd5b505af1158015610171573d5f803e3d5ffd5b5050505050505050565b6101836101bd565b6001600160a01b0381166101b157604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6101ba816101e9565b50565b5f546001600160a01b0316331461010e5760405163118cdaa760e01b81523360048201526024016101a8565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146101ba575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f60608486031215610272575f80fd5b833561027d81610238565b9250602084013561028d81610238565b9150604084013567ffffffffffffffff8111156102a8575f80fd5b8401601f810186136102b8575f80fd5b803567ffffffffffffffff8111156102d2576102d261024c565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156103015761030161024c565b604052818152828201602001881015610318575f80fd5b816020840160208301375f602083830101528093505050509250925092565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6103776020830184610337565b9392505050565b5f6020828403121561038e575f80fd5b813561037781610238565b6001600160a01b03831681526040602082018190525f906103bc90830184610337565b94935050505056fea164736f6c634300081a000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000008be6f6785b71c16ca238abbcdd3f33271969c3050000000000000000000000002bad8182c09f50c8318d769245bea52c32be46cd00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", - "nonce": "0xf", - "chainId": "0x82" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x51161eb65e19fabceb5de42cf48b3d4d283fa9d455c755d2f2fbf7b91b77d9ee", - "transactionType": "CREATE2", - "contractName": "PositionManager", - "contractAddress": "0x4529a01c7a0410167c5740c487a8de60232617bf", - "function": null, - "arguments": [ - "0x1F98400000000000000000000000000000000004", - "0x000000000022D473030F116dDEE9F6B43aC78BA3", - "300000", - "0x9fb28449a191CD8C03a1B7abfb0F5996ECf7f722", - "0x4200000000000000000000000000000000000006" - ], - "transaction": { - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000061018080604052346105365760a0816162a38038038091610020828561053a565b8339810103126105365780516001600160a01b03811681036105365760208201516001600160a01b03811681036105365760408301516060840151936001600160a01b03851685036105365760800151926001600160a01b03841684036105365760405161008f60408261053a565b6018815260208101907f556e697377617020763420506f736974696f6e73204e4654000000000000000082526040516100c960408261053a565b600b81526a554e492d56342d504f534d60a81b602082015281516001600160401b03811161044a575f54600181811c9116801561052c575b602082101461042c57601f81116104ca575b50806020601f8211600114610469575f9161045e575b508160011b915f199060031b1c1916175f555b8051906001600160401b03821161044a5760015490600182811c92168015610440575b602083101461042c5781601f8493116103be575b50602090601f8311600114610358575f9261034d575b50508160011b915f199060031b1c1916176001555b5190208060c0524660a05260405160208101917f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86683526040820152466060820152306080820152608081526101f460a08261053a565b51902060805260e052610100526101205261014052600160085561016052604051615d45908161055e8239608051816124d5015260a051816124af015260c05181612524015260e051818181610af601528181610eb501528181611174015281816118c001528181611c3c01528181611cd1015281816120a1015281816121980152818161295801528181612a2c01528181612f1b01528181613d4601528181613e3901528181613edc01528181613ff30152818161431b0152818161457401528181614ae901528181614c6601528181614de401528181614ec901528181614f59015261576f01526101005181818161144001526131fb01526101205181818161039c01528181610a0e01528181610dc90152614efa015261014051818181611482015281816129ca01528181613a4201528181613a9e01528181613bc20152613c4b0152610160518181816116350152611fab0152f35b015190505f80610189565b60015f9081528281209350601f198516905b8181106103a6575090846001959493921061038e575b505050811b0160015561019e565b01515f1960f88460031b161c191690555f8080610380565b9293602060018192878601518155019501930161036a565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c81019160208510610422575b90601f859493920160051c01905b8181106104145750610173565b5f8155849350600101610407565b90915081906103f9565b634e487b7160e01b5f52602260045260245ffd5b91607f169161015f565b634e487b7160e01b5f52604160045260245ffd5b90508301515f610129565b5f8080528181209250601f198416905b8181106104b25750908360019493921061049a575b5050811b015f5561013c565b8501515f1960f88460031b161c191690555f8061048e565b9192602060018192868a015181550194019201610479565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c81019160208410610522575b601f0160051c01905b8181106105175750610113565b5f815560010161050a565b9091508190610501565b90607f1690610101565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761044a5760405256fe60806040526004361015610022575b3615610018575f80fd5b6100206129c0565b005b5f3560e01c80622a3e3a1461029057806301ffc9a71461028b57806305c1ee201461028657806306fdde0314610281578063081812fc1461027c578063095ea7b3146102775780630f5730f11461027257806312261ee71461026d57806316a24131146102685780631efeed331461026357806323b872dd1461025e5780632b67b570146102595780632b9261de146102545780633644e5151461024f5780633aea60f01461024a57806342842e0e146102455780634767565f146102405780634aa4a4fc1461023b5780634afe393c14610236578063502e1a16146102315780635a9d7a681461022c5780636352211e1461022757806370a082311461022257806375794a3c1461021d5780637ba03aad1461021857806386b6be7d1461021357806389097a6a1461020e57806391dd73461461020957806395d89b4114610204578063a22cb465146101ff578063ac9650d8146101fa578063ad0b27fb146101f5578063b88d4fde146101f0578063c87b56dd146101eb578063d737d0c7146101e6578063dc4c90d3146101e1578063dd46508f146101dc578063e985e9c5146101d75763f70204050361000e576122ae565b612248565b6120c5565b612082565b61203d565b611f56565b611c7c565b611c28565b611b2b565b611a7b565b6119c6565b611884565b61185a565b6117be565b61174f565b611732565b611688565b611659565b611616565b6115cc565b6114d7565b611463565b611429565b611161565b611088565b611057565b610e72565b610d58565b610ae2565b610a65565b610a32565b6109ef565b6108e0565b610839565b610806565b6106ef565b61063e565b61056c565b61033c565b6001600160a01b038116036102a657565b5f80fd5b35906102b582610295565b565b9181601f840112156102a65782359167ffffffffffffffff83116102a657602083818601950101116102a657565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103399281815201906102e5565b90565b60606003193601126102a65760043561035481610295565b6024359067ffffffffffffffff82116102a6578136039160606003198401126102a65760443567ffffffffffffffff81116102a6576103979036906004016102b7565b6060947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693909290843b156102a6576001600160a01b03604051967f2a2d80d10000000000000000000000000000000000000000000000000000000088521660048701526060602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156102a65781016024600482013591019467ffffffffffffffff82116102a6578160071b360386136102a65760606064890152819052869460e48601949392915f5b81811061051a575050506104cb5f9694869488946044856104b36104a360248b99016102aa565b6001600160a01b03166084890152565b013560a48601526003198584030160448601526123c0565b03925af19081610500575b506104f757506104f36104e7612466565b60405191829182610328565b0390f35b6104f3906104e7565b8061050e5f610514936106ae565b80610656565b5f6104d6565b91965091929394608080826105316001948b612361565b01970191019188969594939261047c565b7fffffffff000000000000000000000000000000000000000000000000000000008116036102a657565b346102a65760206003193601126102a65760207fffffffff000000000000000000000000000000000000000000000000000000006004356105ac81610542565b167f01ffc9a7000000000000000000000000000000000000000000000000000000008114908115610614575b81156105ea575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150145f6105df565b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491506105d8565b60206003193601126102a65761002060043533612a54565b5f9103126102a657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176106a957604052565b610660565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a957604052565b346102a6575f6003193601126102a6576040515f80548060011c90600181169081156107fc575b6020831082146107cf5782855260208501919081156107985750600114610748575b6104f3846104e7818603826106ae565b5f8080529250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818410610784575050016104e782610738565b805484840152602090930192600101610771565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b0190506104e782610738565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610716565b346102a65760206003193601126102a6576004355f52600460205260206001600160a01b0360405f205416604051908152f35b346102a65760406003193601126102a65760043561085681610295565b602435805f5260026020526001600160a01b0360405f2054169182331415806108af575b6108875761002092612ab5565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b50825f52600560205260ff6108d83360405f20906001600160a01b03165f5260205260405f2090565b54161561087a565b60a06003193601126102a6576004356108f881610295565b602435604435916064359260843567ffffffffffffffff81116102a6576109239036906004016102b7565b948242116109c7576109bc856109c293610020986109b6885f8099868252600260205281896001600160a01b036040832054169c8d9981604051977f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad89526001600160a01b0360208a01911681526040890192835260608901948552608089019687528160a08a20995252525252612b2c565b91612be5565b82612a54565b612ab5565b7f5a9165ff000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576004355f52600760205260206001600160a01b0360405f205416604051908152f35b346102a65760206003193601126102a6576020610a9c600435610a8781612669565b919082851c60020b9260081c60020b91612e68565b6fffffffffffffffffffffffffffffffff60405191168152f35b60031960609101126102a657600435610ace81610295565b90602435610adb81610295565b9060443590565b346102a657610af036610ab6565b91610b1a7f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30578291610c41610b54610b48610b3b865f52600260205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b91610b6a6001600160a01b03851693841461302f565b610bb46001600160a01b03821694610b83861515613094565b8433148015610cf2575b8015610ccd575b610b9d906130f9565b6001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610bf5816001600160a01b03165f52600360205260405f2090565b80546001019055610c0e855f52600260205260405f2090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610c7e610c56845f52600460205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4610cbe610cb7825f52600960205260405f2090565b5460ff1690565b610cc457005b6100209061315e565b50610b9d610ce9610b48610b3b8a5f52600460205260405f2090565b33149050610b94565b50610d2b610cb733610d15846001600160a01b03165f52600560205260405f2090565b906001600160a01b03165f5260205260405f2090565b610b8d565b7fd4b05fe0000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101006003193601126102a657600435610d7181610295565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102a65760e43567ffffffffffffffff81116102a657610dbb9036906004016102b7565b916060926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576001600160a01b035f80946104cb604051978896879586947f2b67b570000000000000000000000000000000000000000000000000000000008652166004850152610e3d602485016122f6565b6001600160a01b0360a435610e5181610295565b1660a485015260c43560c485015261010060e48501526101048401916123c0565b60606003193601126102a657602435600435610e8d82610295565b60443567ffffffffffffffff81116102a657610ead9036906004016102b7565b610ed99391937f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057610ee783336132b6565b1561102b576001600160a01b03610f09610b3b855f52600760205260405f2090565b1680610fef57505f83815260096020526040902080546001179055610fbf90610fbb90610fb56001600160a01b03851696610f5088610c0e895f52600760205260405f2090565b610f896040519384927f8d57f6b20000000000000000000000000000000000000000000000000000000060208501528960248501612495565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826106ae565b8361334b565b1590565b610fea57507f9709492381f90bdc5938bb4e3b8e35b7e0eac8af058619e27191c5a40ce79fa95f80a3005b61338c565b7f25fbd8be000000000000000000000000000000000000000000000000000000005f5260048490526001600160a01b031660245260445ffd5b5ffd5b7f0ca968d8000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346102a6575f6003193601126102a65760206110716124ac565b604051908152f35b6044359081151582036102a657565b60c06003193601126102a6576004356110a081610295565b6024356110ac81610295565b6110b4611079565b906064359260843560a43567ffffffffffffffff81116102a6576110dc9036906004016102b7565b8692919242116109c7578361115c936109bc926109b6885f6100209c8189818f81604051977f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f7689526001600160a01b0360208a0191168152600160408a019316835260608901948552608089019687528160a08a20995252525252612b2c565b6136b8565b346102a65761116f36610ab6565b6111987f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30576111b4610b48610b3b835f52600260205260405f2090565b916111ca6001600160a01b03851693841461302f565b816001600160a01b03821680946111e2821515613094565b8033148015611401575b80156113dc575b6111fc906130f9565b611217876001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611258846001600160a01b03165f52600360205260405f2090565b8054600101905561127584610c0e855f52600260205260405f2090565b61128a610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a46112c3610cb7835f52600960205260405f2090565b6113ce575b3b159182156112db575b6100208361257e565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039490941660248501526044840191909152608060648401525f6084840181905260209250839160a49183915af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f9161139a575b5016145f806112d2565b6113bc915060203d6020116113c2575b6113b481836106ae565b810190612569565b5f611390565b503d6113aa565b6123fe565b6113d78261315e565b6112c8565b506111fc6113f8610b48610b3b865f52600460205260405f2090565b331490506111f3565b50611424610cb733610d158a6001600160a01b03165f52600560205260405f2090565b6111ec565b346102a6575f6003193601126102a65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156102a65782359167ffffffffffffffff83116102a6576020808501948460051b0101116102a657565b60406003193601126102a65760043567ffffffffffffffff81116102a6576115039036906004016102b7565b60243567ffffffffffffffff81116102a6576115239036906004016114a6565b916001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a45761157f93337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d61376b565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a65760406003193601126102a6576004356115e981610295565b6001600160a01b0360243591165f52600660205260405f20905f52602052602060405f2054604051908152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576020611677600435612648565b6001600160a01b0360405191168152f35b346102a65760206003193601126102a6576001600160a01b036004356116ad81610295565b1680156116d4575f5260036020526104f360405f2054604051918291829190602083019252565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b346102a6575f6003193601126102a6576020600854604051908152f35b346102a65760206003193601126102a65760c061176d600435612669565b6117b760405180936001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a0820152f35b346102a65760206003193601126102a6576004357fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000081168091036102a6575f908152600a60209081526040918290208054600182015460029283015485516001600160a01b0393841681528383169581019590955260a082811c62ffffff169686019690965260b89190911c90920b6060840152166080820152f35b346102a65760206003193601126102a6576004355f526009602052602060405f2054604051908152f35b346102a65760206003193601126102a65760043567ffffffffffffffff81116102a6576118b59036906004016102b7565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361199e5760408135189063ffffffff60408201351663ffffffe0601f8201169260608401602084013518179282019260608401359483641fffffffe08760051b16805f905b8881831061196f5790506080929150010191011017611962576060608063ffffffff61195796169401920161376b565b6104f36104e7612452565b633b99b53d5f526004601cfd5b8294509263ffffffe0601f60808060209687969801013599848b1817998d010135011601019201869291611927565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a6576040515f6001548060011c9060018116908115611a71575b6020831082146107cf5782855260208501919081156107985750600114611a1f576104f3846104e7818603826106ae565b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b818410611a5d575050016104e782610738565b805484840152602090930192600101611a4a565b91607f16916119ee565b346102a65760406003193601126102a657600435611a9881610295565b60243580151581036102a65761002091336136b8565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611ae057505050505090565b9091929394602080611b1c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102e5565b97019301930191939290611ad1565b60206003193601126102a65760043567ffffffffffffffff81116102a657611b579036906004016114a6565b90611b6182612747565b91611b6f60405193846106ae565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611b9c82612747565b015f5b818110611c175750505f5b818110611bbf57604051806104f38682611aae565b5f80611bcc83858761278c565b90611bdc604051809381936127f1565b0390305af4611be9612466565b9015611c0f5790600191611bfd82876127fe565b52611c0881866127fe565b5001611baa565b602081519101fd5b806060602080938801015201611b9f565b60206003193601126102a657600435611c607f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611c6e81336132b6565b1561102b576100209061315e565b346102a65760806003193601126102a657600435611c9981610295565b60243590611ca682610295565b60443560643567ffffffffffffffff81116102a657611cc99036906004016102b7565b939091611cf57f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611d11610b48610b3b835f52600260205260405f2090565b91611d276001600160a01b03861693841461302f565b816001600160a01b0382168094611d3f821515613094565b8033148015611f2e575b8015611f09575b611d59906130f9565b611d74886001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611db5846001600160a01b03165f52600360205260405f2090565b80546001019055611dd284610c0e855f52600260205260405f2090565b611de7610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611e20610cb7835f52600960205260405f2090565b611efb575b3b15938415611e38575b6100208561257e565b602094505f90611e78604051978896879586947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701612812565b03925af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91611edc575b5016145f808080611e2f565b611ef5915060203d6020116113c2576113b481836106ae565b5f611ed0565b611f048261315e565b611e25565b50611d59611f25610b48610b3b865f52600460205260405f2090565b33149050611d50565b50611f51610cb733610d158b6001600160a01b03165f52600560205260405f2090565b611d49565b346102a65760206003193601126102a657600435604051907fe9dc637500000000000000000000000000000000000000000000000000000000825230600483015260248201525f816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9575f90611fea575b6104f39060405191829182610328565b503d805f833e611ffa81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a6570181601f820112156102a6576104f39181602061203893519101612840565b611fda565b346102a6575f6003193601126102a65760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6001600160a01b0360405191168152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60406003193601126102a65760043567ffffffffffffffff81116102a6576120f19036906004016102b7565b6024356001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a457337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d80421161221d576040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f818061218b6024820187896123c0565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9576121cd575b610020613746565b3d805f833e6121dc81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a657019080601f830112156102a657815161221692602001612840565b50806121c5565b7fbfb22adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102a65760406003193601126102a657602060ff6122a260043561226c81610295565b6001600160a01b036024359161228183610295565b165f526005845260405f20906001600160a01b03165f5260205260405f2090565b54166040519015158152f35b600319360160c081126102a65760a0136102a65760206122d860a4356122d381610295565b6128a3565b6040519060020b8152f35b359065ffffffffffff821682036102a657565b6001600160a01b0360243561230a81610295565b1681526001600160a01b0360443561232181610295565b16602082015260643565ffffffffffff81168091036102a657604082015260843565ffffffffffff811681036102a65765ffffffffffff60609116910152565b65ffffffffffff6123ba606080936001600160a01b03813561238281610295565b1686526001600160a01b03602082013561239b81610295565b166020870152836123ae604083016122e3565b166040870152016122e3565b16910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6040513d5f823e3d90fd5b604051906102b56080836106ae565b67ffffffffffffffff81116106a957601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b604051906124616020836106ae565b5f8252565b3d15612490573d9061247782612418565b9161248560405193846106ae565b82523d5f602084013e565b606090565b6040906103399492815281602082015201916123c0565b467f0000000000000000000000000000000000000000000000000000000000000000036124f7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f000000000000000000000000000000000000000000000000000000000000000060408201524660608201523060808201526080815261256360a0826106ae565b51902090565b908160209103126102a6575161033981610542565b1561258557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fd5b156125ea57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b5f5260026020526001600160a01b0360405f205416906102b58215156125e3565b5f60806040516126788161068d565b82815282602082015282604082015282606082015201525f52600960205260405f2054807fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f206127446127346002604051936126de8561068d565b6001600160a01b03815416855261272661271c60018301546001600160a01b038116602089015262ffffff8160a01c16604089015260b81c60020b90565b60020b6060870152565b01546001600160a01b031690565b6001600160a01b03166080830152565b91565b67ffffffffffffffff81116106a95760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156127ec5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102a657019081359167ffffffffffffffff83116102a65760200182360381136102a6579190565b61275f565b908092918237015f815290565b80518210156127ec5760209160051b010190565b90926001600160a01b03608093816103399896168452166020830152604082015281606082015201916123c0565b92919261284c82612418565b9161285a60405193846106ae565b8294818452818301116102a6578281602093845f96015e010152565b8060020b036102a657565b908160209103126102a6575161033981612876565b62ffffff8116036102a657565b6001600160a01b03604051917f6276cbbe000000000000000000000000000000000000000000000000000000008352816004356128df81610295565b166004840152816024356128f281610295565b16602484015262ffffff60443561290881612896565b16604484015260643561291a81612876565b60020b606484015261294160843561293181610295565b6001600160a01b03166084850152565b1660a482015260208160c4815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af15f918161298f575b506103395750627fffff90565b6129b291925060203d6020116129b9575b6129aa81836106ae565b810190612881565b905f612982565b503d6129a0565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633141580612a21575b6129f957565b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314156129f3565b906001600160a01b03600160ff83161b92165f52600660205260405f209060081c5f5260205260405f20818154188091551615612a8d57565b7f1fb09b80000000000000000000000000000000000000000000000000000000005f5260045ffd5b906001600160a01b038091845f526004602052612b038160405f20906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b90612b356124ac565b91604051927f19010000000000000000000000000000000000000000000000000000000000008452600284015260228301525f604060428420938281528260208201520152565b91908260409103126102a6576020823592013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff601b9116019060ff8211612bd157565b612b92565b90604010156127ec5760400190565b90833b612d7a5760418103612cee5790602092612c6e83612c46612c40612c1a612c125f98880188612b7c565b949097612bd6565b357fff000000000000000000000000000000000000000000000000000000000000001690565b60f81c90565b935b604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156113c9576001600160a01b035f5116908115612cc6576001600160a01b031603612c9e57565b7f815e1d64000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b9060408203612d5257602092612d0b825f94612c6e940190612b7c565b929092612d4c612d47612d417f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c90565b60ff1690565b612bbf565b93612c48565b7f4be6321b000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092612dc1936001600160a01b03602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501612495565b0392165afa9081156113c9577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000915f91612e49575b501603612e2157565b7fb0669cbc000000000000000000000000000000000000000000000000000000005f5260045ffd5b612e62915060203d6020116113c2576113b481836106ae565b5f612e18565b9290612ea39260a092604051956026870152600686015260038501523084525f603a600c860120948160408201528160208201525220614bbf565b60068101809111612bd15760408051602081810194855291810192909252612f0f929091612ed48160608101610f89565b519020604051809381927f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9576fffffffffffffffffffffffffffffffff915f91612f6057501690565b612f82915060203d602011612f86575b612f7a81836106ae565b810190612f8d565b1690565b503d612f70565b908160209103126102a6575190565b60206001600160a01b03916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156113c9575f91613010575b50151590565b613029915060203d602011612f8657612f7a81836106ae565b5f61300a565b1561303657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b1561309b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b1561310057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b6001600160a01b0361317b610b3b835f52600760205260405f2090565b1690811561328e575f81815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556131cb610c56825f52600760205260405f2090565b813b6131f8575b7fa0ebb1de82db929a9153472f37d3a66dbede4436258311ad0f52a35a2c91d1505f80a3565b5a7f000000000000000000000000000000000000000000000000000000000000000080911061328957823b156102a6575f60405180927faf45dd140000000000000000000000000000000000000000000000000000000082528183878261326789600483019190602083019252565b0393f1613275575b506131d2565b8061050e5f613283936106ae565b5f61326f565b6137d4565b7f237e6c28000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b036132c783612648565b16916001600160a01b03821692831492831561332a575b5082156132ea57505090565b60ff9250906001600160a01b0361330361332593612648565b165f52600560205260405f20906001600160a01b03165f5260205260405f2090565b541690565b908093505f5260046020526001600160a01b0360405f20541614915f6132de565b803b1561336457815f92918360208194519301915af190565b7f7c402b21000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f8d57f6b2000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f81ea5e9e0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fb1a9116f000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7face944810000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60206001600160a01b03807f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31931693845f526005835261370c8160405f20906001600160a01b03165f5260205260405f2090565b951515957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff88161790556040519586521693a3565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d565b909291938284036137ac575f5b848110156137a45760019061379e81850161379483888b61278c565b913560f81c6137fc565b01613778565b509350505050565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fed43c3a6000000000000000000000000000000000000000000000000000000005f5260045ffd5b909190600b8110156139175780613827575061381b906102b5926149cc565b94939093929192614b63565b60048103613846575061383d906102b592614185565b93929092614a79565b60018103613868575061385c906102b5926149cc565b94939093929192614a0e565b600281036138975750613881613891916102b5936145df565b9890979691959295949394613cc2565b9561478a565b600581036138c357506138b06138bd916102b593614481565b9790969591949294613cc2565b94614543565b91600383146138ff57505061102891505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f52600452602490565b6102b592509061390e91614185565b939290926141c1565b600d8103613933575061392d906102b592613caf565b90614147565b6011810361395b575061394c613955916102b593613e9e565b92909192613cc2565b9161412c565b600b810361398f5750613989613977613983926102b594613e9e565b93829493929193613f73565b92613fa1565b91613fe2565b600e81036139c157506139b56139ab6139bb926102b594613e9e565b9282949291613cc2565b92613eb6565b91613eca565b601281036139dc57506139d7906102b592613ac8565b613e32565b601381036139f857506139f2906102b592613caf565b90613d25565b60148103613a1f5750613a11613a19916102b593613caf565b919091613cc2565b90613d07565b60158103613a6d5750613a38613a68916102b593613ac8565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690613b54565b613c39565b9160168314613a8257505061102891506138d4565b6102b59250613ac391613a9491613ac8565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613ad4565b613bb0565b90602011611962573590565b613adf903090614bdf565b7f80000000000000000000000000000000000000000000000000000000000000008214613b4f578115613b3e575b8111613b165790565b7ff4d678b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050613b495f614c5f565b90613b0d565b905090565b90613b5f305f614bdf565b907f80000000000000000000000000000000000000000000000000000000000000008314613baa578215613b98575b508111613b165790565b613ba3919250614c5f565b905f613b8e565b50905090565b80613bb85750565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b156102a6575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af180156113c957613c2f5750565b5f6102b5916106ae565b80613c415750565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af180156113c957613c2f5750565b9190604011611962576020823592013590565b6001600160a01b03811660018103613cfb5750507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b60020361033957503090565b90613d1182614cd1565b9081613d1c57505050565b6102b592614d37565b90613d2f82614ddd565b908115613e01578111613dd5576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6575f9283926040519485809481937f80f0b44c0000000000000000000000000000000000000000000000000000000083526020600484016001600160a01b036040820194168152015203925af180156113c957613dc75750565b8061050e5f6102b5936106ae565b6102b5917f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90613eca565b505050565b7f80000000000000000000000000000000000000000000000000000000000000008114612bd1575f0390565b613e5d81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b907f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f831215613e94576139896102b593613e06565b6102b59291613eca565b90606011611962578035916040602083013592013590565b9081613ec6576103399150614ddd565b5090565b90918015613e01576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156113c957613f5e5750565b80613f6a5f80936106ae565b8003126102a657565b15613f9d577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b3090565b907f80000000000000000000000000000000000000000000000000000000000000008203613fd3576103399150614cd1565b81613ec6576103399150614c5f565b908215613e01576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f8160248183885af180156113c957614118575b506001600160a01b0381166140ce5750506020906004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b6140cb9060203d602011612f8657612f7a81836106ae565b50565b5f93602093926140dd92614ea7565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b8061050e5f614126936106ae565b5f614064565b9161413e6102b593826139bb82614ddd565b6139bb82614ddd565b906102b59161417c7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c918261398982614c5f565b61398982614c5f565b919082359260208101359260408201359263ffffffff60608401351683019063ffffffff82351693602080840193860101910110611962579190565b939290927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6141f186826132b6565b156143ae575061420085612669565b9290938360081c60020b958460201c60020b9661423761422289838a8d612e68565b6fffffffffffffffffffffffffffffffff1690565b966142418a612648565b955f6142558c5f52600960205260405f2090565b5561425f8b614faa565b5f9989614291575b505050505050508160ff1661427e575b5050505050565b614287946151b4565b5f80808080614277565b60409495969a509061430e916142d16142b16142ac8d61507e565b613e06565b916142c76142bd612409565b97889060020b9052565b60020b6020870152565b858501528b606085015284519a8b9485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9575f965f9161436e575b509061435d826143629493986150b0565b6150ed565b5f808080808080614267565b61435d97506143629392915061439b9060403d6040116143a7575b61439381836106ae565b8101906143e3565b9790979192935061434c565b503d614389565b6001600160a01b03907f0ca968d8000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b91908260409103126102a6576020825192015190565b6060610339959361444a83610140956001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201528161012082015201916123c0565b91908260a08101359260c08201359260e083013592610100810135926101208201359263ffffffff6101408401351683019063ffffffff82351693602080840193860101910110611962579190565b91908260a09103126102a6576040516144e88161068d565b608080829480356144f881610295565b8452602081013561450881610295565b6020850152604081013561451b81612896565b6040850152606081013561452e81612876565b606085015201359161453f83610295565b0152565b90916102b59796959493926fffffffffffffffffffffffffffffffff6145d861459860a061457136886144d0565b207f0000000000000000000000000000000000000000000000000000000000000000615264565b5050506145a484615303565b6145ad86615303565b6145c088356145bb81610295565b614ddd565b916145d260208a01356145bb81610295565b9361564f565b169261478a565b9091819260a08301359260c08101359260e08201359261010083013592610120810135926101408201359263ffffffff6101608401351683019063ffffffff82351693602080840193860101910110611962579190565b600260806102b593614680813561464c81610295565b85906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b600184016146c9602083013561469581610295565b82906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60408201356146d781612896565b81547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000606086013561472081612876565b60b81b79ffffff0000000000000000000000000000000000000000000000169360a01b1691161717905501359161475683610295565b01906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b90919496929793959760085492600184016008556001600160a01b038a16996147b48b1515613094565b845f5260026020526001600160a01b0360405f20541661496e5761488a6149259861491f93876102b59e61481986614800614917986001600160a01b03165f52600360205260405f2090565b80546001019055610c0e845f52600260205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461484836886144d0565b63ffffff007fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000060a066ffffff000000009320169260081b169260201b16171790565b928361489e875f52600960205260405f2090565b55837fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000168561490760016148fc847fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b015460b81c60020b90565b60020b1561492b575b505061507e565b9236906144d0565b906156fc565b506157de565b614962614967927fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b614636565b5f85614910565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152fd5b909181359260208301359260408101359260608201359263ffffffff60808401351683019063ffffffff82351693602080840193860101910110611962579190565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614a4283826132b6565b156143ae57509561435d92826142ac6102b59899614a6d614a65614a7397612669565b93909261507e565b916156fc565b906150b0565b949394929091927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614aac82826132b6565b156143ae57506102b59495614b5e9282614ac8614a7394612669565b90614a6d6fffffffffffffffffffffffffffffffff614b58614b0d60a085207f0000000000000000000000000000000000000000000000000000000000000000615264565b505050614b1f8660081c60020b615303565b614b2e8760201c60020b615303565b614b416001600160a01b03885116614ddd565b916145d26001600160a01b0360208a015116614ddd565b1661507e565b6157de565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614b9783826132b6565b156143ae575095614b5e9282614a6d6102b59899614bb7614a7396612669565b92909161507e565b6040516020810191825260066040820152604081526125636060826106ae565b6001600160a01b038116614bf257503190565b906001600160a01b0360246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa9081156113c9575f91614c46575090565b610339915060203d602011612f8657612f7a81836106ae565b614c8a81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8213614c9c575061033990613e06565b6001600160a01b03907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b038116614ce457504790565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290602090829060249082906001600160a01b03165afa9081156113c9575f91614c46575090565b9091906001600160a01b038116614d6457505f808080614d5894865af11590565b614d5f5750565b613532565b91906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d11600185511416171692828152826020820152015215614dcf5750565b6001600160a01b031661345f565b614e0881307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8212614e14575090565b6001600160a01b03907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b03809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa9081156113c9575f91614c46575090565b9091906001600160a01b0383163003614eef576102b592506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690614d37565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0394851660048201527f00000000000000000000000000000000000000000000000000000000000000008516602482015291841660448301529190921660648301525f908290608490829084905af180156113c957613dc75750565b805f5260026020525f6001600160a01b03604082205416614fcc8115156125e3565b8082526003602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055615010835f52600260205260405f2090565b80548360031b906001600160a01b03808616831b921b191617905561503d835f52600460205260405f2090565b80548360031b906001600160a01b03808616831b921b19161790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4565b905f821261508857565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b6150d3906150c58360801d8260801d0361592c565b92600f0b90600f0b0361592c565b6fffffffffffffffffffffffffffffffff169060801b1790565b929190926fffffffffffffffffffffffffffffffff8160801d94816151118761593a565b9116918291161061519957506fffffffffffffffffffffffffffffffff929350600f0b908261513f8361593a565b9116928391161061514e575050565b906151696fffffffffffffffffffffffffffffffff9261593a565b907f12816f22000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b6fffffffffffffffffffffffffffffffff906151698661593a565b5f81815260076020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091556001600160a01b039081169561525895610fbb959394919390929091604051957fb1a9116f00000000000000000000000000000000000000000000000000000000602088015260248701521660448501526064840152608483015260a482015260a48152610fb560c4826106ae565b61525f5750565b6135e5565b602090602461527b6001600160a01b039594614bbf565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156113c9575f926152e2575b506001600160a01b038216918060a01c60020b9162ffffff808360b81c169260d01c1690565b6152fc91925060203d602011612f8657612f7a81836106ae565b905f6152bc565b60020b908160ff1d82810118620d89e881116156495763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661562d575b60048116615611575b600881166155f5575b601081166155d9575b602081166155bd575b604081166155a1575b60808116615585575b6101008116615569575b610200811661554d575b6104008116615531575b6108008116615515575b61100081166154f9575b61200081166154dd575b61400081166154c1575b61800081166154a5575b620100008116615489575b62020000811661546e575b620400008116615453575b620800001661543a575b5f12615413575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0461540c565b6b048a170391f7dc42444e8fa290910260801c90615405565b6d2216e584f5fa1ea926041bedfe9890920260801c916153fb565b916e5d6af8dedb81196699c329225ee6040260801c916153f0565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916153e5565b916f31be135f97d08fd981231505542fcfa60260801c916153da565b916f70d869a156d2a1b890bb3df62baf32f70260801c916153d0565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916153c6565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916153bc565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916153b2565b916ff3392b0822b70005940c7a398e4b70f30260801c916153a8565b916ff987a7253ac413176f2b074cf7815e540260801c9161539e565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91615394565b916ffe5dee046a99a2a811c461f1969c30530260801c9161538a565b916fff2ea16466c96a3843ec78b326b528610260801c91615381565b916fff973b41fa98c081472e6896dfb254c00260801c91615378565b916fffcb9843d60f6159c9db58835c9266440260801c9161536f565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91615366565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161535d565b916ffff97272373d413259a46990580e213a0260801c91615354565b82615959565b936001600160a01b0383166001600160a01b038316116156f4575b6001600160a01b0385811695908316861161568b57505061033993506159b7565b92909391946001600160a01b038216115f146156e85782916156b1916156b795946159b7565b93615987565b6fffffffffffffffffffffffffffffffff81166fffffffffffffffffffffffffffffffff8316105f14613b4f575090565b91505061033992615987565b90919061566a565b95939460409161576261570d612409565b60088a901c60020b81529260208a811c60020b908501528585850152866060850152845198899485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156113c9575f945f926157ba575b5081949560ff166157b157505050565b6102b592615a00565b9094506157d6915060403d6040116143a75761439381836106ae565b90935f6157a1565b908160801d600f0b91600f0b915f8112806158f7575b6158955750505f81128061585e575b61580b575050565b9061581b61422261102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff91821660045216602452604490565b506fffffffffffffffffffffffffffffffff8061587a83613e06565b16166fffffffffffffffffffffffffffffffff831610615803565b906fffffffffffffffffffffffffffffffff6158b361102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff9283166004521616602452604490565b506fffffffffffffffffffffffffffffffff61591282613e06565b166fffffffffffffffffffffffffffffffff8316106157f4565b9081600f0b91820361508857565b5f81600f0b12615088576fffffffffffffffffffffffffffffffff1690565b7f8b86327a000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b916001600160a01b03610339936159ac93828116838316116159b1575b031690615b43565b615d1b565b906159a4565b916159ac91610339936001600160a01b0382166001600160a01b038216116159fa575b6001600160a01b03906159f1828416838316615bff565b92031691615c79565b906159da565b615a6a9192815f5260076020526001600160a01b0360405f20541693604051927fd8865c2700000000000000000000000000000000000000000000000000000000602085015260248401526044830152606482015260648152615a646084826106ae565b8261334b565b15615a725750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fd8865c27000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fe94f10e20000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b156102a657565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000008409928280851094039380850394615b91868511615b3c565b14615bf8576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156102a65714615c70576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395615cb9878611615b3c565b14615d13579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b906fffffffffffffffffffffffffffffffff82168092036150885756fea164736f6c634300081a000a0000000000000000000000001f98400000000000000000000000000000000004000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba300000000000000000000000000000000000000000000000000000000000493e00000000000000000000000009fb28449a191cd8c03a1b7abfb0f5996ecf7f7220000000000000000000000004200000000000000000000000000000000000006", - "nonce": "0x10", - "chainId": "0x82" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xd017255a7c984031cc1577095b26f3eb71de25fcc8ce5fe0e330c8539dcfe073", - "transactionType": "CREATE2", - "contractName": "V4Quoter", - "contractAddress": "0x333e3c607b141b18ff6de9f258db6e77fe7491e0", - "function": null, - "arguments": [ - "0x1F98400000000000000000000000000000000004" - ], - "transaction": { - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a034607b57601f61175038819003918201601f19168301916001600160401b03831184841017607f57808492602094604052833981010312607b57516001600160a01b0381168103607b576080526040516116bc908161009482396080518181816101b5015281816102ab015281816105b001526114910152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c8063147d2af91461087f578063587330731461082d578063595323f5146107815780636a36a38c1461065657806391dd73461461052c578063aa2f15011461037f578063aa9d21cb1461032d578063ca253dc9146101d9578063dc4c90d31461016b5763eebe0c6a14610087575f80fd5b346101675761009536610d77565b30330361013f57806101016100fb6100f660a06fffffffffffffffffffffffffffffffff9501936100c5856110fd565b6100de876100d560c0850161110a565b16600f0b611289565b906100ec60e0840184611127565b9490933690610c2a565b61134b565b916110fd565b156101355781165b7fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b60801d8116610109565b7f29c3b7ee000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f80fd5b34610167575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261016757602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101675760406101e936610a53565b5f806102915f61022b6102575a9688519283917f6a36a38c00000000000000000000000000000000000000000000000000000000602084015260248301610e99565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610936565b8651809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610de7565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908161030d575b506103055750506102f76102f16102e9611020565b925a9061104f565b916112b5565b905b82519182526020820152f35b9091506102f9565b610328903d805f833e6103208183610936565b810190610fbd565b6102d4565b3461016757604061033d36610c93565b5f806102915f61022b6102575a9688519283917feebe0c6a0000000000000000000000000000000000000000000000000000000060208401526024830161105c565b346101675761038d36610e2a565b30330361013f57602081016103a281836111a7565b90506103b06040840161110a565b916103ba846111fb565b9190815b610400576fffffffffffffffffffffffffffffffff847fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90919261040d82866111a7565b91907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85018581116104dc5761046561045e6fffffffffffffffffffffffffffffffff926104ac966104819561121c565b9788611588565b939061047460808a018a611127565b939092169085159061134b565b90156105095761049390600f0b611178565b6fffffffffffffffffffffffffffffffff165b936111fb565b9180156104dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190816103be565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6105159060801d611178565b6fffffffffffffffffffffffffffffffff166104a6565b346101675760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101675760043567ffffffffffffffff811161016757366023820112156101675780600401359067ffffffffffffffff82116101675736602483830101116101675773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016330361062e575f6024819284806040519384930183378101838152039082305af16105f9611020565b9061060657602081519101fd5b7fe0752a5a000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346101675761066436610e2a565b30330361013f57602081019061067a82826111a7565b90506106886040830161110a565b91610692816111fb565b935f915b8383106106db576fffffffffffffffffffffffffffffffff857fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091929361075c6fffffffffffffffffffffffffffffffff61073d61072860019461071a6107138a61070d8b8b6111a7565b9061121c565b9b8c611588565b948593919216600f0b611289565b61073560808d018d611127565b93909261134b565b9015610767576fffffffffffffffffffffffffffffffff165b966111fb565b959493019190610696565b60801d6fffffffffffffffffffffffffffffffff16610756565b346101675761078f36610d77565b30330361013f57806107db6100fb6100f660a06fffffffffffffffffffffffffffffffff9501936107bf856110fd565b866107cc60c0840161110a565b16906100ec60e0840184611127565b1561081a576107ec9060801d611178565b81167fecbd9804000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b61082690600f0b611178565b8116610109565b3461016757604061083d36610c93565b5f806102915f61022b6102575a9688519283917f595323f50000000000000000000000000000000000000000000000000000000060208401526024830161105c565b3461016757604061088f36610a53565b5f806102915f61022b6102575a9688519283917faa2f150100000000000000000000000000000000000000000000000000000000602084015260248301610e99565b6060810190811067ffffffffffffffff8211176108ed57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176108ed57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176108ed57604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361016757565b359062ffffff8216820361016757565b35908160020b820361016757565b67ffffffffffffffff81116108ed57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561016757803590610a07826109b6565b92610a156040519485610936565b8284526020838301011161016757815f926020809301838601378301015290565b35906fffffffffffffffffffffffffffffffff8216820361016757565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101675760043567ffffffffffffffff81116101675760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82840301126101675760405191610ac8836108d1565b610ad482600401610977565b8352602482013567ffffffffffffffff811161016757820190806023830112156101675760048201359167ffffffffffffffff83116108ed578260051b60405193610b226020830186610936565b845281016024019060208401908383116101675760248101915b838310610b615750505050506020830152610b5990604401610a36565b604082015290565b823567ffffffffffffffff8111610167576004908301019060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe083880301126101675760405190610bb28261091a565b610bbe60208401610977565b8252610bcc60408401610998565b6020830152610bdd606084016109a8565b6040830152610bee60808401610977565b606083015260a08301359167ffffffffffffffff831161016757610c1a886020809695819601016109f0565b6080820152815201920191610b3c565b91908260a091031261016757604051610c428161091a565b6080610c8e818395610c5381610977565b8552610c6160208201610977565b6020860152610c7260408201610998565b6040860152610c83606082016109a8565b606086015201610977565b910152565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8201126101675760043567ffffffffffffffff8111610167576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc828403011261016757604051916080830183811067ffffffffffffffff8211176108ed57604052610d278183600401610c2a565b835260a48201358015158103610167576020840152610d4860c48301610a36565b604084015260e48201359167ffffffffffffffff831161016757610d6f92016004016109f0565b606082015290565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610167576004359067ffffffffffffffff8211610167577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc82610100920301126101675760040190565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc820112610167576004359067ffffffffffffffff8211610167577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc826060920301126101675760040190565b60208152608081019173ffffffffffffffffffffffffffffffffffffffff815116602083015260208101519260606040840152835180915260a0830190602060a08260051b8601019501915f905b828210610f1157505050506fffffffffffffffffffffffffffffffff604060609201511691015290565b90919295602080610faf837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608a6001960301865260a060808c5173ffffffffffffffffffffffffffffffffffffffff815116845262ffffff868201511686850152604081015160020b604085015273ffffffffffffffffffffffffffffffffffffffff60608201511660608501520151918160808201520190610de7565b980192019201909291610ee7565b6020818303126101675780519067ffffffffffffffff8211610167570181601f8201121561016757805190610ff1826109b6565b92610fff6040519485610936565b8284526020838301011161016757815f9260208093018386015e8301015290565b3d1561104a573d90611031826109b6565b9161103f6040519384610936565b82523d5f602084013e565b606090565b919082039182116104dc57565b61012060606110fa93602084526110c160208501825173ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b6020810151151560c08501526fffffffffffffffffffffffffffffffff60408201511660e0850152015191610100808201520190610de7565b90565b3580151581036101675790565b356fffffffffffffffffffffffffffffffff811681036101675790565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610167570180359067ffffffffffffffff82116101675760200191813603831361016757565b600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081146104dc575f0390565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe181360301821215610167570180359067ffffffffffffffff821161016757602001918160051b3603831361016757565b3573ffffffffffffffffffffffffffffffffffffffff811681036101675790565b919081101561125c5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6181360301821215610167570190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f800000000000000000000000000000000000000000000000000000000000000081146104dc575f0390565b7fecbd9804000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000060208301511603611309576024015190565b611347906040519182917f6190b2b0000000000000000000000000000000000000000000000000000000008352602060048401526024830190610de7565b0390fd5b92949390801561156d576401000276a4915b806040519261136b846108d1565b1515978884526020840194868652604085019073ffffffffffffffffffffffffffffffffffffffff1681526040519586957ff3cd914c00000000000000000000000000000000000000000000000000000000875260048701611417908b73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b51151560a48701525160c48601525173ffffffffffffffffffffffffffffffffffffffff1660e48501526101048401610120905281610124850152610144840137808201610144015f9052601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681010361014401817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1691815a6020945f91f1908115611562575f91611530575b5080945f8312145f146115285760801d5b600f0b036114f95750565b60a090207f7a5ed734000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b600f0b6114ee565b90506020813d60201161155a575b8161154b60209383610936565b8101031261016757515f6114dd565b3d915061153e565b6040513d5f823e3d90fd5b73fffd8963efd1fc6a506488495d951d5263988d259161135d565b905f60806040516115988161091a565b82815282602082015282604082015282606082015201526115b8826111fb565b73ffffffffffffffffffffffffffffffffffffffff82169173ffffffffffffffffffffffffffffffffffffffff82168084105f14611690575073ffffffffffffffffffffffffffffffffffffffff905b1680921492602081013562ffffff8116809103610167576040820135918260020b80930361016757606001359273ffffffffffffffffffffffffffffffffffffffff84168094036101675773ffffffffffffffffffffffffffffffffffffffff90604051956116768761091a565b865216602085015260408401526060830152608082015291565b91505073ffffffffffffffffffffffffffffffffffffffff829161160856fea164736f6c634300081a000a0000000000000000000000001f98400000000000000000000000000000000004", - "nonce": "0x11", - "chainId": "0x82" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0xa661aabf0b39113be264ffa38d73be6a71c259a00c217741e26c883761d906f4", - "transactionType": "CREATE2", - "contractName": "StateView", - "contractAddress": "0x86e8631a016f9068c3f085faf484ee3f5fdee8f2", - "function": null, - "arguments": [ - "0x1F98400000000000000000000000000000000004" - ], - "transaction": { - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x000000000000000000000000000000000000000000000000000000000000000060a03460b357601f610e9738819003918201601f19168301916001600160401b0383118484101760b75780849260209460405283398101031260b357516001600160a01b038116810360b357608052604051610dcb90816100cc823960805181818161012b01528181610246015281816102db0152818161039e0152818161048101528181610549015281816105db01528181610622015281816106870152818161073401528181610810015261096a0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80631c7ccb4c146108ac57806353e9c1fb146107c95780637c40f1fe146106ab5780638a2bb9e61461064657806397fd7b421461060b5780639ec538c8146105a2578063c815641c1461050b578063caedab54146103f6578063dacf1d2f146102ff578063dc4c90d314610291578063f0928f29146101e65763fa6793d51461009d575f80fd5b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576100d7600435610d2f565b600381018091116101b957604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f90610177575b6020906fffffffffffffffffffffffffffffffff60405191168152f35b506020813d6020116101a6575b8161019160209383610a2b565b810103126101a2576020905161015a565b5f80fd5b3d9150610184565b6040513d5f823e3d90fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b346101a2576101fd6101f7366109f7565b90610d8b565b604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f90610177576020906fffffffffffffffffffffffffffffffff60405191168152f35b346101a2575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346101a25760a07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760243573ffffffffffffffffffffffffffffffffffffffff811681036101a2576103566109e7565b6064358060020b81036101a2576103f2926103c2926040519260843560268501526006840152600383015281525f603a600c83012091816040820152816020820152526004357f0000000000000000000000000000000000000000000000000000000000000000610bc0565b604080516fffffffffffffffffffffffffffffffff90941684526020840192909252908201529081906060820190565b0390f35b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576104386104306109d7565b600435610d55565b604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f906104d8575b6040908151906fffffffffffffffffffffffffffffffff8116825260801d600f0b6020820152f35b506020813d602011610503575b816104f260209383610a2b565b810103126101a257604090516104b0565b3d91506104e5565b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a257608062ffffff8061056d6004357f0000000000000000000000000000000000000000000000000000000000000000610c63565b92949173ffffffffffffffffffffffffffffffffffffffff6040519616865260020b6020860152166040840152166060820152f35b346101a25760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406105ff6004357f0000000000000000000000000000000000000000000000000000000000000000610c58565b82519182526020820152f35b346101a2576103f26103c261061f366109f7565b907f0000000000000000000000000000000000000000000000000000000000000000610bc0565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406105ff6106826109d7565b6004357f0000000000000000000000000000000000000000000000000000000000000000610b1e565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576106e56104306109d7565b604051907f35fd631a0000000000000000000000000000000000000000000000000000000082526004820152600360248201525f8160448173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae576080915f916107a7575b506020810151906060604082015191015190604051926fffffffffffffffffffffffffffffffff81168452841d600f0b602084015260408301526060820152f35b6107c391503d805f833e6107bb8183610a2b565b810190610a99565b82610766565b346101a25760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a25760406004356108056109d7565b9061080e6109e7565b7f00000000000000000000000000000000000000000000000000000000000000009061083a8383610c58565b90610846868686610b1e565b96909361085f610857828989610b1e565b989097610c63565b5050905060020b9160020b82125f14610885575050505003910382519182526020820152f35b95969593949360020b1361089d5750500391036105ff565b949392909403039203036105ff565b346101a25760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101a2576024358060010b8091036101a2576108f4600435610d2f565b600581018091116101b957604051906020820192835260408201526040815261091e606082610a2b565b519020604051907f1e2eaeaf000000000000000000000000000000000000000000000000000000008252600482015260208160248173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165afa80156101ae575f906109a4575b602090604051908152f35b506020813d6020116109cf575b816109be60209383610a2b565b810103126101a25760209051610999565b3d91506109b1565b602435908160020b82036101a257565b604435908160020b82036101a257565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60409101126101a2576004359060243590565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610a6c57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6020818303126101a25780519067ffffffffffffffff82116101a257019080601f830112156101a25781519167ffffffffffffffff8311610a6c578260051b9060405193610aea6020840186610a2b565b84526020808501928201019283116101a257602001905b828210610b0e5750505090565b8151815260209182019101610b01565b9291610b2991610d55565b600181018091116101b95773ffffffffffffffffffffffffffffffffffffffff9260445f9260405195869384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260026024840152165afa9182156101ae575f92610ba4575b506040602083015192015190565b610bb99192503d805f833e6107bb8183610a2b565b905f610b96565b6044610be273ffffffffffffffffffffffffffffffffffffffff945f94610d8b565b60405194859384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260036024840152165afa9081156101ae575f91610c3e575b506020810151916060604083015192015190565b610c5291503d805f833e6107bb8183610a2b565b5f610c2a565b9190610b2990610d2f565b6020906024610c8773ffffffffffffffffffffffffffffffffffffffff9594610d2f565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156101ae575f92610cfb575b5073ffffffffffffffffffffffffffffffffffffffff8216918060a01c60020b9162ffffff808360b81c169260d01c1690565b9091506020813d602011610d27575b81610d1760209383610a2b565b810103126101a25751905f610cc8565b3d9150610d0a565b604051602081019182526006604082015260408152610d4f606082610a2b565b51902090565b610d5e90610d2f565b600481018091116101b95760405190602082019260020b8352604082015260408152610d4f606082610a2b565b610d9490610d2f565b600681018091116101b9576040519060208201928352604082015260408152610d4f606082610a2b56fea164736f6c634300081a000a0000000000000000000000001f98400000000000000000000000000000000004", - "nonce": "0x12", - "chainId": "0x82" - }, - "additionalContracts": [], - "isFixedGasLimit": false - }, - { - "hash": "0x8ba6faddd12cf5aaabd6a7a17bd0d1fbd6c258238536b732ad56e44f0077d81e", - "transactionType": "CREATE2", - "contractName": "UniversalRouter", - "contractAddress": "0xef740bf23acae26f6492b10de645d6b98dc8eaf3", - "function": null, - "arguments": [ - "(0x000000000022D473030F116dDEE9F6B43aC78BA3, 0x4200000000000000000000000000000000000006, 0x1F98400000000000000000000000000000000002, 0x1F98400000000000000000000000000000000003, 0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f, 0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54, 0x1F98400000000000000000000000000000000004, 0x943e6e07a7E8E791dAFC44083e54041D743C46E9, 0x4529A01c7A0410167c5740C487A8DE60232617bf)" - ], - "transaction": { - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "value": "0x0", - "input": "0x00000000000000000000000000000000000000000000000000000000000000006101a0604052346102d657604051601f614f3938819003918201601f19168301916001600160401b038311848410176102c257808492610120946040528339810103126102d6576040519061012082016001600160401b038111838210176102c25760405261006d816102f9565b825261007b602082016102f9565b6020830190815261008e604083016102f9565b604084019081526100a1606084016102f9565b93606081019485526080840151946080820195865260a08501519560a083019687526100cf60c087016102f9565b9660c084019788526100f66101006100e960e08a016102f9565b988960e0880152016102f9565b97886101008601526101066102da565b6001600160a01b03988916815298881660208a0190815290519451965190989796871696908116959416936101396102da565b968752602087019586525192519151905160405190936001600160a01b0393841693169060808101906001600160401b038211818310176102c257604091825282815260208101948552808201938452606001948552608091909152905160a05290516001600160a01b0390811660c052915160e052610100929092529151821661012052915181166101405291518216610160529151166101805251614c2b908161030e82396080518181816115d90152818161182701526137e4015260a0518181816115b80152818161184901526137c3015260c05181612ee6015260e05181612f39015261010051818181609e01528181610449015281816105b1015281816123240152818161288d0152818161431b015281816143ac015281816144b4015281816146350152614a45015261012051818181602f01528181611cb40152611e270152610140518181816112450152818161206201526133610152610160518181816106e301528181612458015261255101526101805181818161052701526129860152f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60408051919082016001600160401b038111838210176102c257604052565b51906001600160a01b03821682036102d65756fe60c060405260043610156100c6575b3615610018575f80fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001633141580610086575b61005e57005b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016331415610058565b5f3560e01c806324856bc3146108685780633593564c14610707578063817122dc1461069957806391dd73461461054b578063d0c9f6cb146104dd578063d737d0c71461046d578063dc4c90d3146103ff5763fa461e330361000e57346102e05760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760243560043560443567ffffffffffffffff81116102e057610177903690600401610942565b5f8313918215806103f5575b6103cd578181016040828203126102e057813567ffffffffffffffff81116102e057820181601f820112156102e05780356101bd81612c69565b926101cb6040519485612c28565b818452602082840101116102e0575f928160208094018483013701015260208101359173ffffffffffffffffffffffffffffffffffffffff83168093036102e05761021591612e12565b90601790602b83106103a5578035968760601c9561024362ffffff8585013560601c9a60481c168a89612e65565b73ffffffffffffffffffffffffffffffffffffffff3391160361037d571561037357508685105b156102805750505061027e93503391612f86565b005b91935091939482602b0180602b116103465784106102e457508282116102e05781019103907f80000000000000000000000000000000000000000000000000000000000000008410156102e05761027e936102db3391612ca3565b613018565b5f80fd5b925050507faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6929291925c821161031e5761027e923391612f86565b7f739dbe52000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b955084871061026a565b7f32b13d91000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f3b99b53d000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f316cf0eb000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f851315610183565b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760207f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c73ffffffffffffffffffffffffffffffffffffffff60405191168152f35b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102e05760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e05761059a903690600401610942565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163303610671576105e091613404565b90818303610649575f5b83811061061d57610619604051610602602082612c28565b5f81526040519182916020835260208301906109a1565b0390f35b8061064361062e60019387896109e4565b3560f81c61063d838787610a6e565b91613ac3565b016105ea565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102e0575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e057610751903690600401610942565b60243567ffffffffffffffff81116102e057610771903690600401610970565b916044354211610840573330146108375773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c1661080f576107ea93337f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d610a89565b5f7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b61027e93610a89565b7f5bf6f916000000000000000000000000000000000000000000000000000000005f5260045ffd5b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102e05760043567ffffffffffffffff81116102e0576108b2903690600401610942565b60243567ffffffffffffffff81116102e0576108d2903690600401610970565b913330146108375773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c1661080f576107ea93337f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085d610a89565b9181601f840112156102e05782359167ffffffffffffffff83116102e057602083818601950101116102e057565b9181601f840112156102e05782359167ffffffffffffffff83116102e0576020808501948460051b0101116102e057565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b908210156109f0570190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102e0570180359067ffffffffffffffff82116102e0576020019181360383136102e057565b908210156109f057610a859160051b810190610a1d565b9091565b9290808203612bb7579291905f915b848310610aa6575050505050565b9091929394610ab68487876109e4565b3592610ac3858285610a6e565b979092606097603f8760f81c1695600196602181105f14612a1c5760108110156122b15760088110156115245780610eeb5750610b0560208701359b87612e3a565b9590608088013515610ee4577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c9c5b610b3f89356131e2565b9d9188816080527f80000000000000000000000000000000000000000000000000000000000000008314610e58575b50505b604260a052602b7f80000000000000000000000000000000000000000000000000000000000000008210156102e05760a0518f908a10610e52575030915b8982116102e05760409173ffffffffffffffffffffffffffffffffffffffff5f6080513595610cb2610c2b610c5d85610c018b60601c6017608051013560601c62ffffff8183109e60481c1691612e65565b16968a8614610e37576401000276a49b5b878b519485938d60208601526060850190608051612ccf565b91168b830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b8488519a8b98899788967f128acb080000000000000000000000000000000000000000000000000000000088521660048701528b6024870152604486015216606484015260a0608484015260a48301906109a1565b03925af1908115610e2c575f905f92610df0575b610cd6935015610de95750612ca3565b60a0519096908110610d1d573090806017116102e0576080805160170190527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe90196610b71565b50979396929a50979490989360409091013511610dc1575b159081610d96575b50610d4f575060010191909392610a98565b90610d926040519283927f2c4029e900000000000000000000000000000000000000000000000000000000845260048401526040602484015260448301906109a1565b0390fd5b7f8000000000000000000000000000000000000000000000000000000000000000915016155f610d3d565b7f39d35496000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050612ca3565b9150506040823d8211610e24575b81610e0b60409383612c28565b810103126102e057816020610cd6935191015191610cc6565b3d9150610dfe565b6040513d5f823e3d90fd5b73fffd8963efd1fc6a506488495d951d5263988d259b610c12565b91610baf565b6014919250106103a5576020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301523560601c5afa908115610e2c575f91610eb3575b505f80610b6e565b90506020813d8211610edc575b81610ecd60209383612c28565b810103126102e057515f610eab565b3d9150610ec0565b309c610b35565b6001819c929a97939b96999598949c145f14611024575090610f1260208201359282612e3a565b60808301351561101d577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b6040610f4c85356131e2565b9401357faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6925d7f80000000000000000000000000000000000000000000000000000000000000008510156102e057610fa6936102db86612ca3565b9091901561100e5750610fb890612ca3565b03610fe6575f7faf28d9864a81dfdf71cab65f4e5d79a0cf9b083905fb8971425e6cb581b3f6925d5b610d35565b7fd4e0248e000000000000000000000000000000000000000000000000000000005f5260045ffd5b6110189150612ca3565b610fb8565b3091610f40565b6002810361106e5750610fe191604081013591507f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c61106760208301356131e2565b9135613348565b93949193909290600381036112a1575050508135820163ffffffff60208401351683019163ffffffff83351693602080850194860101910110611294577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c926040519273ffffffffffffffffffffffffffffffffffffffff60208501957f2a2d80d10000000000000000000000000000000000000000000000000000000087521660248501526060604485015260e484019280357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1823603018112156102e05781016020813591019467ffffffffffffffff82116102e0578160071b360386136102e05781906060608489015252610104860194905f905b80821061127657505050936111ff5f9694829461122b9460408973ffffffffffffffffffffffffffffffffffffffff6111c360208e9d01612d3c565b1660a4880152013560c48601527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc858403016064860152612ccf565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b51908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b91610d35565b909195608080826112896001948b612d9d565b019701920190611187565b633b99b53d5f526004601cfd5b91949390925090600481036113fa57506112be60208201356131e2565b9073ffffffffffffffffffffffffffffffffffffffff8060408301351691351680155f1461133457504790811061130c57806112fc575b5050610d35565b611305916134c8565b5f806112f5565b7f6a12f104000000000000000000000000000000000000000000000000000000005f5260045ffd5b91604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481875afa928315610e2c575f936113c7575b50821061139f578161138e575b505050610d35565b61139792613a14565b5f8080611386565b7f675cae38000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092506020813d82116113f2575b816113e260209383612c28565b810103126102e05751915f611379565b3d91506113d5565b600581036114215750806040610fe19201359061141a60208201356131e2565b903561326c565b600681036114f9575060408101359073ffffffffffffffffffffffffffffffffffffffff61145260208301356131e2565b9135168061146e5750611468610fe192476139d2565b906134c8565b906040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152602081602481865afa908115610e2c575f916114c6575b50610fe1936114c0916139d2565b91613a14565b90506020813d82116114f1575b816114e060209383612c28565b810103126102e05751610fe16114b2565b3d91506114d3565b7fd76a1e9e000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b6008819c929a97939b96999598949c145f146117d9575061154a6020830135918361319d565b906080840135156117d2577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b61158385356131e2565b9282156109f057611593826131c1565b83600110156109f0576115b56115fd916115af602086016131c1565b906141ee565b907f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614226565b9485816117b8575b5050507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82018281116103465761165a61165573ffffffffffffffffffffffffffffffffffffffff92858561324f565b6131c1565b1693604051927f70a0823100000000000000000000000000000000000000000000000000000000845273ffffffffffffffffffffffffffffffffffffffff8516928360048601526020856024818a5afa948515610e2c575f9561177b575b50946116c8929160209596613586565b6024604051809581937f70a0823100000000000000000000000000000000000000000000000000000000835260048301525afa918215610e2c575f92611747575b506040611719929301359261325f565b1015610d35577f849eaf98000000000000000000000000000000000000000000000000000000005f5260045ffd5b91506020823d8211611773575b8161176160209383612c28565b810103126102e0579051906040611709565b3d9150611754565b92919450946020833d82116117b0575b8161179860209383612c28565b810103126102e05791519194919390916116c86116b8565b3d915061178b565b6117ca926117c5856131c1565b612f86565b5f8085611605565b3091611579565b60098103611b4357506117ec908261319d565b608083013515611b3c577f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c915b61182484356131e2565b917f0000000000000000000000000000000000000000000000000000000000000000937f0000000000000000000000000000000000000000000000000000000000000000955f9560028510611b14576020820135977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8601868111610346579190825b6118fd575050506040013586116118d55782156109f057610fe195856118d0926117c5856131c1565b613586565b7f8ab0bc16000000000000000000000000000000000000000000000000000000005f5260045ffd5b90919897507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901978989116103465761193e6116556119609a898961324f565b61195561194f6116558d8b8b61324f565b826141ee565b8185879d939d614226565b90604051907f0902f1ac00000000000000000000000000000000000000000000000000000000825260608260048173ffffffffffffffffffffffffffffffffffffffff87165afa918215610e2c575f905f93611ab7575b5073ffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff8082931694169d169116145f14611ab15799905b9980158015611aa9575b611a815782611a0891613988565b916103e88302928084046103e8149015171561034657611a279161325f565b6103e58102908082046103e5149015171561034657611a459161399b565b6001810180911161034657988015610346577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019190826118a7565b7f7b9c8916000000000000000000000000000000000000000000000000000000005f5260045ffd5b5081156119fa565b906119f0565b6dffffffffffffffffffffffffffff80945073ffffffffffffffffffffffffffffffffffffffff9250611b01839260603d8111611b0d575b611af98183612c28565b810190613550565b509590935050506119b7565b503d611aef565b7f20db8267000000000000000000000000000000000000000000000000000000005f5260045ffd5b309161181a565b93949193909290600a8103611c445750505063ffffffff60c08301351682019063ffffffff82351690836020808501948401019101106112945760a061122b5f946111ff86957f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c9560405195869473ffffffffffffffffffffffffffffffffffffffff60208701997f2b67b570000000000000000000000000000000000000000000000000000000008b52166024870152611c026044870182612d9d565b73ffffffffffffffffffffffffffffffffffffffff611c2360808301612d3c565b1660c4870152013560e4850152610100610104850152610124840191612ccf565b91949390929091600b8103611dfb575050611c64602082013591356131e2565b90807f80000000000000000000000000000000000000000000000000000000000000008103611dcc575050475b80611c9d575050610d35565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102e057604051907fd0e30db00000000000000000000000000000000000000000000000000000000082525f8260048186885af1918215610e2c5773ffffffffffffffffffffffffffffffffffffffff92611dbc575b501690308203611d3f575b506112f5565b60446020925f60405195869485937fa9059cbb000000000000000000000000000000000000000000000000000000008552600485015260248401525af18015610e2c57611d8e575b8080611d39565b611dae9060203d8111611db5575b611da68183612c28565b810190613237565b505f611d87565b503d611d9c565b5f611dc691612c28565b5f611d2e565b471015611c91577f6a12f104000000000000000000000000000000000000000000000000000000005f5260045ffd5b600c8103611f65575050611e0f81356131e2565b9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481855afa928315610e2c575f93611f31575b5060200135821061130c5781611ea357505050610d35565b803b156102e0575f80916024604051809481937f2e1a7d4d0000000000000000000000000000000000000000000000000000000083528760048401525af18015610e2c57611f21575b503073ffffffffffffffffffffffffffffffffffffffff831603611f11575b80611386565b611f1a916134c8565b5f80611f0b565b5f611f2b91612c28565b5f611eec565b9092506020813d8211611f5d575b81611f4c60209383612c28565b810103126102e05751916020611e8b565b3d9150611f3f565b600d819c939c9b929597989b99949699145f146121ac57508a358b0198893594611f976020808d019e8d030187612f79565b116103a55773ffffffffffffffffffffffffffffffffffffffff7f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c169a935f5b8681101561203d578c73ffffffffffffffffffffffffffffffffffffffff61200760208f8560071b01016131c1565b160361201557600101611fd8565b7fe7002877000000000000000000000000000000000000000000000000000000005f5260045ffd5b50989593979694929b919a50985073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690813b156102e0576040517f0d58b1db000000000000000000000000000000000000000000000000000000008152602060048201526024810184905292839160448301915f905b8082106120fe5750505091815f81819503925af18015610e2c576120ee575b50610d35565b5f6120f891612c28565b5f6120e8565b9193509160808060019273ffffffffffffffffffffffffffffffffffffffff61212688612d3c565b16815273ffffffffffffffffffffffffffffffffffffffff61214a60208901612d3c565b16602082015273ffffffffffffffffffffffffffffffffffffffff61217160408901612d3c565b16604082015273ffffffffffffffffffffffffffffffffffffffff61219860608901612d3c565b1660608201520194019201859392916120c9565b80929b93989550600e919a97969450145f146114f95750604051907f70a0823100000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff813516600483015260208260248173ffffffffffffffffffffffffffffffffffffffff84860135165afa918215610e2c575f9261227d575b5060400135111580610fe15791506040517fa328167200000000000000000000000000000000000000000000000000000000602082015260048152611270602482612c28565b9091506020813d82116122a9575b8161229860209383612c28565b810103126102e05751906040612237565b3d915061228b565b6010819c929a97939b96999598949c145f146123cc575061230a915f9160405193849283927f48c89491000000000000000000000000000000000000000000000000000000008452602060048501526024840191612ccf565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af18015610e2c576123565750610d35565b3d805f833e6123658183612c28565b8101906020818303126102e05780519067ffffffffffffffff82116102e0570181601f820112156102e057805161239b81612c69565b926123a96040519485612c28565b818452602082840101116102e0575f928160208094018483015e0101525f6120e8565b80929495506011919350145f146124ae5750907fffffffff000000000000000000000000000000000000000000000000000000008135167f7ac2ff7b0000000000000000000000000000000000000000000000000000000081036124835750815f929183926040519283928337810183815203908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b7ff801e525000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b601281036127ad57507f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c917fffffffff000000000000000000000000000000000000000000000000000000008135167f0c49ccbe0000000000000000000000000000000000000000000000000000000081148015612784575b801561275b575b156124835750600481013573ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016936040517f6352211e000000000000000000000000000000000000000000000000000000008152826004820152602081602481895afa908115610e2c5773ffffffffffffffffffffffffffffffffffffffff9182915f9161273d575b50169116908082149182156126a9575b8215612638575b50501561260d575091815f809481946040519384928337810182815203925af190611270612d0d565b7fbb25d4c5000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b909150604051917fe985e9c500000000000000000000000000000000000000000000000000000000835260048301526024820152602081604481885afa908115610e2c575f9161268b575b505f806125e4565b6126a3915060203d8111611db557611da68183612c28565b5f612683565b91506040517f081812fc0000000000000000000000000000000000000000000000000000000081528360048201526020816024818a5afa908115610e2c57839173ffffffffffffffffffffffffffffffffffffffff915f9161270f575b501614916125dd565b612730915060203d8111612736575b6127288183612c28565b81019061349c565b5f612706565b503d61271e565b612755915060203d8111612736576127288183612c28565b5f6125cd565b507f42966c6800000000000000000000000000000000000000000000000000000000811461252f565b507ffc6f7865000000000000000000000000000000000000000000000000000000008114612528565b601381036128b85750505f809160405173ffffffffffffffffffffffffffffffffffffffff60a060208301937f6276cbbe0000000000000000000000000000000000000000000000000000000085528261280682612d3c565b1660248501528261281960208301612d3c565b16604485015262ffffff61282f60408301612d5d565b16606485015261284160608201612d6d565b60020b60848501528261285660808301612d3c565b1660a485015201351660c482015260c4815261287360e482612c28565b51908273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b601481036114f957507fffffffff000000000000000000000000000000000000000000000000000000008235167fdd46508f0000000000000000000000000000000000000000000000000000000081036124835750806004116102e05761294d6129477ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc830160048501612e12565b90612e12565b5f5b8181106129b1575050505f91829147918160405192839283378101848152039173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af190611270612d0d565b6129bc8183856109e4565b3560f81c8015908115612a11575b8115612a06575b506129de5760010161294f565b7f5d1d0f9f000000000000000000000000000000000000000000000000000000005f5260045ffd5b60039150145f6129d1565b6001811491506129ca565b9098959199506021819b939b989598979497145f146114f9575090612a4091613404565b612a836040959395519460208601967f24856bc3000000000000000000000000000000000000000000000000000000008852604060248801526064870191612ccf565b927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc858503016044860152818452602084019160208160051b86010194845f907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603015b848310612b3d5750505050505050509181612b2e5f94938594037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612c28565b519082305af190611270612d0d565b90919293949596977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08582030188528835828112156102e0578301906020823592019167ffffffffffffffff81116102e05780360383136102e057612ba760209283928b95612ccf565b9a01980196959493019190612ae9565b7fff633a38000000000000000000000000000000000000000000000000000000005f5260045ffd5b60a0810190811067ffffffffffffffff821117612bfb57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117612bfb57604052565b67ffffffffffffffff8111612bfb57601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b7f80000000000000000000000000000000000000000000000000000000000000008114610346575f0390565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b3d15612d37573d90612d1e82612c69565b91612d2c6040519384612c28565b82523d5f602084013e565b606090565b359073ffffffffffffffffffffffffffffffffffffffff821682036102e057565b359062ffffff821682036102e057565b35908160020b82036102e057565b908160209103126102e0575190565b359065ffffffffffff821682036102e057565b65ffffffffffff612e0c6060809373ffffffffffffffffffffffffffffffffffffffff612dc982612d3c565b16865273ffffffffffffffffffffffffffffffffffffffff612ded60208301612d3c565b16602087015283612e0060408301612d8a565b16604087015201612d8a565b16910152565b909163ffffffff82351682019263ffffffff8435169260208086019585010191011061129457565b909163ffffffff60608301351682019263ffffffff8435169260208086019585010191011061129457565b9073ffffffffffffffffffffffffffffffffffffffff9283821684841611612f71575b62ffffff90846040519381602086019616865216604084015216606082015260608152612eb6608082612c28565b5190206040517fff00000000000000000000000000000000000000000000000000000000000000602082019081527f000000000000000000000000000000000000000000000000000000000000000060601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602183015260358201929092527f00000000000000000000000000000000000000000000000000000000000000006055820152612f6a81607581016111ff565b5190201690565b909190612e88565b9190820180921161034657565b9092919073ffffffffffffffffffffffffffffffffffffffff84163003612fb357612fb1935061326c565b565b919273ffffffffffffffffffffffffffffffffffffffff8411612ff05773ffffffffffffffffffffffffffffffffffffffff612fb1941692613348565b7fc4bd89a9000000000000000000000000000000000000000000000000000000005f5260045ffd5b939290602b82106103a5578235938460601c92601785013560601c9380851094859760481c62ffffff169061304c92612e65565b73ffffffffffffffffffffffffffffffffffffffff1692845f1460409673ffffffffffffffffffffffffffffffffffffffff80956130e15f9661313495613182576401000276a4925b846130af8e51978f94899560208701526060860191612ccf565b91168d830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101855284612c28565b89519b8c998a9889977f128acb080000000000000000000000000000000000000000000000000000000089521660048801526024870152604486015216606484015260a0608484015260a48301906109a1565b03925af18015610e2c575f925f9161314b57509192565b9250506040823d60401161317a575b8161316760409383612c28565b810103126102e057602082519201519192565b3d915061315a565b73fffd8963efd1fc6a506488495d951d5263988d2592613095565b9160608301358301916131ba602084359581860195030185612f79565b116103a557565b3573ffffffffffffffffffffffffffffffffffffffff811681036102e05790565b73ffffffffffffffffffffffffffffffffffffffff8116600181036132285750507f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c90565b60020361323457503090565b90565b908160209103126102e0575180151581036102e05790565b91908110156109f05760051b0190565b9190820391821161034657565b90919073ffffffffffffffffffffffffffffffffffffffff16806132945750612fb1916134c8565b7f800000000000000000000000000000000000000000000000000000000000000082146132c6575b91612fb192613a14565b9050604051917f70a08231000000000000000000000000000000000000000000000000000000008352306004840152602083602481855afa8015610e2c575f90613314575b909250906132bc565b506020833d602011613340575b8161332e60209383612c28565b810103126102e057612fb1925161330b565b3d9150613321565b919273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102e0575f73ffffffffffffffffffffffffffffffffffffffff9384829681608496816040519b8c9a8b997f36c78516000000000000000000000000000000000000000000000000000000008b521660048a01521660248801521660448601521660648401525af18015610e2c576133fa5750565b5f612fb191612c28565b604081351891606082019363ffffffff6040840135169363ffffffe0601f8601169060608201602086013518179084019260608401359463ffffffff861694641fffffffe0608082019760051b1680915f925b80841061346f57506080925001019101101761129457565b90916020809163ffffffe0601f60808089890101359b848d18179b88010135011601019301929190613457565b908160209103126102e0575173ffffffffffffffffffffffffffffffffffffffff811681036102e05790565b5f80809381935af1156134d757565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152fd5b51906dffffffffffffffffffffffffffff821682036102e057565b908160609103126102e05761356481613535565b91604061357360208401613535565b92015163ffffffff811681036102e05790565b91600282106139605781156109f05761359e836131c1565b82600110156109f0576135ba906115af602086979596016131c1565b50927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101937ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe8201955f906020937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08501965b8884106136415750505050505050505050565b61364f61165585848661324f565b9473ffffffffffffffffffffffffffffffffffffffff61367661165560018801868861324f565b921695604051917f0902f1ac0000000000000000000000000000000000000000000000000000000083526060836004818b5afa918215610e2c57895f945f9461390d575b5073ffffffffffffffffffffffffffffffffffffffff806dffffffffffffffffffffffffffff80602496979816971693169416841494855f146139075791935b604051938480927f70a082310000000000000000000000000000000000000000000000000000000082528d60048301525afa918215610e2c575f926138d8575b50808203928115928380156138d0575b611a8157826103e586029586046103e514911417156103465761376d9084613988565b916103e882029182046103e8141715610346576137939261378d91612f79565b9061399b565b90156138c9575f90915b8b8610156138c057906137be613808926115af61165560028a01888a61324f565b8193917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000614226565b915b96604051906138198a83612c28565b5f82528b368b840137803b156102e057613894945f8094604051978895869485937f022c0d9f0000000000000000000000000000000000000000000000000000000085526004850152602484015273ffffffffffffffffffffffffffffffffffffffff891660448401526080606484015260848301906109a1565b03925af1918215610e2c576001926138b0575b5093019261362e565b5f6138ba91612c28565b5f6138a7565b5087905f61380a565b5f9161379d565b50811561374a565b9091508981813d8311613900575b6138f08183612c28565b810103126102e05751905f61373a565b503d6138e6565b936136fa565b6dffffffffffffffffffffffffffff9550602493945073ffffffffffffffffffffffffffffffffffffffff86613951829360603d8111611b0d57611af98183612c28565b509890989796505050506136ba565b7fae52ad0c000000000000000000000000000000000000000000000000000000005f5260045ffd5b8181029291811591840414171561034657565b81156139a5570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b61271082116139ec57612710916139e891613988565b0490565b7fdeaa01e6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f9182604492602095604051937fa9059cbb000000000000000000000000000000000000000000000000000000008552600485015260248401525af13d15601f3d1160015f511416171615613a6557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152fd5b929190600b84101561401c5760078403613c3557613ae292935061474f565b6020810190613af1828261475d565b90505f92613afe836131c1565b90613b0b604085016146bc565b906fffffffffffffffffffffffffffffffff821615613c1c575b92915f915b838310613bab5750505050506060016fffffffffffffffffffffffffffffffff80613b54836146bc565b169216918210613b62575050565b613b7c6fffffffffffffffffffffffffffffffff916146bc565b7f8b063d73000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b8496506fffffffffffffffffffffffffffffffff613c0091613be7613be086613bda613c059798999a8c61475d565b906147b1565b9586614ad8565b613bf46080880188610a1d565b949093165f0391614938565b614bff565b946001613c1287936131c1565b9194930191613b2a565b9050613c2f613c2a83614314565b6148f3565b90613b25565b60068403613d2c57613c489293506146ad565b613c5460c082016146bc565b6fffffffffffffffffffffffffffffffff811615613cdb575b613cbe613c0060e092613c9d6fffffffffffffffffffffffffffffffff613c9660a088016146d9565b9216612ca3565b90613cac610100870187610a1d565b929091613cb936896146e6565b614938565b91016fffffffffffffffffffffffffffffffff80613b54836146bc565b50613ce860a082016146d9565b15613d125760e0613cbe613c00613d09613c2a613d04866131c1565b614314565b92505050613c6d565b60e0613cbe613c00613d09613c2a613d04602087016131c1565b60098403613ecf57613d3f92935061474f565b6020810190613d4e828261475d565b5f939150613d5e604084016146bc565b613d67846131c1565b916fffffffffffffffffffffffffffffffff821615613ebb575b92919290815b613e0457505050506060016fffffffffffffffffffffffffffffffff80613dad836146bc565b169216918211613dbb575050565b613dd56fffffffffffffffffffffffffffffffff916146bc565b7f12bacdd3000000000000000000000000000000000000000000000000000000005f521660045260245260445ffd5b829395506fffffffffffffffffffffffffffffffff613e7b91613e61613e5a613e31613e8596978a61475d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8901916147b1565b9889614ad8565b90613e6f60808b018b610a1d565b94909316911590614938565b600f0b5f036148f3565b937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613eb186926131c1565b9392019081613d87565b9050613ec9613c2a8361462e565b90613d81565b60088414613f06575050505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b613f119293506146ad565b613f1d60c082016146bc565b6fffffffffffffffffffffffffffffffff811615613fa1575b613f84613c2a613f7c6fffffffffffffffffffffffffffffffff60e094613f5f60a088016146d9565b613f6d610100890189610a1d565b9390921690613cb9368a6146e6565b600f0b612ca3565b91016fffffffffffffffffffffffffffffffff80613dad836146bc565b50613fae60a082016146d9565b15613ff15760e0613f84613c2a613f7c6fffffffffffffffffffffffffffffffff613fe6613c2a613fe1602089016131c1565b61462e565b945050505050613f36565b60e0613f84613c2a613f7c6fffffffffffffffffffffffffffffffff613fe6613c2a613fe1886131c1565b92600c81036140a05750614030919261461b565b9061403a8161462e565b91808311614070575090612fb1917f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c90614495565b90507f12bacdd3000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b600f810361412357506140b3919261461b565b906140bd81614314565b918083106140f3575090612fb1917f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c9061438d565b90507f8b063d73000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b600b810361417c575061413a90612fb192936142fc565b156141715761416b827f0e87e1788ebd9ed6a7e63c70a374cd3283e41cad601d21fbe27863899ed4a7085c92614454565b91614495565b61416b823092614454565b600e81036141af57506141a36141996141a992612fb194956142fc565b92829492916131e2565b92614440565b9161438d565b92601084146141c057505050613edb565b612fb19293506141d66141df926141a9926142fc565b929193906131e2565b916141e984614314565b6139d2565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff8216105f14610a855791565b91612f6a9073ffffffffffffffffffffffffffffffffffffffff947fffffffffffffffffffffffffffffffffffffffff0000000000000000000000006040519181602084019460601b16845260601b1660348201526028815261428a604882612c28565b5190206111ff604051938492602084019687917fffffffffffffffffffffffffffffffffffffffff000000000000000000000000605594927fff00000000000000000000000000000000000000000000000000000000000000855260601b166001840152601583015260358201520190565b90606011611294578035916040602083013592013590565b61433f81307f00000000000000000000000000000000000000000000000000000000000000006147f1565b905f821261434b575090565b73ffffffffffffffffffffffffffffffffffffffff907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b9091801561443b5773ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016803b156102e0575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610e2c576133fa5750565b505050565b9081614450576132349150614314565b5090565b907f8000000000000000000000000000000000000000000000000000000000000000820361448657613234915061488b565b8161445057613234915061462e565b5f9183156146155773ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001691823b156102e05773ffffffffffffffffffffffffffffffffffffffff604051917fa584119400000000000000000000000000000000000000000000000000000000835216908160048201525f8160248183885af18015610e2c57614600575b50806145b35750506020906004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156145a7575061457c5750565b61459d9060203d6020116145a0575b6145958183612c28565b810190612d7b565b50565b503d61458b565b604051903d90823e3d90fd5b839483602094936145c393612f86565b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af19081156145a7575061457c5750565b61460d9194505f90612c28565b5f925f614534565b50505050565b9190604011611294576020823592013590565b61465981307f00000000000000000000000000000000000000000000000000000000000000006147f1565b905f821361466b575061323490612ca3565b73ffffffffffffffffffffffffffffffffffffffff907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b90610140116112945780350190565b356fffffffffffffffffffffffffffffffff811681036102e05790565b3580151581036102e05790565b91908260a09103126102e0576040516146fe81612bdf565b608061474a81839561470f81612d3c565b855261471d60208201612d3c565b602086015261472e60408201612d5d565b604086015261473f60608201612d6d565b606086015201612d3c565b910152565b9060a0116112945780350190565b9035907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102e0570180359067ffffffffffffffff82116102e057602001918160051b360383136102e057565b91908110156109f05760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61813603018212156102e0570190565b73ffffffffffffffffffffffffffffffffffffffff809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa908115610e2c575f9161485c575090565b90506020813d602011614883575b8161487760209383612c28565b810103126102e0575190565b3d915061486a565b73ffffffffffffffffffffffffffffffffffffffff16806148ab57504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa908115610e2c575f9161485c575090565b906fffffffffffffffffffffffffffffffff821680920361491057565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092908315614abd576401000276a4905b60405194606086019386851067ffffffffffffffff861117612bfb5773ffffffffffffffffffffffffffffffffffffffff9788608095614a2b946020986040521515998a8152888101908a82528360408201931683526040519c8d998a997ff3cd914c000000000000000000000000000000000000000000000000000000008b528281511660048c0152828d8201511660248c015262ffffff60408201511660448c0152606081015160020b60648c0152015116608489015251151560a48801525160c4870152511660e4850152610120610104850152610124840191612ccf565b03815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1928315610e2c575f93614a89575b505f1303614a8357600f0b90565b60801d90565b9092506020813d602011614ab5575b81614aa560209383612c28565b810103126102e05751915f614a75565b3d9150614a98565b73fffd8963efd1fc6a506488495d951d5263988d2590614949565b905f6080604051614ae881612bdf565b8281528260208201528260408201528260608201520152614b08826131c1565b73ffffffffffffffffffffffffffffffffffffffff82169173ffffffffffffffffffffffffffffffffffffffff82168084105f14614be0575073ffffffffffffffffffffffffffffffffffffffff905b1680921492602081013562ffffff81168091036102e0576040820135918260020b8093036102e057606001359273ffffffffffffffffffffffffffffffffffffffff84168094036102e05773ffffffffffffffffffffffffffffffffffffffff9060405195614bc687612bdf565b865216602085015260408401526060830152608082015291565b91505073ffffffffffffffffffffffffffffffffffffffff8291614b58565b5f81600f0b12614910576fffffffffffffffffffffffffffffffff169056fea164736f6c634300081a000a000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba300000000000000000000000042000000000000000000000000000000000000060000000000000000000000001f984000000000000000000000000000000000020000000000000000000000001f9840000000000000000000000000000000000396e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845fe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b540000000000000000000000001f98400000000000000000000000000000000004000000000000000000000000943e6e07a7e8e791dafc44083e54041d743c46e90000000000000000000000004529a01c7a0410167c5740c487a8de60232617bf", - "nonce": "0x13", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80635dfbfbc214610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0xb", "chainId": "0x82" }, "additionalContracts": [], @@ -132,184 +22,31 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x51166c", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x8132a6d9c2f559acafe3fa36d6e50222d85c391d25b8ad09a59dfb15001bc013", - "transactionIndex": "0x1", - "blockHash": "0xecb1536cc113998930f7f2426afa9df84105abfa40a9407e20c1f6e0e84b5740", - "blockNumber": "0x680f57", - "gasUsed": "0x506aca", - "effectiveGasPrice": "0xfd", - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x8be6f6785b71c16ca238abbcdd3f33271969c305", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x1d982c39", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x94991fa5be9", - "l1GasPrice": "0x230957c35", - "l1GasUsed": "0x35571" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xa3f57", - "logs": [ - { - "address": "0x9fb28449a191cd8c03a1b7abfb0f5996ecf7f722", - "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x0000000000000000000000008be6f6785b71c16ca238abbcdd3f33271969c305" - ], - "data": "0x", - "blockHash": "0x677378b6eef8f1668a568ed8fc4bbce29de472756182e0251b52cc2532a4948d", - "blockNumber": "0x680f5b", - "transactionHash": "0x86f8f6510d17aaafa452e052fe0a50479145abe63373bf6f60d49a2790c55288", - "transactionIndex": "0x1", - "logIndex": "0x0", - "removed": false - }, - { - "address": "0xa7f9bd1b27ad7db53e3b9db0b36b395a74b1df9e", - "topics": [ - "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", - "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0000000000000000000000002bad8182c09f50c8318d769245bea52c32be46cd" - ], - "data": "0x", - "blockHash": "0x677378b6eef8f1668a568ed8fc4bbce29de472756182e0251b52cc2532a4948d", - "blockNumber": "0x680f5b", - "transactionHash": "0x86f8f6510d17aaafa452e052fe0a50479145abe63373bf6f60d49a2790c55288", - "transactionIndex": "0x1", - "logIndex": "0x1", - "removed": false - }, - { - "address": "0x9fb28449a191cd8c03a1b7abfb0f5996ecf7f722", - "topics": [ - "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" - ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7f9bd1b27ad7db53e3b9db0b36b395a74b1df9e", - "blockHash": "0x677378b6eef8f1668a568ed8fc4bbce29de472756182e0251b52cc2532a4948d", - "blockNumber": "0x680f5b", - "transactionHash": "0x86f8f6510d17aaafa452e052fe0a50479145abe63373bf6f60d49a2790c55288", - "transactionIndex": "0x1", - "logIndex": "0x2", - "removed": false - } - ], - "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000004020000000000000000000800000008800000000000000200000000400008000000000000000000040000000000000000000000000000000010800000000000000000000000000080000000000000000080000000000000000000000000000020040100000000000000000000000000000400000000000000000020000000000000000000000000000000000000000000800000000000000000000000", - "type": "0x2", - "transactionHash": "0x86f8f6510d17aaafa452e052fe0a50479145abe63373bf6f60d49a2790c55288", - "transactionIndex": "0x1", - "blockHash": "0x677378b6eef8f1668a568ed8fc4bbce29de472756182e0251b52cc2532a4948d", - "blockNumber": "0x680f5b", - "gasUsed": "0x993b5", - "effectiveGasPrice": "0xfd", - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x9fb28449a191cd8c03a1b7abfb0f5996ecf7f722", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x1d982c39", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x156de54295c", - "l1GasPrice": "0x230957c35", - "l1GasUsed": "0x7b13" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x5104a8", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0x51161eb65e19fabceb5de42cf48b3d4d283fa9d455c755d2f2fbf7b91b77d9ee", - "transactionIndex": "0x1", - "blockHash": "0x9c834034dcb397cd62a95b3f3fdc82378023892b29c688db496bbe7221203f45", - "blockNumber": "0x680f5f", - "gasUsed": "0x505906", - "effectiveGasPrice": "0xfd", - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x4529a01c7a0410167c5740c487a8de60232617bf", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x214b31c7", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x89903ff1188", - "l1GasPrice": "0x22d217298", - "l1GasUsed": "0x2e0db" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x14a106", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xd017255a7c984031cc1577095b26f3eb71de25fcc8ce5fe0e330c8539dcfe073", - "transactionIndex": "0x1", - "blockHash": "0x9e875c31339a134015de3ef6aa3d91ec5ecb6a77e024a537304734e7bb69e94c", - "blockNumber": "0x680f63", - "gasUsed": "0x13f564", - "effectiveGasPrice": "0xfd", - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x333e3c607b141b18ff6de9f258db6e77fe7491e0", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x214b31c7", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x1e101462d47", - "l1GasPrice": "0x22d217298", - "l1GasUsed": "0xa107" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0xd17c3", - "logs": [], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "type": "0x2", - "transactionHash": "0xa661aabf0b39113be264ffa38d73be6a71c259a00c217741e26c883761d906f4", - "transactionIndex": "0x1", - "blockHash": "0x024f747f74f8a45494e187ae7421458a5db56bb7947e76100204ab9f78e50326", - "blockNumber": "0x680f66", - "gasUsed": "0xc6c21", - "effectiveGasPrice": "0xfd", - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", - "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x86e8631a016f9068c3f085faf484ee3f5fdee8f2", - "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x214b31c7", - "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x11cb45aa268", - "l1GasPrice": "0x22d217298", - "l1GasUsed": "0x5f50" - }, - { - "status": "0x1", - "cumulativeGasUsed": "0x418b02", + "cumulativeGasUsed": "0xaa41c1", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x8ba6faddd12cf5aaabd6a7a17bd0d1fbd6c258238536b732ad56e44f0077d81e", - "transactionIndex": "0x1", - "blockHash": "0xdbd5c0879a871bab76a98703805dc533591dd21f16db96147bc96b22d05cf368", - "blockNumber": "0x680f6a", - "gasUsed": "0x40df60", - "effectiveGasPrice": "0xfd", - "from": "0xc2fd2fa964c091afcf95a835ec19f04593abbe07", + "transactionHash": "0x7887c279399099a21b1318b104d3213a167db63dd0f8bcddeb2b753c79002fcc", + "transactionIndex": "0x34", + "blockHash": "0x9e4a4b6179a555dd17fee7337c631f2a611856cd449bc660804ec14970e57591", + "blockNumber": "0x14d6bd2", + "gasUsed": "0x2f1240", + "effectiveGasPrice": "0x7fc1", + "from": "0xe49acc3b16c097ec88dc9352ce4cd57ab7e35b95", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0xef740bf23acae26f6492b10de645d6b98dc8eaf3", + "contractAddress": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x1d982c39", + "l1BlobBaseFee": "0x1", "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x60820a558e1", - "l1GasPrice": "0x216e16b63", - "l1GasUsed": "0x234b1" + "l1Fee": "0xaadabe0c46", + "l1GasPrice": "0xda1113f6", + "l1GasUsed": "0x187bf" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1737568156, + "timestamp": 1752599470, "chain": 130, - "commit": "417770f" + "commit": "dd0a295" } \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/1301/run-1752587621.json b/broadcast/Deploy-all.s.sol/1301/run-1752587621.json new file mode 100644 index 00000000..5bc39daf --- /dev/null +++ b/broadcast/Deploy-all.s.sol/1301/run-1752587621.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0xf4eaa495e2592267cf1ecac0574e46ff150f7d808db07fd22a10eb45f43868b8", + "transactionType": "CREATE2", + "contractName": "USUPERC20Factory", + "contractAddress": "0x18ca00e621d1c7550fd89568180dfac93a06785e", + "function": null, + "arguments": null, + "transaction": { + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000016080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806340c84ea014610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0x11", + "chainId": "0x515" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x301c10", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xf4eaa495e2592267cf1ecac0574e46ff150f7d808db07fd22a10eb45f43868b8", + "transactionIndex": "0x2", + "blockHash": "0x366e6c09e82840fedc95740f23419dd38426e36d31e7d3478c029bcfb60fb3e4", + "blockNumber": "0x188b015", + "gasUsed": "0x2f124c", + "effectiveGasPrice": "0xf433c", + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x18ca00e621d1c7550fd89568180dfac93a06785e", + "l1BaseFeeScalar": "0x7d0", + "l1BlobBaseFee": "0x13d6", + "l1BlobBaseFeeScalar": "0xdbba0", + "l1Fee": "0xe3159492", + "l1GasPrice": "0x11f802c", + "l1GasUsed": "0x187f5" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1752587621, + "chain": 1301, + "commit": "dd0a295" +} \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/1301/run-1752588721.json b/broadcast/Deploy-all.s.sol/1301/run-1752588721.json new file mode 100644 index 00000000..1889bae0 --- /dev/null +++ b/broadcast/Deploy-all.s.sol/1301/run-1752588721.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0x74ccddf049a4ab291a68dbd0fd49ee7d6764845015a14052c67ce761e3ecd0bf", + "transactionType": "CREATE2", + "contractName": "USUPERC20Factory", + "contractAddress": "0xbc111472c7ebac76ab3882e4ae61479807329691", + "function": null, + "arguments": null, + "transaction": { + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000026080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80635dfbfbc214610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0x12", + "chainId": "0x515" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x301c10", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x74ccddf049a4ab291a68dbd0fd49ee7d6764845015a14052c67ce761e3ecd0bf", + "transactionIndex": "0x2", + "blockHash": "0xa84593c26744a06c03e9182afe26fcda38a58de680dcb2601df5071c380b4d0e", + "blockNumber": "0x188b44f", + "gasUsed": "0x2f124c", + "effectiveGasPrice": "0xfd", + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0xbc111472c7ebac76ab3882e4ae61479807329691", + "l1BaseFeeScalar": "0x7d0", + "l1BlobBaseFee": "0x43e1", + "l1BlobBaseFeeScalar": "0xdbba0", + "l1Fee": "0x11a435800", + "l1GasPrice": "0x160c162", + "l1GasUsed": "0x187cc" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1752588721, + "chain": 1301, + "commit": "dd0a295" +} \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/1301/run-1752588929.json b/broadcast/Deploy-all.s.sol/1301/run-1752588929.json new file mode 100644 index 00000000..047e129f --- /dev/null +++ b/broadcast/Deploy-all.s.sol/1301/run-1752588929.json @@ -0,0 +1,52 @@ +{ + "transactions": [ + { + "hash": "0xa3d4d3e83b379fc177dfd1143fabd98a8c9ae53aba914885d3b9f92633c1f672", + "transactionType": "CREATE2", + "contractName": "USUPERC20Factory", + "contractAddress": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", + "function": null, + "arguments": null, + "transaction": { + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80635dfbfbc214610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0x13", + "chainId": "0x515" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x301c04", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa3d4d3e83b379fc177dfd1143fabd98a8c9ae53aba914885d3b9f92633c1f672", + "transactionIndex": "0x2", + "blockHash": "0x19791f4225869de22c4a4ea5ffbe4d538498665d3c7ef421acf6f6810e0cf954", + "blockNumber": "0x188b520", + "gasUsed": "0x2f1240", + "effectiveGasPrice": "0xfd", + "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", + "l1BaseFeeScalar": "0x7d0", + "l1BlobBaseFee": "0x2dd6", + "l1BlobBaseFeeScalar": "0xdbba0", + "l1Fee": "0xfb2a0a11", + "l1GasPrice": "0x13b8865", + "l1GasUsed": "0x187bf" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1752588929, + "chain": 1301, + "commit": "dd0a295" +} \ No newline at end of file diff --git a/broadcast/Deploy-all.s.sol/1301/run-latest.json b/broadcast/Deploy-all.s.sol/1301/run-latest.json index 07028521..047e129f 100644 --- a/broadcast/Deploy-all.s.sol/1301/run-latest.json +++ b/broadcast/Deploy-all.s.sol/1301/run-latest.json @@ -1,18 +1,18 @@ { "transactions": [ { - "hash": "0xe659cb70b232a27ba9db789aaf52ba0cd17ca8e955558b17cd790edfc45de7ed", + "hash": "0xa3d4d3e83b379fc177dfd1143fabd98a8c9ae53aba914885d3b9f92633c1f672", "transactionType": "CREATE2", - "contractName": "UERC20SuperchainFactory", - "contractAddress": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", + "contractName": "USUPERC20Factory", + "contractAddress": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", "function": null, "arguments": null, "transaction": { "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", "value": "0x0", - "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806340c84ea014610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", - "nonce": "0xf", + "input": "0x00000000000000000000000000000000000000000000000000000000000000006080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80635dfbfbc214610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a", + "nonce": "0x13", "chainId": "0x515" }, "additionalContracts": [], @@ -22,31 +22,31 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x340eb8", + "cumulativeGasUsed": "0x301c04", "logs": [], "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xe659cb70b232a27ba9db789aaf52ba0cd17ca8e955558b17cd790edfc45de7ed", - "transactionIndex": "0x7", - "blockHash": "0x63a2f13a80e99a2ba80cd8848aaa9aa4ec7ee71243cafa1cf7ce36fec138ddab", - "blockNumber": "0x151b66f", + "transactionHash": "0xa3d4d3e83b379fc177dfd1143fabd98a8c9ae53aba914885d3b9f92633c1f672", + "transactionIndex": "0x2", + "blockHash": "0x19791f4225869de22c4a4ea5ffbe4d538498665d3c7ef421acf6f6810e0cf954", + "blockNumber": "0x188b520", "gasUsed": "0x2f1240", - "effectiveGasPrice": "0x2faf081", + "effectiveGasPrice": "0xfd", "from": "0x720d4e2992d3fcab992a661a7c3c61a8d15b1f8b", "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", - "contractAddress": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", + "contractAddress": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", "l1BaseFeeScalar": "0x7d0", - "l1BlobBaseFee": "0x1", + "l1BlobBaseFee": "0x2dd6", "l1BlobBaseFeeScalar": "0xdbba0", - "l1Fee": "0x1c51", - "l1GasPrice": "0x8", - "l1GasUsed": "0x187f5" + "l1Fee": "0xfb2a0a11", + "l1GasPrice": "0x13b8865", + "l1GasUsed": "0x187bf" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1748984784, + "timestamp": 1752588929, "chain": 1301, - "commit": "8c0b627" + "commit": "dd0a295" } \ No newline at end of file diff --git a/deployments/1.md b/deployments/1.md index c46de0be..c0f63752 100644 --- a/deployments/1.md +++ b/deployments/1.md @@ -29,7 +29,9 @@ - [Uniswap V3 Factory](#uniswap-v3-factory) - [Uniswap V2 Router02](#uniswap-v2-router02) - [Uniswap V2 Factory](#uniswap-v2-factory) + - [U E R C20 Factory](#u-e-r-c20-factory) - [Deployment History](#deployment-history) + - [Wed Jun 18 2025](#wed-jun-18-2025) - [Thu Jan 23 2025](#thu-jan-23-2025) - [Tue Jul 09 2024](#tue-jul-09-2024) - [Thu May 09 2024](#thu-may-09-2024) @@ -177,20 +179,25 @@ + + + + +
UniswapV2Factory 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f N/A
UERC20Factory0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5N/A
## Contracts ### Position Descriptor - + Address: [0xd1428ba554f4c8450b763a0b2040a4935c63f06c](https://etherscan.io/address/0xd1428ba554f4c8450b763a0b2040a4935c63f06c) - + Deployment Transaction: [0xf1670f6207b57912bacf5dd33045fa2ae7f3754f4933c11e5d8f892bf27d8977](https://etherscan.io/tx/0xf1670f6207b57912bacf5dd33045fa2ae7f3754f4933c11e5d8f892bf27d8977) - - + + Commit Hash: [2656054](git@github.com:Uniswap/contracts/commit/2656054) - + Thu, 23 Jan 2025 18:52:35 UTC @@ -227,15 +234,15 @@ Implementation: [0xb5b6d1ba9d3c85d3e94331341c1c880b22e3f144](https://etherscan.i --- ### Position Manager - + Address: [0xbd216513d74c8cf14cf4747e6aaa6420ff64ee9e](https://etherscan.io/address/0xbd216513d74c8cf14cf4747e6aaa6420ff64ee9e) - + Deployment Transaction: [0x9b4fa07bf2fb896e4d09479402eb587e89195dd3a33ceacfc95ce3e410f7fd4c](https://etherscan.io/tx/0x9b4fa07bf2fb896e4d09479402eb587e89195dd3a33ceacfc95ce3e410f7fd4c) - - + + Commit Hash: [2656054](git@github.com:Uniswap/contracts/commit/2656054) - + Thu, 23 Jan 2025 18:52:35 UTC @@ -243,15 +250,15 @@ Thu, 23 Jan 2025 18:52:35 UTC --- ### V4 Quoter - + Address: [0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203](https://etherscan.io/address/0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203) - + Deployment Transaction: [0xc56194b3e8eb020eefcd6aafa6e445d331f0f174adf504ec831ce6a0ebf9a059](https://etherscan.io/tx/0xc56194b3e8eb020eefcd6aafa6e445d331f0f174adf504ec831ce6a0ebf9a059) - - + + Commit Hash: [2656054](git@github.com:Uniswap/contracts/commit/2656054) - + Thu, 23 Jan 2025 18:52:35 UTC @@ -259,15 +266,15 @@ Thu, 23 Jan 2025 18:52:35 UTC --- ### State View - + Address: [0x7ffe42c4a5deea5b0fec41c94c136cf115597227](https://etherscan.io/address/0x7ffe42c4a5deea5b0fec41c94c136cf115597227) - + Deployment Transaction: [0x3d71d82b2c02425520a1296de1513ab45c4fc6e4768582673ae68aff4bb1b3f0](https://etherscan.io/tx/0x3d71d82b2c02425520a1296de1513ab45c4fc6e4768582673ae68aff4bb1b3f0) - - + + Commit Hash: [2656054](git@github.com:Uniswap/contracts/commit/2656054) - + Thu, 23 Jan 2025 18:52:35 UTC @@ -275,15 +282,15 @@ Thu, 23 Jan 2025 18:52:35 UTC --- ### Universal Router - + Address: [0x66a9893cc07d91d95644aedd05d03f95e1dba8af](https://etherscan.io/address/0x66a9893cc07d91d95644aedd05d03f95e1dba8af) - + Deployment Transaction: [0x7e770b7713bde88afd49651461b8533a5e7d864b9ddb20252392aaa1ef6cc6e0](https://etherscan.io/tx/0x7e770b7713bde88afd49651461b8533a5e7d864b9ddb20252392aaa1ef6cc6e0) - - + + Commit Hash: [2656054](git@github.com:Uniswap/contracts/commit/2656054) - + Thu, 23 Jan 2025 18:52:35 UTC @@ -291,15 +298,15 @@ Thu, 23 Jan 2025 18:52:35 UTC --- ### Pool Manager - + Address: [0x000000000004444c5dc75cB358380D2e3dE08A90](https://etherscan.io/address/0x000000000004444c5dc75cB358380D2e3dE08A90) - + Deployment Transaction: [0x747e0e02b7590eed32cface28e83260884e0b80675f5ae223c6888053aa68528](https://etherscan.io/tx/0x747e0e02b7590eed32cface28e83260884e0b80675f5ae223c6888053aa68528) - - - + + + Thu, 23 Jan 2025 16:16:47 UTC @@ -307,15 +314,15 @@ Thu, 23 Jan 2025 16:16:47 UTC --- ### Fee On Transfer Detector - + Address: [0xbc708B192552e19A088b4C4B8772aEeA83bCf760](https://etherscan.io/address/0xbc708B192552e19A088b4C4B8772aEeA83bCf760) - + Deployment Transaction: [0xc184f784fc37c08b91117b799e93bf45afd6007dc5ad8deff5820ef14497e4b3](https://etherscan.io/tx/0xc184f784fc37c08b91117b799e93bf45afd6007dc5ad8deff5820ef14497e4b3) - - - + + + Tue, 09 Jul 2024 14:45:11 UTC @@ -323,15 +330,15 @@ Tue, 09 Jul 2024 14:45:11 UTC --- ### Fee Collector - + Address: [0x000000fee13a103A10D593b9AE06b3e05F2E7E1c](https://etherscan.io/address/0x000000fee13a103A10D593b9AE06b3e05F2E7E1c) - + Deployment Transaction: [0xb43e27f11f83fdcf42fee9d18e14fa6dce19a6dd0dc229677ca31c943be4c447](https://etherscan.io/tx/0xb43e27f11f83fdcf42fee9d18e14fa6dce19a6dd0dc229677ca31c943be4c447) - - - + + + Thu, 09 May 2024 22:44:59 UTC @@ -339,15 +346,15 @@ Thu, 09 May 2024 22:44:59 UTC --- ### V2 Dutch Order Reactor - + Address: [0x00000011F84B9aa48e5f8aA8B9897600006289Be](https://etherscan.io/address/0x00000011F84B9aa48e5f8aA8B9897600006289Be) - + Deployment Transaction: [0x5d80bc56d21ac5cb858a1445dfc8ec7fe2edfec5366a945f6ace185b0ff4315d](https://etherscan.io/tx/0x5d80bc56d21ac5cb858a1445dfc8ec7fe2edfec5366a945f6ace185b0ff4315d) - - - + + + Tue, 07 May 2024 00:11:11 UTC @@ -355,15 +362,15 @@ Tue, 07 May 2024 00:11:11 UTC --- ### Quoter - + Address: [0x5e55C9e631FAE526cd4B0526C4818D6e0a9eF0e3](https://etherscan.io/address/0x5e55C9e631FAE526cd4B0526C4818D6e0a9eF0e3) - + Deployment Transaction: [0x987a4ebc41d0713ffa5ffa7de5e5de8c243face6c92318272eeef3f78f3fe32c](https://etherscan.io/tx/0x987a4ebc41d0713ffa5ffa7de5e5de8c243face6c92318272eeef3f78f3fe32c) - - - + + + Mon, 15 Apr 2024 18:21:35 UTC @@ -371,15 +378,15 @@ Mon, 15 Apr 2024 18:21:35 UTC --- ### Exclusive Dutch Order Reactor - + Address: [0x6000da47483062A0D734Ba3dc7576Ce6A0B645C4](https://etherscan.io/address/0x6000da47483062A0D734Ba3dc7576Ce6A0B645C4) - + Deployment Transaction: [0xa86efffcc790c0c65c83b0aab4c8cbfff1c6195a8276ef9f5dbe99f50e48d9f2](https://etherscan.io/tx/0xa86efffcc790c0c65c83b0aab4c8cbfff1c6195a8276ef9f5dbe99f50e48d9f2) - - - + + + Wed, 26 Jul 2023 14:56:35 UTC @@ -387,15 +394,15 @@ Wed, 26 Jul 2023 14:56:35 UTC --- ### Order Quoter - + Address: [0x54539967a06Fc0E3C3ED0ee320Eb67362D13C5fF](https://etherscan.io/address/0x54539967a06Fc0E3C3ED0ee320Eb67362D13C5fF) - + Deployment Transaction: [0x7743c23afeca03c875e3664159eb71381d981a0e689ed7e8adceea6db769f107](https://etherscan.io/tx/0x7743c23afeca03c875e3664159eb71381d981a0e689ed7e8adceea6db769f107) - - - + + + Wed, 26 Jul 2023 14:56:35 UTC @@ -403,15 +410,15 @@ Wed, 26 Jul 2023 14:56:35 UTC --- ### Permit2 - + Address: [0x000000000022D473030F116dDEE9F6B43aC78BA3](https://etherscan.io/address/0x000000000022D473030F116dDEE9F6B43aC78BA3) - + Deployment Transaction: [0xf2f1fe96c16ee674bb7fcee166be52465a418927d124f5f1d231b36eae65d377](https://etherscan.io/tx/0xf2f1fe96c16ee674bb7fcee166be52465a418927d124f5f1d231b36eae65d377) - - - + + + Thu, 17 Nov 2022 01:17:59 UTC @@ -419,15 +426,15 @@ Thu, 17 Nov 2022 01:17:59 UTC --- ### Mixed Route Quoter V1 - + Address: [0x84E44095eeBfEC7793Cd7d5b57B7e401D7f1cA2E](https://etherscan.io/address/0x84E44095eeBfEC7793Cd7d5b57B7e401D7f1cA2E) - + Deployment Transaction: [0x6290f7b4024dd5fcc9c482e981bfc0a241dc1ae78e68d407d929c867bbcdb80f](https://etherscan.io/tx/0x6290f7b4024dd5fcc9c482e981bfc0a241dc1ae78e68d407d929c867bbcdb80f) - - - + + + Fri, 22 Jul 2022 17:23:00 UTC @@ -435,15 +442,15 @@ Fri, 22 Jul 2022 17:23:00 UTC --- ### Swap Router02 - + Address: [0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45](https://etherscan.io/address/0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45) - + Deployment Transaction: [0x7299cca7203f60a831756e043f4c2ccb0ee6cb7cf8aed8420f0ae99a16883a2b](https://etherscan.io/tx/0x7299cca7203f60a831756e043f4c2ccb0ee6cb7cf8aed8420f0ae99a16883a2b) - - - + + + Tue, 14 Dec 2021 17:37:26 UTC @@ -451,15 +458,15 @@ Tue, 14 Dec 2021 17:37:26 UTC --- ### Quoter V2 - + Address: [0x61fFE014bA17989E743c5F6cB21bF9697530B21e](https://etherscan.io/address/0x61fFE014bA17989E743c5F6cB21bF9697530B21e) - + Deployment Transaction: [0xff27d2945a7ce3e3682ad077f29b2bfdc819931a1e7fd4507fb9114a8861084e](https://etherscan.io/tx/0xff27d2945a7ce3e3682ad077f29b2bfdc819931a1e7fd4507fb9114a8861084e) - - - + + + Wed, 01 Dec 2021 23:35:44 UTC @@ -467,15 +474,15 @@ Wed, 01 Dec 2021 23:35:44 UTC --- ### V3 Migrator - + Address: [0xA5644E29708357803b5A882D272c41cC0dF92B34](https://etherscan.io/address/0xA5644E29708357803b5A882D272c41cC0dF92B34) - + Deployment Transaction: [0x399fa9a469d5bdf41130b35298ce25f0be3601dbce0629725f0dba7d37bcd699](https://etherscan.io/tx/0x399fa9a469d5bdf41130b35298ce25f0be3601dbce0629725f0dba7d37bcd699) - - - + + + Tue, 04 May 2021 19:35:26 UTC @@ -483,15 +490,15 @@ Tue, 04 May 2021 19:35:26 UTC --- ### Nonfungible Position Manager - + Address: [0xC36442b4a4522E871399CD717aBDD847Ab11FE88](https://etherscan.io/address/0xC36442b4a4522E871399CD717aBDD847Ab11FE88) - + Deployment Transaction: [0xc5eabeff36dc4593e58ede208838105815106e5a11aa725638d72b43f88e5fb2](https://etherscan.io/tx/0xc5eabeff36dc4593e58ede208838105815106e5a11aa725638d72b43f88e5fb2) - - - + + + Tue, 04 May 2021 19:35:13 UTC @@ -499,15 +506,15 @@ Tue, 04 May 2021 19:35:13 UTC --- ### Nonfungible Token Position Descriptor - + Address: [0xEe6A57eC80ea46401049E92587E52f5Ec1c24785](https://etherscan.io/address/0xEe6A57eC80ea46401049E92587E52f5Ec1c24785) - + Deployment Transaction: [0x453325d71464a4c932f1367a3b67d76265051e160dc59027e8242b1857aad880](https://etherscan.io/tx/0x453325d71464a4c932f1367a3b67d76265051e160dc59027e8242b1857aad880) - - - + + + Tue, 04 May 2021 19:33:33 UTC @@ -548,15 +555,15 @@ Proxy Admin: [0xB753548F6E010e7e680BA186F9Ca1BdAB2E90cf2](https://etherscan.io/a --- ### N F T Descriptor - + Address: [0x42B24A95702b9986e82d421cC3568932790A48Ec](https://etherscan.io/address/0x42B24A95702b9986e82d421cC3568932790A48Ec) - + Deployment Transaction: [0xb722fce9e757d6a005678267984e86f2ee220edcc8405e60e5ccdcc1a1238e45](https://etherscan.io/tx/0xb722fce9e757d6a005678267984e86f2ee220edcc8405e60e5ccdcc1a1238e45) - - - + + + Tue, 04 May 2021 19:32:14 UTC @@ -564,15 +571,15 @@ Tue, 04 May 2021 19:32:14 UTC --- ### Swap Router - + Address: [0xE592427A0AEce92De3Edee1F18E0157C05861564](https://etherscan.io/address/0xE592427A0AEce92De3Edee1F18E0157C05861564) - + Deployment Transaction: [0xe881c43cd88063e84a1d0283f41ee5348239b259c0d17a7e2e4552da3f4b2bc7](https://etherscan.io/tx/0xe881c43cd88063e84a1d0283f41ee5348239b259c0d17a7e2e4552da3f4b2bc7) - - - + + + Tue, 04 May 2021 19:30:41 UTC @@ -580,15 +587,15 @@ Tue, 04 May 2021 19:30:41 UTC --- ### Tick Lens - + Address: [0xbfd8137f7d1516D3ea5cA83523914859ec47F573](https://etherscan.io/address/0xbfd8137f7d1516D3ea5cA83523914859ec47F573) - + Deployment Transaction: [0x73ae3fbc5d17ade6ca9bd0fdb9014dcc0b540e3b9bc5db89d0103889b930b215](https://etherscan.io/tx/0x73ae3fbc5d17ade6ca9bd0fdb9014dcc0b540e3b9bc5db89d0103889b930b215) - - - + + + Tue, 04 May 2021 19:29:02 UTC @@ -596,15 +603,15 @@ Tue, 04 May 2021 19:29:02 UTC --- ### Uniswap V3 Factory - + Address: [0x1F98431c8aD98523631AE4a59f267346ea31F984](https://etherscan.io/address/0x1F98431c8aD98523631AE4a59f267346ea31F984) - + Deployment Transaction: [0x1e20cd6d47d7021ae7e437792823517eeadd835df09dde17ab45afd7a5df4603](https://etherscan.io/tx/0x1e20cd6d47d7021ae7e437792823517eeadd835df09dde17ab45afd7a5df4603) - - - + + + Tue, 04 May 2021 19:27:00 UTC @@ -612,15 +619,15 @@ Tue, 04 May 2021 19:27:00 UTC --- ### Uniswap V2 Router02 - + Address: [0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D](https://etherscan.io/address/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D) - + Deployment Transaction: [0x4fc1580e7f66c58b7c26881cce0aab9c3509afe6e507527f30566fbf8039bcd0](https://etherscan.io/tx/0x4fc1580e7f66c58b7c26881cce0aab9c3509afe6e507527f30566fbf8039bcd0) - - - + + + Fri, 05 Jun 2020 20:17:21 UTC @@ -628,28 +635,63 @@ Fri, 05 Jun 2020 20:17:21 UTC --- ### Uniswap V2 Factory - + Address: [0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f](https://etherscan.io/address/0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f) - + Deployment Transaction: [0xc31d7e7e85cab1d38ce1b8ac17e821ccd47dbde00f9d57f2bd8613bff9428396](https://etherscan.io/tx/0xc31d7e7e85cab1d38ce1b8ac17e821ccd47dbde00f9d57f2bd8613bff9428396) - - - + + + Mon, 04 May 2020 16:34:02 UTC +--- + +### U E R C20 Factory + +Address: [0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5](https://etherscan.io/address/0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5) + +Deployment Transaction: [0x3fd5a6f58f25bd2a6bc180e43a5d613e12a284733c9bf7a80fd857f6ac342ad2](https://etherscan.io/tx/0x3fd5a6f58f25bd2a6bc180e43a5d613e12a284733c9bf7a80fd857f6ac342ad2) + + + +Commit Hash: [dd0a295](git@github.com:Uniswap/contracts/commit/dd0a295) + +Wed, 18 Jun 2025 18:30:09 UTC + + + ## Deployment History - -### Thu Jan 23 2025 + +### Wed Jun 18 2025 + + +Deployed contracts: + +
+ + U E R C20 Factory + + + + + +
Commit hash: dd0a295
+
+ + +### Thu Jan 23 2025 + + Deployed contracts: - +
Position Descriptor (Implementation) @@ -779,16 +821,16 @@ Deployed contracts: 0x1a9C8182C09F50C8318d769245beA52c32BE35BC -
+
### Tue Jul 09 2024 + - - + Deployed contracts: - +
Fee On Transfer Detector @@ -804,16 +846,16 @@ Deployed contracts: 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f -
+ ### Thu May 09 2024 + - - + Deployed contracts: - +
Fee Collector @@ -841,16 +883,16 @@ Deployed contracts: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 -
+ ### Mon May 06 2024 + - - + Deployed contracts: - +
V2 Dutch Order Reactor @@ -870,16 +912,16 @@ Deployed contracts: 0x1a9C8182C09F50C8318d769245beA52c32BE35BC -
+ ### Mon Apr 15 2024 + - - + Deployed contracts: - +
Quoter @@ -895,16 +937,16 @@ Deployed contracts: 0x1F98431c8aD98523631AE4a59f267346ea31F984 -
+ ### Fri Jan 26 2024 + - - + Deployed contracts: - +
Quoter @@ -920,16 +962,16 @@ Deployed contracts: 0x1F98431c8aD98523631AE4a59f267346ea31F984 -
+ ### Wed Jul 26 2023 + - - + Deployed contracts: - +
Exclusive Dutch Order Reactor @@ -957,16 +999,16 @@ Deployed contracts:
-
+ ### Fri Apr 28 2023 + - - + Deployed contracts: - +
Universal Router @@ -982,16 +1024,16 @@ Deployed contracts: {"permit2":"0x000000000022D473030F116dDEE9F6B43aC78BA3","weth9":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","seaportV1_5":"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC","seaportV1_4":"0x00000000000001ad428e4906aE43D8F9852d0dD6","openseaConduit":"0x1E0049783F008A0085193E00003D00cd54003c71","nftxZap":"0x941A6d105802CCCaa06DE58a13a6F49ebDCD481C","x2y2":"0x74312363e45DCaBA76c59ec49a7Aa8A65a67EeD3","foundation":"0xcDA72070E455bb31C7690a170224Ce43623d0B6f","sudoswap":"0x2B2e8cDA09bBA9660dCA5cB6233787738Ad68329","elementMarket":"0x20F780A973856B93f63670377900C1d2a50a77c4","nft20Zap":"0xA42f6cADa809Bcf417DeefbdD69C5C5A909249C0","cryptopunks":"0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB","looksRareV2":"0x0000000000E655fAe4d56241588680F86E3b2377","routerRewardsDistributor":"0xea37093ce161f090e443f304e1bF3a8f14D7bb40","looksRareRewardsDistributor":"0x0554f068365eD43dcC98dcd7Fd7A8208a5638C72","looksRareToken":"0xf4d2888d29D722226FafA5d9B24F9164c092421E","v2Factory":"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f","v3Factory":"0x1F98431c8aD98523631AE4a59f267346ea31F984","pairInitCodeHash":"0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f","poolInitCodeHash":"0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54"} -
+ ### Tue Nov 29 2022 + - - + Deployed contracts: - +
Universal Router @@ -1007,16 +1049,16 @@ Deployed contracts: {"permit2":"0x000000000022D473030F116dDEE9F6B43aC78BA3","weth9":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","seaport":"0x00000000006c3852cbEf3e08E8dF289169EdE581","nftxZap":"0x0fc584529a2AEfA997697FAfAcbA5831faC0c22d","x2y2":"0x74312363e45DCaBA76c59ec49a7Aa8A65a67EeD3","foundation":"0xcDA72070E455bb31C7690a170224Ce43623d0B6f","sudoswap":"0x2B2e8cDA09bBA9660dCA5cB6233787738Ad68329","nft20Zap":"0xA42f6cADa809Bcf417DeefbdD69C5C5A909249C0","cryptopunks":"0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB","looksRare":"0x59728544B08AB483533076417FbBB2fD0B17CE3a","routerRewardsDistributor":"0xea37093ce161f090e443f304e1bF3a8f14D7bb40","looksRareRewardsDistributor":"0x0554f068365eD43dcC98dcd7Fd7A8208a5638C72","looksRareToken":"0xf4d2888d29D722226FafA5d9B24F9164c092421E","v2Factory":"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f","v3Factory":"0x1F98431c8aD98523631AE4a59f267346ea31F984","pairInitCodeHash":"0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f","poolInitCodeHash":"0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54"} -
+ ### Wed Nov 16 2022 + - - + Deployed contracts: - +
Permit2 @@ -1024,16 +1066,16 @@ Deployed contracts:
-
+ ### Fri Jul 22 2022 + - - + Deployed contracts: - +
Mixed Route Quoter V1 @@ -1057,16 +1099,16 @@ Deployed contracts: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 -
+ ### Tue Dec 14 2021 + - - + Deployed contracts: - +
Swap Router02 @@ -1094,16 +1136,16 @@ Deployed contracts: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 -
+ ### Wed Dec 01 2021 + - - + Deployed contracts: - +
Quoter V2 @@ -1123,16 +1165,16 @@ Deployed contracts: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 -
+ ### Tue May 04 2021 + - - + Deployed contracts: - +
V3 Migrator @@ -1260,16 +1302,16 @@ Deployed contracts:
-
+ ### Fri Jun 05 2020 + - - + Deployed contracts: - +
Uniswap V2 Router02 @@ -1289,16 +1331,16 @@ Deployed contracts: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 -
+ ### Mon May 04 2020 + - - + Deployed contracts: - +
Uniswap V2 Factory @@ -1314,5 +1356,5 @@ Deployed contracts: 0xc0a4272bb5df52134178Df25d77561CfB17ce407 -
+ \ No newline at end of file diff --git a/deployments/130.md b/deployments/130.md index 099dc116..d813cb4d 100644 --- a/deployments/130.md +++ b/deployments/130.md @@ -1,4 +1,4 @@ -# contracts +# ### Table of Contents @@ -20,7 +20,11 @@ - [V4 Quoter](#v4-quoter) - [State View](#state-view) - [Universal Router](#universal-router) + - [U E R C20 Superchain Factory](#u-e-r-c20-superchain-factory) + - [U S U P E R C20 Factory](#u-s-u-p-e-r-c20-factory) - [Deployment History](#deployment-history) + - [Tue Jul 15 2025](#tue-jul-15-2025) + - [Wed Jun 18 2025](#wed-jun-18-2025) - [Wed Jan 22 2025](#wed-jan-22-2025) - [Fri Nov 08 2024](#fri-nov-08-2024) @@ -32,97 +36,107 @@ Version UniswapV2Router02 - 0x284f11109359a7e1306c3e447ef14d38400063ff + 0x284f11109359a7e1306c3e447ef14d38400063ff N/A UniswapInterfaceMulticall - 0xb7610f9b733e7d45184be3a1bc966960ccc54f0b + 0xb7610f9b733e7d45184be3a1bc966960ccc54f0b N/A QuoterV2 - 0x385a5cf5f83e99f7bb2852b6a19c3538b9fa7658 + 0x385a5cf5f83e99f7bb2852b6a19c3538b9fa7658 N/A TickLens - 0xd5d76fa166ab8d8ad4c9f61aaa81457b66cbe443 + 0xd5d76fa166ab8d8ad4c9f61aaa81457b66cbe443 N/A NFTDescriptor - 0x2f6182205bc7f3864169cef4af3128055f79ab2f + 0x2f6182205bc7f3864169cef4af3128055f79ab2f N/A NonfungibleTokenPositionDescriptor - 0x0dfa04b28ab68ffd0e6e17fac6ec16d4846a2004 + 0x0dfa04b28ab68ffd0e6e17fac6ec16d4846a2004 N/A NonfungiblePositionManager - 0x943e6e07a7e8e791dafc44083e54041d743c46e9 + 0x943e6e07a7e8e791dafc44083e54041d743c46e9 N/A V3Migrator - 0xb9d0c246f306b1aaf02ae6ba112d5ef25e5b60dc + 0xb9d0c246f306b1aaf02ae6ba112d5ef25e5b60dc N/A Quoter - 0x565ac8c7863d9bb16d07e809ff49fe5cd467634c + 0x565ac8c7863d9bb16d07e809ff49fe5cd467634c N/A SwapRouter02 - 0x73855d06de49d0fe4a9c42636ba96c62da12ff9c + 0x73855d06de49d0fe4a9c42636ba96c62da12ff9c N/A FeeOnTransferDetector - 0x55e74a5c3310bbccdd0b655ade2309e0d0d25826 + 0x55e74a5c3310bbccdd0b655ade2309e0d0d25826 N/A PositionDescriptor - 0x9fb28449a191cd8c03a1b7abfb0f5996ecf7f722 + 0x9fb28449a191cd8c03a1b7abfb0f5996ecf7f722 N/A PositionManager - 0x4529a01c7a0410167c5740c487a8de60232617bf + 0x4529a01c7a0410167c5740c487a8de60232617bf N/A V4Quoter - 0x333e3c607b141b18ff6de9f258db6e77fe7491e0 + 0x333e3c607b141b18ff6de9f258db6e77fe7491e0 N/A StateView - 0x86e8631a016f9068c3f085faf484ee3f5fdee8f2 + 0x86e8631a016f9068c3f085faf484ee3f5fdee8f2 N/A UniversalRouter - 0xef740bf23acae26f6492b10de645d6b98dc8eaf3 + 0xef740bf23acae26f6492b10de645d6b98dc8eaf3 + N/A + + + UERC20SuperchainFactory + 0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9 + N/A + + + USUPERC20Factory + 0x24016ed99a69e9b86d16d84351e1661266b7ac6a N/A ## Contracts ### Uniswap V2 Router02 - -Address: 0x284f11109359a7e1306c3e447ef14d38400063ff - -Deployment Transaction: 0x875c8ceb1eb2e79d6641db6d3c0f8bca2c5bd51cb0966c75d27b7fa8be80ab02 - - -Commit Hash: [941946a](https://github.com/Uniswap/contracts/commit/941946a) - +Address: [0x284f11109359a7e1306c3e447ef14d38400063ff](https://uniscan.xyz/address/0x284f11109359a7e1306c3e447ef14d38400063ff) + +Deployment Transaction: [0x875c8ceb1eb2e79d6641db6d3c0f8bca2c5bd51cb0966c75d27b7fa8be80ab02](https://uniscan.xyz/tx/0x875c8ceb1eb2e79d6641db6d3c0f8bca2c5bd51cb0966c75d27b7fa8be80ab02) + + + +Commit Hash: [941946a](git@github.com:Uniswap/contracts/commit/941946a) + Fri, 08 Nov 2024 05:08:34 UTC @@ -130,15 +144,15 @@ Fri, 08 Nov 2024 05:08:34 UTC --- ### Uniswap Interface Multicall - -Address: 0xb7610f9b733e7d45184be3a1bc966960ccc54f0b - -Deployment Transaction: 0xc271a787c2ef97c21e58012f2e72b470933c068c86eca28d56240aacfda33a2f - - -Commit Hash: [941946a](https://github.com/Uniswap/contracts/commit/941946a) - +Address: [0xb7610f9b733e7d45184be3a1bc966960ccc54f0b](https://uniscan.xyz/address/0xb7610f9b733e7d45184be3a1bc966960ccc54f0b) + +Deployment Transaction: [0xc271a787c2ef97c21e58012f2e72b470933c068c86eca28d56240aacfda33a2f](https://uniscan.xyz/tx/0xc271a787c2ef97c21e58012f2e72b470933c068c86eca28d56240aacfda33a2f) + + + +Commit Hash: [941946a](git@github.com:Uniswap/contracts/commit/941946a) + Fri, 08 Nov 2024 05:08:34 UTC @@ -146,15 +160,15 @@ Fri, 08 Nov 2024 05:08:34 UTC --- ### Quoter V2 - -Address: 0x385a5cf5f83e99f7bb2852b6a19c3538b9fa7658 - -Deployment Transaction: 0x376cb78b158d6731f95d34b2bfbefb9396bf49b84a89987db8d2e0cd731557a9 - - -Commit Hash: [941946a](https://github.com/Uniswap/contracts/commit/941946a) - +Address: [0x385a5cf5f83e99f7bb2852b6a19c3538b9fa7658](https://uniscan.xyz/address/0x385a5cf5f83e99f7bb2852b6a19c3538b9fa7658) + +Deployment Transaction: [0x376cb78b158d6731f95d34b2bfbefb9396bf49b84a89987db8d2e0cd731557a9](https://uniscan.xyz/tx/0x376cb78b158d6731f95d34b2bfbefb9396bf49b84a89987db8d2e0cd731557a9) + + + +Commit Hash: [941946a](git@github.com:Uniswap/contracts/commit/941946a) + Fri, 08 Nov 2024 05:08:34 UTC @@ -162,15 +176,15 @@ Fri, 08 Nov 2024 05:08:34 UTC --- ### Tick Lens - -Address: 0xd5d76fa166ab8d8ad4c9f61aaa81457b66cbe443 - -Deployment Transaction: 0xd8be4256aee637152874cf89e6d7f365b7ce4af9f0879fa4996f081b095bc2b7 - - -Commit Hash: [941946a](https://github.com/Uniswap/contracts/commit/941946a) - +Address: [0xd5d76fa166ab8d8ad4c9f61aaa81457b66cbe443](https://uniscan.xyz/address/0xd5d76fa166ab8d8ad4c9f61aaa81457b66cbe443) + +Deployment Transaction: [0xd8be4256aee637152874cf89e6d7f365b7ce4af9f0879fa4996f081b095bc2b7](https://uniscan.xyz/tx/0xd8be4256aee637152874cf89e6d7f365b7ce4af9f0879fa4996f081b095bc2b7) + + + +Commit Hash: [941946a](git@github.com:Uniswap/contracts/commit/941946a) + Fri, 08 Nov 2024 05:08:34 UTC @@ -178,15 +192,15 @@ Fri, 08 Nov 2024 05:08:34 UTC --- ### N F T Descriptor - -Address: 0x2f6182205bc7f3864169cef4af3128055f79ab2f - -Deployment Transaction: 0xda1397d41f1cde4d9469d5a7a7734ba32f717072a7b682795713be5c3e5b21db - - -Commit Hash: [941946a](https://github.com/Uniswap/contracts/commit/941946a) - +Address: [0x2f6182205bc7f3864169cef4af3128055f79ab2f](https://uniscan.xyz/address/0x2f6182205bc7f3864169cef4af3128055f79ab2f) + +Deployment Transaction: [0xda1397d41f1cde4d9469d5a7a7734ba32f717072a7b682795713be5c3e5b21db](https://uniscan.xyz/tx/0xda1397d41f1cde4d9469d5a7a7734ba32f717072a7b682795713be5c3e5b21db) + + + +Commit Hash: [941946a](git@github.com:Uniswap/contracts/commit/941946a) + Fri, 08 Nov 2024 05:08:34 UTC @@ -194,15 +208,15 @@ Fri, 08 Nov 2024 05:08:34 UTC --- ### Nonfungible Token Position Descriptor - -Address: 0x0dfa04b28ab68ffd0e6e17fac6ec16d4846a2004 - -Deployment Transaction: 0xc04b531f3ff842dffd44b697e0c3200174a309cf735b8c0b33c6226f1bc7813f - - -Commit Hash: [941946a](https://github.com/Uniswap/contracts/commit/941946a) - +Address: [0x0dfa04b28ab68ffd0e6e17fac6ec16d4846a2004](https://uniscan.xyz/address/0x0dfa04b28ab68ffd0e6e17fac6ec16d4846a2004) + +Deployment Transaction: [0xc04b531f3ff842dffd44b697e0c3200174a309cf735b8c0b33c6226f1bc7813f](https://uniscan.xyz/tx/0xc04b531f3ff842dffd44b697e0c3200174a309cf735b8c0b33c6226f1bc7813f) + + + +Commit Hash: [941946a](git@github.com:Uniswap/contracts/commit/941946a) + Fri, 08 Nov 2024 05:08:34 UTC @@ -215,11 +229,11 @@ Proxy Type: TransparentUpgradeableProxy -Implementation: 0x477d03877c1a8afddc4b7945cceb01f4ff907429 +Implementation: [0x477d03877c1a8afddc4b7945cceb01f4ff907429](https://uniscan.xyz/address/0x477d03877c1a8afddc4b7945cceb01f4ff907429) -Proxy Admin: 0x96df89210cdd66997472aec13242934d30ed8de8 +Proxy Admin: [0x96df89210cdd66997472aec13242934d30ed8de8](https://uniscan.xyz/address/0x96df89210cdd66997472aec13242934d30ed8de8) @@ -233,8 +247,8 @@ Proxy Admin: 0x96df89210cdd66997472aec13242934d30ed8de8 N/A - 0x477d03877c1a8afddc4b7945cceb01f4ff907429 - 941946a + 0x477d03877c1a8afddc4b7945cceb01f4ff907429 + 941946a @@ -243,15 +257,15 @@ Proxy Admin: 0x96df89210cdd66997472aec13242934d30ed8de8 --- ### Nonfungible Position Manager - -Address: 0x943e6e07a7e8e791dafc44083e54041d743c46e9 - -Deployment Transaction: 0x3432429d30f964476512a0b1db6ca587694a492669907e59972386ba8f7cc69b - - -Commit Hash: [941946a](https://github.com/Uniswap/contracts/commit/941946a) - +Address: [0x943e6e07a7e8e791dafc44083e54041d743c46e9](https://uniscan.xyz/address/0x943e6e07a7e8e791dafc44083e54041d743c46e9) + +Deployment Transaction: [0x3432429d30f964476512a0b1db6ca587694a492669907e59972386ba8f7cc69b](https://uniscan.xyz/tx/0x3432429d30f964476512a0b1db6ca587694a492669907e59972386ba8f7cc69b) + + + +Commit Hash: [941946a](git@github.com:Uniswap/contracts/commit/941946a) + Fri, 08 Nov 2024 05:08:34 UTC @@ -259,15 +273,15 @@ Fri, 08 Nov 2024 05:08:34 UTC --- ### V3 Migrator - -Address: 0xb9d0c246f306b1aaf02ae6ba112d5ef25e5b60dc - -Deployment Transaction: 0xa3ab7a1cca6ee96f948c048c65113a6bf9684bfdf4da922b4ce5eff1658c2de0 - - -Commit Hash: [941946a](https://github.com/Uniswap/contracts/commit/941946a) - +Address: [0xb9d0c246f306b1aaf02ae6ba112d5ef25e5b60dc](https://uniscan.xyz/address/0xb9d0c246f306b1aaf02ae6ba112d5ef25e5b60dc) + +Deployment Transaction: [0xa3ab7a1cca6ee96f948c048c65113a6bf9684bfdf4da922b4ce5eff1658c2de0](https://uniscan.xyz/tx/0xa3ab7a1cca6ee96f948c048c65113a6bf9684bfdf4da922b4ce5eff1658c2de0) + + + +Commit Hash: [941946a](git@github.com:Uniswap/contracts/commit/941946a) + Fri, 08 Nov 2024 05:08:34 UTC @@ -275,15 +289,15 @@ Fri, 08 Nov 2024 05:08:34 UTC --- ### Quoter - -Address: 0x565ac8c7863d9bb16d07e809ff49fe5cd467634c - -Deployment Transaction: 0x1fc40ce3574d9fcf3768075bbcdda628dcdcd24be29bee022b27ddc6ccc12ec9 - - -Commit Hash: [941946a](https://github.com/Uniswap/contracts/commit/941946a) - +Address: [0x565ac8c7863d9bb16d07e809ff49fe5cd467634c](https://uniscan.xyz/address/0x565ac8c7863d9bb16d07e809ff49fe5cd467634c) + +Deployment Transaction: [0x1fc40ce3574d9fcf3768075bbcdda628dcdcd24be29bee022b27ddc6ccc12ec9](https://uniscan.xyz/tx/0x1fc40ce3574d9fcf3768075bbcdda628dcdcd24be29bee022b27ddc6ccc12ec9) + + + +Commit Hash: [941946a](git@github.com:Uniswap/contracts/commit/941946a) + Fri, 08 Nov 2024 05:08:34 UTC @@ -291,15 +305,15 @@ Fri, 08 Nov 2024 05:08:34 UTC --- ### Swap Router02 - -Address: 0x73855d06de49d0fe4a9c42636ba96c62da12ff9c - -Deployment Transaction: 0x632b122010b65269964201edab41a9e4a8f91d6d71b986945e89c5e98e3a1c1e - - -Commit Hash: [941946a](https://github.com/Uniswap/contracts/commit/941946a) - +Address: [0x73855d06de49d0fe4a9c42636ba96c62da12ff9c](https://uniscan.xyz/address/0x73855d06de49d0fe4a9c42636ba96c62da12ff9c) + +Deployment Transaction: [0x632b122010b65269964201edab41a9e4a8f91d6d71b986945e89c5e98e3a1c1e](https://uniscan.xyz/tx/0x632b122010b65269964201edab41a9e4a8f91d6d71b986945e89c5e98e3a1c1e) + + + +Commit Hash: [941946a](git@github.com:Uniswap/contracts/commit/941946a) + Fri, 08 Nov 2024 05:08:34 UTC @@ -307,15 +321,15 @@ Fri, 08 Nov 2024 05:08:34 UTC --- ### Fee On Transfer Detector - -Address: 0x55e74a5c3310bbccdd0b655ade2309e0d0d25826 - -Deployment Transaction: 0x49bcd22f916527fdc918f7e0442494cd92dbaebaa1b0d9746d9c4a051ed71b2e - - -Commit Hash: [941946a](https://github.com/Uniswap/contracts/commit/941946a) - +Address: [0x55e74a5c3310bbccdd0b655ade2309e0d0d25826](https://uniscan.xyz/address/0x55e74a5c3310bbccdd0b655ade2309e0d0d25826) + +Deployment Transaction: [0x49bcd22f916527fdc918f7e0442494cd92dbaebaa1b0d9746d9c4a051ed71b2e](https://uniscan.xyz/tx/0x49bcd22f916527fdc918f7e0442494cd92dbaebaa1b0d9746d9c4a051ed71b2e) + + + +Commit Hash: [941946a](git@github.com:Uniswap/contracts/commit/941946a) + Fri, 08 Nov 2024 05:08:34 UTC @@ -323,15 +337,15 @@ Fri, 08 Nov 2024 05:08:34 UTC --- ### Position Descriptor - -Address: 0x9fb28449a191cd8c03a1b7abfb0f5996ecf7f722 - -Deployment Transaction: 0x86f8f6510d17aaafa452e052fe0a50479145abe63373bf6f60d49a2790c55288 - - -Commit Hash: [417770f](https://github.com/Uniswap/contracts/commit/417770f) - +Address: [0x9fb28449a191cd8c03a1b7abfb0f5996ecf7f722](https://uniscan.xyz/address/0x9fb28449a191cd8c03a1b7abfb0f5996ecf7f722) + +Deployment Transaction: [0x86f8f6510d17aaafa452e052fe0a50479145abe63373bf6f60d49a2790c55288](https://uniscan.xyz/tx/0x86f8f6510d17aaafa452e052fe0a50479145abe63373bf6f60d49a2790c55288) + + + +Commit Hash: [417770f](git@github.com:Uniswap/contracts/commit/417770f) + Wed, 22 Jan 2025 17:49:16 UTC @@ -344,7 +358,7 @@ Proxy Type: TransparentUpgradeableProxy -Implementation: 0x8be6f6785b71c16ca238abbcdd3f33271969c305 +Implementation: [0x8be6f6785b71c16ca238abbcdd3f33271969c305](https://uniscan.xyz/address/0x8be6f6785b71c16ca238abbcdd3f33271969c305) @@ -358,8 +372,8 @@ Implementation: 0x8be6f6785b71c16ca238abbcdd3f33271969c305 N/A - 0x8be6f6785b71c16ca238abbcdd3f33271969c305 - 417770f + 0x8be6f6785b71c16ca238abbcdd3f33271969c305 + 417770f @@ -368,15 +382,15 @@ Implementation: 0x8be6f6785b71c16ca238abbcdd3f33271969c305 --- ### Position Manager - -Address: 0x4529a01c7a0410167c5740c487a8de60232617bf - -Deployment Transaction: 0x51161eb65e19fabceb5de42cf48b3d4d283fa9d455c755d2f2fbf7b91b77d9ee - - -Commit Hash: [417770f](https://github.com/Uniswap/contracts/commit/417770f) - +Address: [0x4529a01c7a0410167c5740c487a8de60232617bf](https://uniscan.xyz/address/0x4529a01c7a0410167c5740c487a8de60232617bf) + +Deployment Transaction: [0x51161eb65e19fabceb5de42cf48b3d4d283fa9d455c755d2f2fbf7b91b77d9ee](https://uniscan.xyz/tx/0x51161eb65e19fabceb5de42cf48b3d4d283fa9d455c755d2f2fbf7b91b77d9ee) + + + +Commit Hash: [417770f](git@github.com:Uniswap/contracts/commit/417770f) + Wed, 22 Jan 2025 17:49:16 UTC @@ -384,15 +398,15 @@ Wed, 22 Jan 2025 17:49:16 UTC --- ### V4 Quoter - -Address: 0x333e3c607b141b18ff6de9f258db6e77fe7491e0 - -Deployment Transaction: 0xd017255a7c984031cc1577095b26f3eb71de25fcc8ce5fe0e330c8539dcfe073 - - -Commit Hash: [417770f](https://github.com/Uniswap/contracts/commit/417770f) - +Address: [0x333e3c607b141b18ff6de9f258db6e77fe7491e0](https://uniscan.xyz/address/0x333e3c607b141b18ff6de9f258db6e77fe7491e0) + +Deployment Transaction: [0xd017255a7c984031cc1577095b26f3eb71de25fcc8ce5fe0e330c8539dcfe073](https://uniscan.xyz/tx/0xd017255a7c984031cc1577095b26f3eb71de25fcc8ce5fe0e330c8539dcfe073) + + + +Commit Hash: [417770f](git@github.com:Uniswap/contracts/commit/417770f) + Wed, 22 Jan 2025 17:49:16 UTC @@ -400,15 +414,15 @@ Wed, 22 Jan 2025 17:49:16 UTC --- ### State View - -Address: 0x86e8631a016f9068c3f085faf484ee3f5fdee8f2 - -Deployment Transaction: 0xa661aabf0b39113be264ffa38d73be6a71c259a00c217741e26c883761d906f4 - - -Commit Hash: [417770f](https://github.com/Uniswap/contracts/commit/417770f) - +Address: [0x86e8631a016f9068c3f085faf484ee3f5fdee8f2](https://uniscan.xyz/address/0x86e8631a016f9068c3f085faf484ee3f5fdee8f2) + +Deployment Transaction: [0xa661aabf0b39113be264ffa38d73be6a71c259a00c217741e26c883761d906f4](https://uniscan.xyz/tx/0xa661aabf0b39113be264ffa38d73be6a71c259a00c217741e26c883761d906f4) + + + +Commit Hash: [417770f](git@github.com:Uniswap/contracts/commit/417770f) + Wed, 22 Jan 2025 17:49:16 UTC @@ -416,35 +430,105 @@ Wed, 22 Jan 2025 17:49:16 UTC --- ### Universal Router - -Address: 0xef740bf23acae26f6492b10de645d6b98dc8eaf3 - -Deployment Transaction: 0x8ba6faddd12cf5aaabd6a7a17bd0d1fbd6c258238536b732ad56e44f0077d81e - - -Commit Hash: [417770f](https://github.com/Uniswap/contracts/commit/417770f) - +Address: [0xef740bf23acae26f6492b10de645d6b98dc8eaf3](https://uniscan.xyz/address/0xef740bf23acae26f6492b10de645d6b98dc8eaf3) + +Deployment Transaction: [0x8ba6faddd12cf5aaabd6a7a17bd0d1fbd6c258238536b732ad56e44f0077d81e](https://uniscan.xyz/tx/0x8ba6faddd12cf5aaabd6a7a17bd0d1fbd6c258238536b732ad56e44f0077d81e) + + + +Commit Hash: [417770f](git@github.com:Uniswap/contracts/commit/417770f) + Wed, 22 Jan 2025 17:49:16 UTC +--- + +### U E R C20 Superchain Factory + +Address: [0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9](https://uniscan.xyz/address/0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9) + +Deployment Transaction: [0xede965fabff85e414948c3488a70ee366516e0c17cd5a849e5031a0eb348fdd6](https://uniscan.xyz/tx/0xede965fabff85e414948c3488a70ee366516e0c17cd5a849e5031a0eb348fdd6) + + + +Commit Hash: [dd0a295](git@github.com:Uniswap/contracts/commit/dd0a295) + +Wed, 18 Jun 2025 18:25:10 UTC + + + +--- + +### U S U P E R C20 Factory + +Address: [0x24016ed99a69e9b86d16d84351e1661266b7ac6a](https://uniscan.xyz/address/0x24016ed99a69e9b86d16d84351e1661266b7ac6a) + +Deployment Transaction: [0x7887c279399099a21b1318b104d3213a167db63dd0f8bcddeb2b753c79002fcc](https://uniscan.xyz/tx/0x7887c279399099a21b1318b104d3213a167db63dd0f8bcddeb2b753c79002fcc) + + + +Commit Hash: [dd0a295](git@github.com:Uniswap/contracts/commit/dd0a295) + +Tue, 15 Jul 2025 17:11:10 UTC + + + ## Deployment History - -### Wed Jan 22 2025 + +### Tue Jul 15 2025 + + +Deployed contracts: + +
+ + U S U P E R C20 Factory + + + + + +
Commit hash: dd0a295
+
+ + +### Wed Jun 18 2025 + + Deployed contracts: + +
+ + U E R C20 Superchain Factory + + + + + +
Commit hash: dd0a295
+
+ + +### Wed Jan 22 2025 + + + +Deployed contracts: +
- Position Descriptor (Implementation) + Position Descriptor (Implementation) - + @@ -452,25 +536,25 @@ Deployed contracts: - + - + - +
Commit hash: 417770fCommit hash: 417770f
Parameter
_poolManager0x1F984000000000000000000000000000000000040x1F98400000000000000000000000000000000004
_wrappedNative0x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
_nativeCurrencyLabelBytes0x45544800000000000000000000000000000000000000000000000000000000000x4554480000000000000000000000000000000000000000000000000000000000
- Position Manager + Position Manager - + @@ -478,11 +562,11 @@ Deployed contracts: - + - + @@ -490,21 +574,21 @@ Deployed contracts: - + - +
Commit hash: 417770fCommit hash: 417770f
Parameter
_poolManager0x1F984000000000000000000000000000000000040x1F98400000000000000000000000000000000004
_permit20x000000000022D473030F116dDEE9F6B43aC78BA30x000000000022D473030F116dDEE9F6B43aC78BA3
_unsubscribeGasLimit
_tokenDescriptor0x9fb28449a191CD8C03a1B7abfb0F5996ECf7f7220x9fb28449a191CD8C03a1B7abfb0F5996ECf7f722
_weth90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- V4 Quoter + V4 Quoter - + @@ -512,17 +596,17 @@ Deployed contracts: - +
Commit hash: 417770fCommit hash: 417770f
Parameter
_poolManager0x1F984000000000000000000000000000000000040x1F98400000000000000000000000000000000004
- State View + State View - + @@ -530,17 +614,17 @@ Deployed contracts: - +
Commit hash: 417770fCommit hash: 417770f
Parameter
_poolManager0x1F984000000000000000000000000000000000040x1F98400000000000000000000000000000000004
- Universal Router + Universal Router - + @@ -551,23 +635,23 @@ Deployed contracts:
Commit hash: 417770fCommit hash: 417770f
Parameter{"permit2":"0x000000000022D473030F116dDEE9F6B43aC78BA3","weth9":"0x4200000000000000000000000000000000000006","v2Factory":"0x1F98400000000000000000000000000000000002","v3Factory":"0x1F98400000000000000000000000000000000003","pairInitCodeHash":"0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f","poolInitCodeHash":"0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54","v4PoolManager":"0x1F98400000000000000000000000000000000004","v3NFTPositionManager":"0x943e6e07a7E8E791dAFC44083e54041D743C46E9","v4PositionManager":"0x4529A01c7A0410167c5740C487A8DE60232617b"}
-
+ ### Fri Nov 08 2024 + - - + Deployed contracts: - +
- Uniswap V2 Router02 + Uniswap V2 Router02 - + @@ -575,31 +659,31 @@ Deployed contracts: - + - +
Commit hash: 941946aCommit hash: 941946a
Parameter
_factory0x1F984000000000000000000000000000000000020x1F98400000000000000000000000000000000002
_WETH0x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- Uniswap Interface Multicall + Uniswap Interface Multicall - +
Commit hash: 941946aCommit hash: 941946a
- Quoter V2 + Quoter V2 - + @@ -607,41 +691,41 @@ Deployed contracts: - + - +
Commit hash: 941946aCommit hash: 941946a
Parameter
_factory0x1f984000000000000000000000000000000000030x1f98400000000000000000000000000000000003
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- Tick Lens + Tick Lens - +
Commit hash: 941946aCommit hash: 941946a
- N F T Descriptor + N F T Descriptor - +
Commit hash: 941946aCommit hash: 941946a
- Nonfungible Token Position Descriptor (Implementation) + Nonfungible Token Position Descriptor (Implementation) - + @@ -649,7 +733,7 @@ Deployed contracts: - + @@ -659,11 +743,11 @@ Deployed contracts:
- Nonfungible Position Manager + Nonfungible Position Manager
Commit hash: 941946aCommit hash: 941946a
Parameter
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
_nativeCurrencyLabelBytes
- + @@ -671,25 +755,25 @@ Deployed contracts: - + - + - +
Commit hash: 941946aCommit hash: 941946a
Parameter
_factory0x1F984000000000000000000000000000000000030x1F98400000000000000000000000000000000003
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
_tokenDescriptor_0x0Dfa04B28ab68fFD0e6e17FaC6ec16D4846a20040x0Dfa04B28ab68fFD0e6e17FaC6ec16D4846a2004
- V3 Migrator + V3 Migrator - + @@ -697,25 +781,25 @@ Deployed contracts: - + - + - +
Commit hash: 941946aCommit hash: 941946a
Parameter
_factory0x1F984000000000000000000000000000000000030x1F98400000000000000000000000000000000003
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
_nonfungiblePositionManager0x943e6e07a7E8E791dAFC44083e54041D743C46E90x943e6e07a7E8E791dAFC44083e54041D743C46E9
- Quoter + Quoter - + @@ -723,17 +807,17 @@ Deployed contracts: - +
Commit hash: 941946aCommit hash: 941946a
Parameter
_factory0x1f984000000000000000000000000000000000030x1f98400000000000000000000000000000000003
- Swap Router02 + Swap Router02 - + @@ -741,29 +825,29 @@ Deployed contracts: - + - + - + - +
Commit hash: 941946aCommit hash: 941946a
Parameter
_factoryV20x1F984000000000000000000000000000000000020x1F98400000000000000000000000000000000002
factoryV30x1F984000000000000000000000000000000000030x1F98400000000000000000000000000000000003
_positionManager0x943e6e07a7E8E791dAFC44083e54041D743C46E90x943e6e07a7E8E791dAFC44083e54041D743C46E9
_WETH90x42000000000000000000000000000000000000060x4200000000000000000000000000000000000006
- Fee On Transfer Detector + Fee On Transfer Detector - + @@ -771,8 +855,8 @@ Deployed contracts: - +
Commit hash: 941946aCommit hash: 941946a
Parameter
_factoryV20x1F984000000000000000000000000000000000020x1F98400000000000000000000000000000000002
-
+ \ No newline at end of file diff --git a/deployments/1301.md b/deployments/1301.md index 384015fc..8ce6c2de 100644 --- a/deployments/1301.md +++ b/deployments/1301.md @@ -24,7 +24,9 @@ - [Fee On Transfer Detector](#fee-on-transfer-detector) - [Universal Router](#universal-router) - [U E R C20 Superchain Factory](#u-e-r-c20-superchain-factory) + - [U S U P E R C20 Factory](#u-s-u-p-e-r-c20-factory) - [Deployment History](#deployment-history) + - [Tue Jul 15 2025](#tue-jul-15-2025) - [Tue Jun 03 2025](#tue-jun-03-2025) - [Tue May 20 2025](#tue-may-20-2025) - [Wed Jan 22 2025](#wed-jan-22-2025) @@ -134,6 +136,11 @@ UERC20SuperchainFactory 0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9 N/A + + + USUPERC20Factory + 0x24016ed99a69e9b86d16d84351e1661266b7ac6a + N/A ## Contracts @@ -485,9 +492,64 @@ Tue, 03 Jun 2025 21:06:24 UTC +--- + +### U S U P E R C20 Factory + +Address: [0x24016ed99a69e9b86d16d84351e1661266b7ac6a](https://sepolia.uniscan.xyz/address/0x24016ed99a69e9b86d16d84351e1661266b7ac6a) + +Deployment Transaction: [0xa3d4d3e83b379fc177dfd1143fabd98a8c9ae53aba914885d3b9f92633c1f672](https://sepolia.uniscan.xyz/tx/0xa3d4d3e83b379fc177dfd1143fabd98a8c9ae53aba914885d3b9f92633c1f672) + + + +Commit Hash: [dd0a295](git@github.com:Uniswap/contracts/commit/dd0a295) + +Tue, 15 Jul 2025 14:15:29 UTC + + + ## Deployment History +### Tue Jul 15 2025 + + + +Deployed contracts: + +
+ + U S U P E R C20 Factory + + + + + +
Commit hash: dd0a295
+
+
+ + U S U P E R C20 Factory + + + + + +
Commit hash: dd0a295
+
+
+ + U S U P E R C20 Factory + + + + + +
Commit hash: dd0a295
+
+ + + ### Tue Jun 03 2025 diff --git a/deployments/json/1.json b/deployments/json/1.json index 52b19cd5..0e5a8604 100644 --- a/deployments/json/1.json +++ b/deployments/json/1.json @@ -161,9 +161,30 @@ "proxy": false, "deploymentTxn": "0xc31d7e7e85cab1d38ce1b8ac17e821ccd47dbde00f9d57f2bd8613bff9428396", "timestamp": 1588610042 + }, + "UERC20Factory": { + "address": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5", + "proxy": false, + "deploymentTxn": "0x3fd5a6f58f25bd2a6bc180e43a5d613e12a284733c9bf7a80fd857f6ac342ad2", + "timestamp": 1750271409, + "commitHash": "dd0a295" } }, "history": [ + { + "contracts": { + "UERC20Factory": { + "address": "0x0cde87c11b959e5eb0924c1abf5250ee3f9bd1b5", + "proxy": false, + "deploymentTxn": "0x3fd5a6f58f25bd2a6bc180e43a5d613e12a284733c9bf7a80fd857f6ac342ad2", + "input": { + "constructor": {} + } + } + }, + "timestamp": 1750271409, + "commitHash": "dd0a295" + }, { "contracts": { "PositionDescriptor": { diff --git a/deployments/json/130.json b/deployments/json/130.json index 566f004e..60218d85 100644 --- a/deployments/json/130.json +++ b/deployments/json/130.json @@ -117,9 +117,51 @@ "deploymentTxn": "0x8ba6faddd12cf5aaabd6a7a17bd0d1fbd6c258238536b732ad56e44f0077d81e", "timestamp": 1737568156, "commitHash": "417770f" + }, + "UERC20SuperchainFactory": { + "address": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", + "proxy": false, + "deploymentTxn": "0xede965fabff85e414948c3488a70ee366516e0c17cd5a849e5031a0eb348fdd6", + "timestamp": 1750271110, + "commitHash": "dd0a295" + }, + "USUPERC20Factory": { + "address": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", + "proxy": false, + "deploymentTxn": "0x7887c279399099a21b1318b104d3213a167db63dd0f8bcddeb2b753c79002fcc", + "timestamp": 1752599470, + "commitHash": "dd0a295" } }, "history": [ + { + "contracts": { + "USUPERC20Factory": { + "address": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", + "proxy": false, + "deploymentTxn": "0x7887c279399099a21b1318b104d3213a167db63dd0f8bcddeb2b753c79002fcc", + "input": { + "constructor": {} + } + } + }, + "timestamp": 1752599470, + "commitHash": "dd0a295" + }, + { + "contracts": { + "UERC20SuperchainFactory": { + "address": "0x2b4b6ae1d9f392ecb63201ef29f591e2055123e9", + "proxy": false, + "deploymentTxn": "0xede965fabff85e414948c3488a70ee366516e0c17cd5a849e5031a0eb348fdd6", + "input": { + "constructor": {} + } + } + }, + "timestamp": 1750271110, + "commitHash": "dd0a295" + }, { "contracts": { "PositionDescriptor": { diff --git a/deployments/json/1301.json b/deployments/json/1301.json index fcd30e2e..dbf8703f 100644 --- a/deployments/json/1301.json +++ b/deployments/json/1301.json @@ -142,9 +142,58 @@ "deploymentTxn": "0xe659cb70b232a27ba9db789aaf52ba0cd17ca8e955558b17cd790edfc45de7ed", "timestamp": 1748984784, "commitHash": "8c0b627" + }, + "USUPERC20Factory": { + "address": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", + "proxy": false, + "deploymentTxn": "0xa3d4d3e83b379fc177dfd1143fabd98a8c9ae53aba914885d3b9f92633c1f672", + "timestamp": 1752588929, + "commitHash": "dd0a295" } }, "history": [ + { + "contracts": { + "USUPERC20Factory": { + "address": "0x24016ed99a69e9b86d16d84351e1661266b7ac6a", + "proxy": false, + "deploymentTxn": "0xa3d4d3e83b379fc177dfd1143fabd98a8c9ae53aba914885d3b9f92633c1f672", + "input": { + "constructor": {} + } + } + }, + "timestamp": 1752588929, + "commitHash": "dd0a295" + }, + { + "contracts": { + "USUPERC20Factory": { + "address": "0xbc111472c7ebac76ab3882e4ae61479807329691", + "proxy": false, + "deploymentTxn": "0x74ccddf049a4ab291a68dbd0fd49ee7d6764845015a14052c67ce761e3ecd0bf", + "input": { + "constructor": {} + } + } + }, + "timestamp": 1752588721, + "commitHash": "dd0a295" + }, + { + "contracts": { + "USUPERC20Factory": { + "address": "0x18ca00e621d1c7550fd89568180dfac93a06785e", + "proxy": false, + "deploymentTxn": "0xf4eaa495e2592267cf1ecac0574e46ff150f7d808db07fd22a10eb45f43868b8", + "input": { + "constructor": {} + } + } + }, + "timestamp": 1752587621, + "commitHash": "dd0a295" + }, { "contracts": { "UERC20SuperchainFactory": { diff --git a/script/deploy/Deploy-all.s.sol b/script/deploy/Deploy-all.s.sol index 5008e42a..add3f4b2 100644 --- a/script/deploy/Deploy-all.s.sol +++ b/script/deploy/Deploy-all.s.sol @@ -44,8 +44,7 @@ import {Script, console2 as console, stdJson} from 'forge-std/Script.sol'; import {VmSafe} from 'forge-std/Vm.sol'; import {UERC20FactoryDeployer} from '../../src/briefcase/deployers/uerc20-factory/UERC20FactoryDeployer.sol'; -import {UERC20SuperchainFactoryDeployer} from - '../../src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol'; +import {USUPERC20FactoryDeployer} from '../../src/briefcase/deployers/uerc20-factory/USUPERC20FactoryDeployer.sol'; contract Deploy is Script { using stdJson for string; @@ -443,8 +442,8 @@ contract Deploy is Script { bool deployUERC20FactoryMainnet = config.readBoolOr('.protocols.uerc20-factory.contracts.UERC20Factory.deploy', false); - bool deployUERC20SuperchainFactory = - config.readBoolOr('.protocols.uerc20-factory.contracts.UERC20SuperchainFactory.deploy', false); + bool deployUSUPERC20Factory = + config.readBoolOr('.protocols.uerc20-factory.contracts.USUPERC20Factory.deploy', false); bytes32 salt; @@ -454,10 +453,10 @@ contract Deploy is Script { UERC20FactoryDeployer.deploy(salt); } - if (deployUERC20SuperchainFactory) { - salt = config.readBytes32('.protocols.uerc20-factory.contracts.UERC20SuperchainFactory.params.salt.value'); - console.log('deploying UERC20 Superchain Factory'); - UERC20SuperchainFactoryDeployer.deploy(salt); + if (deployUSUPERC20Factory) { + salt = config.readBytes32('.protocols.uerc20-factory.contracts.USUPERC20Factory.params.salt.value'); + console.log('deploying USUPERC20 Factory'); + USUPERC20FactoryDeployer.deploy(salt); } } diff --git a/script/deploy/tasks/1/task-1750271339.json b/script/deploy/tasks/1/task-1750271339.json new file mode 100644 index 00000000..eb434d62 --- /dev/null +++ b/script/deploy/tasks/1/task-1750271339.json @@ -0,0 +1,481 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": true, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "UERC20SuperchainFactory": { + "deploy": false, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file diff --git a/script/deploy/tasks/130/task-1750271080.json b/script/deploy/tasks/130/task-1750271080.json new file mode 100644 index 00000000..b65744c8 --- /dev/null +++ b/script/deploy/tasks/130/task-1750271080.json @@ -0,0 +1,481 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": false, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "UERC20SuperchainFactory": { + "deploy": true, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file diff --git a/script/deploy/tasks/130/task-1752599436.json b/script/deploy/tasks/130/task-1752599436.json new file mode 100644 index 00000000..a33d4a15 --- /dev/null +++ b/script/deploy/tasks/130/task-1752599436.json @@ -0,0 +1,481 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": false, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "USUPERC20Factory": { + "deploy": true, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file diff --git a/script/deploy/tasks/1301/task-1752587562.json b/script/deploy/tasks/1301/task-1752587562.json new file mode 100644 index 00000000..90178283 --- /dev/null +++ b/script/deploy/tasks/1301/task-1752587562.json @@ -0,0 +1,481 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": false, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "USUPERC20Factory": { + "deploy": true, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000001" + } + } + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file diff --git a/script/deploy/tasks/1301/task-1752588680.json b/script/deploy/tasks/1301/task-1752588680.json new file mode 100644 index 00000000..c3677a8a --- /dev/null +++ b/script/deploy/tasks/1301/task-1752588680.json @@ -0,0 +1,481 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": false, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "USUPERC20Factory": { + "deploy": true, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000002" + } + } + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file diff --git a/script/deploy/tasks/1301/task-1752588888.json b/script/deploy/tasks/1301/task-1752588888.json new file mode 100644 index 00000000..a33d4a15 --- /dev/null +++ b/script/deploy/tasks/1301/task-1752588888.json @@ -0,0 +1,481 @@ +{ + "protocols": { + "permit2": { + "name": "Permit 2", + "deploy": false, + "contracts": { + "Permit2": { + "deploy": false, + "address": null, + "lookup": { + "latest": "Permit2", + "history": [ + "UniversalRouter.input.constructor.params.permit2" + ] + }, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000d3af2663da51c10215000000" + } + } + } + } + }, + "v2": { + "name": "Uniswap v2", + "deploy": false, + "contracts": { + "UniswapV2Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV2Factory", + "history": [ + "UniversalRouter.input.constructor.params.v2Factory" + ] + }, + "params": { + "feeToSetter": { + "type": "address" + } + } + }, + "UniswapV2Router02": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v3": { + "name": "Uniswap v3", + "deploy": false, + "contracts": { + "UniswapV3Factory": { + "deploy": false, + "address": null, + "lookup": { + "latest": "UniswapV3Factory", + "history": [ + "UniversalRouter.input.constructor.params.v3Factory" + ] + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "UniswapInterfaceMulticall": { + "deploy": false + }, + "QuoterV2": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + }, + "TickLens": { + "deploy": false + }, + "NonfungibleTokenPositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungibleTokenPositionDescriptor" + }, + "params": { + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "NonfungiblePositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "NonfungiblePositionManager" + }, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "tokenDescriptor": { + "name": "NFT Position Descriptor address", + "pointer": "protocols.v3.contracts.NonfungibleTokenPositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V3Migrator": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "nonfungiblePositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + }, + "SwapRouter": { + "deploy": false, + "address": null, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "v4": { + "name": "Uniswap v4", + "deploy": false, + "contracts": { + "PoolManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PoolManager" + }, + "params": { + "initialOwner": { + "type": "address" + } + } + }, + "PositionDescriptor": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionDescriptor" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "nativeCurrencyLabel": { + "name": "Native token symbol", + "type": "string", + "value": "ETH" + }, + "proxyAdminOwner": { + "type": "address" + } + }, + "dependencies": [ + "weth" + ] + }, + "PositionManager": { + "deploy": false, + "address": null, + "lookup": { + "latest": "PositionManager" + }, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "unsubscribeGasLimit": { + "name": "Unsubscribe gas limit", + "type": "uint256" + }, + "positionDescriptor": { + "name": "Position Descriptor address", + "pointer": "protocols.v4.contracts.PositionDescriptor" + } + }, + "dependencies": [ + "weth" + ] + }, + "V4Quoter": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + }, + "StateView": { + "deploy": false, + "address": null, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + } + } + } + } + }, + "hooks": { + "name": "v4 Hooks", + "deploy": false, + "contracts": { + "WETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "salt": { + "type": "bytes32" + } + }, + "dependencies": [ + "weth" + ] + }, + "WstETHHook": { + "deploy": false, + "params": { + "poolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "wstETH": { + "name": "WstETH address", + "type": "address" + }, + "salt": { + "type": "bytes32" + } + } + } + } + }, + "view-quoter-v3": { + "name": "View Quoter v3", + "deploy": false, + "contracts": { + "Quoter": { + "deploy": false, + "params": { + "factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + } + } + } + } + }, + "swap-router-contracts": { + "name": "Swap Router Contracts", + "deploy": false, + "contracts": { + "SwapRouter02": { + "deploy": false, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "factoryV3": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "positionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + } + }, + "dependencies": [ + "weth" + ] + } + } + }, + "universal-router": { + "name": "Universal Router", + "deploy": false, + "contracts": { + "UniversalRouter": { + "deploy": false, + "params": { + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "v2Factory": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + }, + "v3Factory": { + "name": "Uniswap v3 factory address", + "pointer": "protocols.v3.contracts.UniswapV3Factory" + }, + "v2PairInitCodeHash": { + "name": "Uniswap v2 pair init code hash", + "type": "bytes32", + "value": "0x96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.pairInitCodeHash" + ] + } + }, + "v3PoolInitCodeHash": { + "name": "Uniswap v3 pool init code hash", + "type": "bytes32", + "value": "0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.poolInitCodeHash" + ] + } + }, + "v4PoolManager": { + "name": "Pool Manager", + "pointer": "protocols.v4.contracts.PoolManager" + }, + "v3NFTPositionManager": { + "name": "Uniswap v3 position manager address", + "pointer": "protocols.v3.contracts.NonfungiblePositionManager" + }, + "v4PositionManager": { + "name": "Uniswap v4 position manager address", + "pointer": "protocols.v4.contracts.PositionManager" + } + }, + "dependencies": [ + "weth" + ], + "lookup": { + "latest": "UniversalRouter" + } + } + } + }, + "util-contracts": { + "name": "Utils", + "deploy": false, + "contracts": { + "FeeOnTransferDetector": { + "deploy": false, + "address": null, + "params": { + "factoryV2": { + "name": "Uniswap v2 factory address", + "pointer": "protocols.v2.contracts.UniswapV2Factory" + } + } + }, + "FeeCollector": { + "deploy": false, + "address": null, + "params": { + "owner": { + "type": "address" + }, + "universalRouter": { + "name": "Universal Router address", + "pointer": "protocols.universal-router.contracts.UniversalRouter" + }, + "permit2": { + "name": "Permit 2 address", + "pointer": "protocols.permit2.contracts.Permit2" + }, + "feeToken": { + "name": "Fee token address (usually USDC)", + "type": "address" + } + } + } + } + }, + "uerc20-factory": { + "name": "UERC20 Factory", + "deploy": true, + "contracts": { + "UERC20Factory": { + "deploy": false, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + }, + "USUPERC20Factory": { + "deploy": true, + "address": null, + "params": { + "salt": { + "type": "bytes32", + "value": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + } + } + } + }, + "dependencies": { + "weth": { + "type": "address", + "lookup": { + "history": [ + "UniversalRouter.input.constructor.params.weth9", + "QuoterV2.input.constructor._WETH9", + "V3Migrator.input.constructor._WETH9", + "NonfungiblePositionManager.input.constructor._WETH9", + "NonFungibleTokenPositionDescriptor.input.constructor._WETH9", + "SwapRouter.input.constructor._WETH9", + "SwapRouter02.input.constructor._WETH9", + "Quoter.input.constructor._WETH9", + "QuoterV2.input.constructor._WETH9", + "UniswapV2Router02.input.constructor._WETH" + ] + } + } + } + }, + "rename": true +} \ No newline at end of file diff --git a/script/deploy/tasks/task_template.json b/script/deploy/tasks/task_template.json index e9877484..884d3ea4 100644 --- a/script/deploy/tasks/task_template.json +++ b/script/deploy/tasks/task_template.json @@ -413,7 +413,7 @@ } } }, - "UERC20SuperchainFactory": { + "USUPERC20Factory": { "deploy": false, "address": null, "params": { diff --git a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol b/src/briefcase/deployers/uerc20-factory/USUPERC20FactoryDeployer.sol similarity index 98% rename from src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol rename to src/briefcase/deployers/uerc20-factory/USUPERC20FactoryDeployer.sol index 6f5b9842..55017825 100644 --- a/src/briefcase/deployers/uerc20-factory/UERC20SuperchainFactoryDeployer.sol +++ b/src/briefcase/deployers/uerc20-factory/USUPERC20FactoryDeployer.sol @@ -1,23 +1,23 @@ // SPDX-License-Identifier: MIT pragma solidity >= 0.8.0; -import {IUERC20SuperchainFactory} from '../../protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol'; +import {IUSUPERC20Factory} from '../../protocols/uerc20-factory/interfaces/IUSUPERC20Factory.sol'; import {DeployerHelper} from '../DeployerHelper.sol'; -library UERC20SuperchainFactoryDeployer { - function deploy(bytes32 salt) internal returns (IUERC20SuperchainFactory uerc20SuperchainFactory) { +library USUPERC20FactoryDeployer { + function deploy(bytes32 salt) internal returns (IUSUPERC20Factory usuperc20Factory) { bytes memory initcode_ = abi.encodePacked(initcode()); - uerc20SuperchainFactory = IUERC20SuperchainFactory(DeployerHelper.create2(initcode_, salt)); + usuperc20Factory = IUSUPERC20Factory(DeployerHelper.create2(initcode_, salt)); } /** * @dev autogenerated - run `./script/util/create_briefcase.sh` to generate current initcode * * @notice This initcode is generated from the following contract: - * - Source Contract: src/pkgs/uerc20-factory/src/factories/UERC20SuperchainFactory.sol + * - Source Contract: src/pkgs/uerc20-factory/src/factories/USUPERC20Factory.sol */ function initcode() internal pure returns (bytes memory) { return - hex'6080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c806340c84ea014610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a'; + hex'6080604052348015600e575f5ffd5b5061370f8061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80635dfbfbc214610043578063a255e0ad14610080578063a5ea11da14610093575b5f5ffd5b610056610051366004610b81565b6100a8565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005661008e366004610c60565b61015e565b61009b6105b5565b6040516100779190610dc3565b5f5f8787878787876040516020016100c596959493929190610ed1565b6040516020818303038152906040528051906020012090505f604051806020016100ee90610957565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f90910116604081905261012e9190602001610f34565b604051602081830303815290604052805190602001209050610151828230610918565b9998505050505050505050565b5f80808061016e86880188610f4a565b925092509250824603610272573373ffffffffffffffffffffffffffffffffffffffff8316146101ec576040517fffb87b7200000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8316602482015260440160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8816610239576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b885f03610272576040517ff9d5796a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8c8c8c86868a60405160200161028e96959493929190610ed1565b6040516020818303038152906040528051906020012090508346146102dc5760408051602080820183525f808352918552825180820184528281528582015282519081018352908152908301525b6040518061012001604052808b81526020018581526020018781526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1681526020018c60ff1681526020018e81526020018d8152602001838152505f5f820151815f015560208201518160010155604082015181600201556060820151816003015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a08201518160040160146101000a81548160ff021916908360ff16021790555060c082015181600501908161042a91906110c6565b5060e0820151600682019061043f90826110c6565b5061010082015180516007830190819061045990826110c6565b506020820151600182019061046e90826110c6565b506040820151600282019061048390826110c6565b5050509050508060405161049690610957565b8190604051809103905ff59050801580156104b3573d5f5f3e3d5ffd5b505f80805560018190556002819055600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055600480547fffffffffffffffffffffff00000000000000000000000000000000000000000016905590955080610521600582610964565b61052e600683015f610964565b600782015f61053d8282610964565b61054a600183015f610964565b610557600283015f610964565b505060405173ffffffffffffffffffffffffffffffffffffffff881681527f2e2b3f61b70d2d131b2a807371103cc98d51adcaa5e9a8f9c32658ad8426e74e9250602001905060405180910390a15050505098975050505050505050565b6105bd61099e565b60408051610120810182525f8054825260015460208301526002549282019290925260035473ffffffffffffffffffffffffffffffffffffffff9081166060830152600454908116608083015274010000000000000000000000000000000000000000900460ff1660a08201526005805491929160c08401919061064090611029565b80601f016020809104026020016040519081016040528092919081815260200182805461066c90611029565b80156106b75780601f1061068e576101008083540402835291602001916106b7565b820191905f5260205f20905b81548152906001019060200180831161069a57829003601f168201915b505050505081526020016006820180546106d090611029565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611029565b80156107475780601f1061071e57610100808354040283529160200191610747565b820191905f5260205f20905b81548152906001019060200180831161072a57829003601f168201915b50505050508152602001600782016040518060600160405290815f8201805461076f90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461079b90611029565b80156107e65780601f106107bd576101008083540402835291602001916107e6565b820191905f5260205f20905b8154815290600101906020018083116107c957829003601f168201915b505050505081526020016001820180546107ff90611029565b80601f016020809104026020016040519081016040528092919081815260200182805461082b90611029565b80156108765780601f1061084d57610100808354040283529160200191610876565b820191905f5260205f20905b81548152906001019060200180831161085957829003601f168201915b5050505050815260200160028201805461088f90611029565b80601f01602080910402602001604051908101604052809291908181526020018280546108bb90611029565b80156109065780601f106108dd57610100808354040283529160200191610906565b820191905f5260205f20905b8154815290600101906020018083116108e957829003601f168201915b50505050508152505081525050905090565b5f604051836040820152846020820152828152600b8101905060ff81536055902073ffffffffffffffffffffffffffffffffffffffff16949350505050565b612525806111de83390190565b50805461097090611029565b5f825580601f1061097f575050565b601f0160209004905f5260205f209081019061099b9190610a34565b50565b6040518061012001604052805f81526020015f81526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f60ff1681526020016060815260200160608152602001610a2f60405180606001604052806060815260200160608152602001606081525090565b905290565b5b80821115610a48575f8155600101610a35565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516060810167ffffffffffffffff81118282101715610a9c57610a9c610a4c565b60405290565b5f82601f830112610ab1575f5ffd5b813567ffffffffffffffff811115610acb57610acb610a4c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810167ffffffffffffffff81118282101715610b1857610b18610a4c565b604052818152838201602001851015610b2f575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610b5b575f5ffd5b919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461099b575f5ffd5b5f5f5f5f5f5f60c08789031215610b96575f5ffd5b863567ffffffffffffffff811115610bac575f5ffd5b610bb889828a01610aa2565b965050602087013567ffffffffffffffff811115610bd4575f5ffd5b610be089828a01610aa2565b955050610bef60408801610b4b565b9350606087013592506080870135610c0681610b60565b9598949750929591949360a090920135925050565b5f5f83601f840112610c2b575f5ffd5b50813567ffffffffffffffff811115610c42575f5ffd5b602083019150836020828501011115610c59575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60e0898b031215610c77575f5ffd5b883567ffffffffffffffff811115610c8d575f5ffd5b610c998b828c01610aa2565b985050602089013567ffffffffffffffff811115610cb5575f5ffd5b610cc18b828c01610aa2565b975050610cd060408a01610b4b565b9550606089013594506080890135610ce781610b60565b935060a089013567ffffffffffffffff811115610d02575f5ffd5b610d0e8b828c01610c1b565b999c989b50969995989497949560c00135949350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f815160608452610d876060850182610d27565b905060208301518482036020860152610da08282610d27565b91505060408301518482036040860152610dba8282610d27565b95945050505050565b602081528151602082015260208201516040820152604082015160608201525f6060830151610e0a608084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608083015173ffffffffffffffffffffffffffffffffffffffff811660a08401525060a083015160ff811660c08401525060c083015161012060e0840152610e57610140840182610d27565b905060e08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610100850152610e938282610d27565b9150506101008401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084830301610120850152610dba8282610d73565b60c081525f610ee360c0830189610d27565b8281036020840152610ef58189610d27565b91505060ff8616604083015284606083015273ffffffffffffffffffffffffffffffffffffffff841660808301528260a0830152979650505050505050565b5f82518060208501845e5f920191825250919050565b5f5f5f60608486031215610f5c575f5ffd5b833592506020840135610f6e81610b60565b9150604084013567ffffffffffffffff811115610f89575f5ffd5b840160608187031215610f9a575f5ffd5b610fa2610a79565b813567ffffffffffffffff811115610fb8575f5ffd5b610fc488828501610aa2565b825250602082013567ffffffffffffffff811115610fe0575f5ffd5b610fec88828501610aa2565b602083015250604082013567ffffffffffffffff81111561100b575f5ffd5b61101788828501610aa2565b60408301525080925050509250925092565b600181811c9082168061103d57607f821691505b602082108103611074577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f8211156110c157805f5260205f20601f840160051c8101602085101561109f5750805b601f840160051c820191505b818110156110be575f81556001016110ab565b50505b505050565b815167ffffffffffffffff8111156110e0576110e0610a4c565b6110f4816110ee8454611029565b8461107a565b6020601f821160018114611145575f831561110f5750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b1784556110be565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156111925787850151825560209485019460019092019101611172565b50848210156111ce57868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fe610120604052348015610010575f5ffd5b505f336001600160a01b031663a5ea11da6040518163ffffffff1660e01b81526004015f60405180830381865afa15801561004d573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526100749190810190610374565b90508060c001515f90816100889190610509565b505f60405161009791906105c3565b60405190819003902060805260e08101516001906100b59082610509565b5060a08082015160ff1660e052602082015161010090815260808301516001600160a01b031660c0526040830151909152810151805160029081906100fa9082610509565b506020820151600182019061010f9082610509565b50604082015160028201906101249082610509565b5050506020810151460361014357606081015181516101439190610149565b50610634565b6805345cdf77eb68f44c548181018181101561016c5763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b60405161012081016001600160401b0381118282101715610201576102016101ca565b60405290565b80516001600160a01b038116811461021d575f5ffd5b919050565b805160ff8116811461021d575f5ffd5b5f82601f830112610241575f5ffd5b81516001600160401b0381111561025a5761025a6101ca565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610288576102886101ca565b60405281815283820160200185101561029f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f606082840312156102cb575f5ffd5b604051606081016001600160401b03811182821017156102ed576102ed6101ca565b604052825190915081906001600160401b0381111561030a575f5ffd5b61031685828601610232565b82525060208301516001600160401b03811115610331575f5ffd5b61033d85828601610232565b60208301525060408301516001600160401b0381111561035b575f5ffd5b61036785828601610232565b6040830152505092915050565b5f60208284031215610384575f5ffd5b81516001600160401b03811115610399575f5ffd5b820161012081850312156103ab575f5ffd5b6103b36101de565b8151815260208083015190820152604080830151908201526103d760608301610207565b60608201526103e860808301610207565b60808201526103f960a08301610222565b60a082015260c08201516001600160401b03811115610416575f5ffd5b61042286828501610232565b60c08301525060e08201516001600160401b03811115610440575f5ffd5b61044c86828501610232565b60e0830152506101008201516001600160401b0381111561046b575f5ffd5b610477868285016102bb565b61010083015250949350505050565b600181811c9082168061049a57607f821691505b6020821081036104b857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156101c557805f5260205f20601f840160051c810160208510156104e35750805b601f840160051c820191505b81811015610502575f81556001016104ef565b5050505050565b81516001600160401b03811115610522576105226101ca565b610536816105308454610486565b846104be565b6020601f821160018114610568575f83156105515750848201515b5f19600385901b1c1916600184901b178455610502565b5f84815260208120601f198516915b828110156105975787850151825560209485019460019092019101610577565b50848210156105b457868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f5f83546105d081610486565b6001821680156105e757600181146105fc57610629565b60ff1983168652811515820286019350610629565b865f5260205f205f5b8381101561062157815488820152600190910190602001610605565b505081860193505b509195945050505050565b60805160a05160c05160e05161010051611ead6106785f395f61034b01525f61026a01525f61019f01525f61038d01525f81816107cd0152610ca40152611ead5ff3fe608060405234801561000f575f5ffd5b506004361061016e575f3560e01c8063392f37e9116100d2578063a9059cbb11610088578063ef12696711610063578063ef12696714610346578063ef31f2cd1461036d578063f56a499f14610388575f5ffd5b8063a9059cbb1461030d578063d505accf14610320578063dd62ed3e14610333575f5ffd5b806370a08231116100b857806370a08231146102bb5780637ecebe00146102e057806395d89b4114610305575f5ffd5b8063392f37e91461029c5780633c130d90146102b3575f5ffd5b806318bf5077116101275780632b8c49e31161010d5780632b8c49e314610250578063313ce567146102635780633644e51514610294575f5ffd5b806318bf50771461022857806323b872dd1461023d575f5ffd5b806306fdde031161015757806306fdde03146101e6578063095ea7b3146101fb57806318160ddd1461020e575f5ffd5b806301ffc9a71461017257806302d05d3f1461019a575b5f5ffd5b610185610180366004611937565b6103af565b60405190151581526020015b60405180910390f35b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ee61040b565b60405161019191906119c2565b6101856102093660046119fc565b61049a565b6805345cdf77eb68f44c545b604051908152602001610191565b61023b6102363660046119fc565b610526565b005b61018561024b366004611a24565b61063d565b61023b61025e3660046119fc565b61070d565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b61021a6107ca565b6102a461086c565b60405161019193929190611a5e565b6101ee610a14565b61021a6102c9366004611aa0565b6387a211a2600c9081525f91909152602090205490565b61021a6102ee366004611aa0565b6338377508600c9081525f91909152602090205490565b6101ee610bdf565b61018561031b3660046119fc565b610bee565b61023b61032e366004611ab9565b610c65565b61021a610341366004611b26565b610e5d565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b6101c173420000000000000000000000000000000000002881565b61021a7f000000000000000000000000000000000000000000000000000000000000000081565b5f6103b982610edd565b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f3333199400000000000000000000000000000000000000000000000000000000145b92915050565b60605f805461041990611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461044590611b57565b80156104905780601f1061046757610100808354040283529160200191610490565b820191905f5260205f20905b81548152906001019060200180831161047357829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba318821915176104d857633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa350600192915050565b3373420000000000000000000000000000000000002814610594576040517f2e0d831f00000000000000000000000000000000000000000000000000000000815233600482015273420000000000000000000000000000000000002860248201526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105e1576040517fd870705200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105eb8282610fc0565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fde22baff038e3a3e08407cbdf617deed74e869a7ba517df611e33131c6e6ea04906020015b60405180910390a35050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146106925733602052637f5e9f208117600c526034600c20805480191561068f5780851115610689576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c208054808511156106b85763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060015b9392505050565b3373420000000000000000000000000000000000002814610776576040517f2e0d831f000000000000000000000000000000000000000000000000000000008152336004820152734200000000000000000000000000000000000028602482015260440161058b565b610780828261103c565b604051818152339073ffffffffffffffffffffffffffffffffffffffff8416907fb90795a66650155983e242cac3e1ac1a4dc26f8ed2987f3ce416a34e00111fd490602001610631565b5f7f000000000000000000000000000000000000000000000000000000000000000080610803576107f961040b565b8051906020012090505b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b60028054819061087b90611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546108a790611b57565b80156108f25780601f106108c9576101008083540402835291602001916108f2565b820191905f5260205f20905b8154815290600101906020018083116108d557829003601f168201915b50505050509080600101805461090790611b57565b80601f016020809104026020016040519081016040528092919081815260200182805461093390611b57565b801561097e5780601f106109555761010080835404028352916020019161097e565b820191905f5260205f20905b81548152906001019060200180831161096157829003601f168201915b50505050509080600201805461099390611b57565b80601f01602080910402602001604051908101604052809291908181526020018280546109bf90611b57565b8015610a0a5780601f106109e157610100808354040283529160200191610a0a565b820191905f5260205f20905b8154815290600101906020018083116109ed57829003601f168201915b5050505050905083565b6060610bda60026040518060600160405290815f82018054610a3590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6190611b57565b8015610aac5780601f10610a8357610100808354040283529160200191610aac565b820191905f5260205f20905b815481529060010190602001808311610a8f57829003601f168201915b50505050508152602001600182018054610ac590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610af190611b57565b8015610b3c5780601f10610b1357610100808354040283529160200191610b3c565b820191905f5260205f20905b815481529060010190602001808311610b1f57829003601f168201915b50505050508152602001600282018054610b5590611b57565b80601f0160208091040260200160405190810160405280929190818152602001828054610b8190611b57565b8015610bcc5780601f10610ba357610100808354040283529160200191610bcc565b820191905f5260205f20905b815481529060010190602001808311610baf57829003601f168201915b5050505050815250506110bd565b905090565b60606001805461041990611b57565b5f6387a211a2600c52335f526020600c20805480841115610c165763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba31885191517610ca257633f68539a5f526004601cfd5b7f000000000000000000000000000000000000000000000000000000000000000080610cda57610cd061040b565b8051906020012090505b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc642861015610d1057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610df85763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610ec257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610405565b50602052637f5e9f20600c9081525f91909152603490205490565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001480610f6f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b8061040557507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da000000000000000000000000000000000000000000000000000000001492915050565b6805345cdf77eb68f44c5481810181811015610fe35763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c208054808311156110635763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b60606110d06110cb836110f6565b611292565b6040516020016110e09190611bbf565b6040516020818303038152906040529050919050565b60605f60405160200161112c907f7b00000000000000000000000000000000000000000000000000000000000000815260010190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528351519091505f901561119b5781611174855f01516112b8565b604051602001611185929190611bf0565b6040516020818303038152906040529150600190505b602084015151156112045780156111cf57816040516020016111bd9190611c5a565b60405160208183030381529060405291505b816111dd85602001516112b8565b6040516020016111ee929190611c92565b6040516020818303038152906040529150600190505b6040840151511561126957801561123857816040516020016112269190611c5a565b60405160208183030381529060405291505b8161124685604001516112b8565b604051602001611257929190611ccd565b60405160208183030381529060405291505b8160405160200161127a9190611d08565b60405160208183030381529060405292505050919050565b606061040582604051806060016040528060408152602001611e616040913960016117bc565b805160609082905f906112cc906002611d6d565b67ffffffffffffffff8111156112e4576112e4611d84565b6040519080825280601f01601f19166020018201604052801561130e576020820181803683370190505b5090505f805b8351811015611787575f61132b8583016020015190565b90506b100000000000000400003700600160f883901c1b1615611731577f5c00000000000000000000000000000000000000000000000000000000000000848461137481611db1565b95508151811061138657611386611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507fff0000000000000000000000000000000000000000000000000000000000000081167f08000000000000000000000000000000000000000000000000000000000000000361146e577f6200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b95508151811061143b5761143b611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a90535061177e565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0900000000000000000000000000000000000000000000000000000000000000036114e3577f7400000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0a0000000000000000000000000000000000000000000000000000000000000003611558577f6e00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0c00000000000000000000000000000000000000000000000000000000000000036115cd577f6600000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f0d0000000000000000000000000000000000000000000000000000000000000003611642577f7200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f5c00000000000000000000000000000000000000000000000000000000000000036116b7577f5c00000000000000000000000000000000000000000000000000000000000000848461142981611db1565b7fff0000000000000000000000000000000000000000000000000000000000000081167f22000000000000000000000000000000000000000000000000000000000000000361172c577f2200000000000000000000000000000000000000000000000000000000000000848461142981611db1565b61177e565b80848461173d81611db1565b95508151811061174f5761174f611de8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505b50600101611314565b50808252603f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01681016040529392505050565b606083515f036117da575060408051602081019091525f8152610706565b5f8261180a576003855160046117f09190611d6d565b6117fb906002611e15565b6118059190611e28565b61182f565b60038551600261181a9190611e15565b6118249190611e28565b61182f906004611d6d565b90505f8167ffffffffffffffff81111561184b5761184b611d84565b6040519080825280601f01601f191660200182016040528015611875576020820181803683370190505b509050600185016020820187885189016020810180515f82525b828410156118ea576003840193508351603f8160121c168701518653600186019550603f81600c1c168701518653600186019550603f8160061c168701518653600186019550603f811687015186535060018501945061188f565b90525050851561192b5760038851066001811461190e576002811461192157611929565b603d6001830353603d6002830353611929565b603d60018303535b505b50909695505050505050565b5f60208284031215611947575f5ffd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610706575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f6107066020830184611976565b803573ffffffffffffffffffffffffffffffffffffffff811681146119f7575f5ffd5b919050565b5f5f60408385031215611a0d575f5ffd5b611a16836119d4565b946020939093013593505050565b5f5f5f60608486031215611a36575f5ffd5b611a3f846119d4565b9250611a4d602085016119d4565b929592945050506040919091013590565b606081525f611a706060830186611976565b8281036020840152611a828186611976565b90508281036040840152611a968185611976565b9695505050505050565b5f60208284031215611ab0575f5ffd5b610706826119d4565b5f5f5f5f5f5f5f60e0888a031215611acf575f5ffd5b611ad8886119d4565b9650611ae6602089016119d4565b95506040880135945060608801359350608088013560ff81168114611b09575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215611b37575f5ffd5b611b40836119d4565b9150611b4e602084016119d4565b90509250929050565b600181811c90821680611b6b57607f821691505b602082108103611ba2577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f81518060208401855e5f93019283525090919050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081525f610706601d830184611ba8565b5f611bfb8285611ba8565b7f226465736372697074696f6e223a2200000000000000000000000000000000008152611c2b600f820185611ba8565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b5f611c658284611ba8565b7f2c2000000000000000000000000000000000000000000000000000000000000081526002019392505050565b5f611c9d8285611ba8565b7f2277656273697465223a220000000000000000000000000000000000000000008152611c2b600b820185611ba8565b5f611cd88285611ba8565b7f22696d616765223a2200000000000000000000000000000000000000000000008152611c2b6009820185611ba8565b5f611d138284611ba8565b7f7d0000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808202811582820484141761040557610405611d40565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611de157611de1611d40565b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b8082018082111561040557610405611d40565b5f82611e5b577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b50049056fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa164736f6c634300081c000aa164736f6c634300081c000a'; } } diff --git a/src/briefcase/deployers/v2-core/UniswapV2FactoryDeployer.sol b/src/briefcase/deployers/v2-core/UniswapV2FactoryDeployer.sol index f5e0d601..337bb11e 100644 --- a/src/briefcase/deployers/v2-core/UniswapV2FactoryDeployer.sol +++ b/src/briefcase/deployers/v2-core/UniswapV2FactoryDeployer.sol @@ -25,6 +25,6 @@ library UniswapV2FactoryDeployer { */ function initcode() internal pure returns (bytes memory) { return - hex'608060405234801561001057600080fd5b506040516136863803806136868339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613623806100636000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af6146100fd578063c9c6539614610132578063e6a439051461016d578063f46901ed146101a857610088565b8063017e7e581461008d578063094b7415146100be5780631e3dd18b146100c6578063574f2ba3146100e3575b600080fd5b6100956101db565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100956101f7565b610095600480360360208110156100dc57600080fd5b5035610213565b6100eb610247565b60408051918252519081900360200190f35b6101306004803603602081101561011357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661024d565b005b6100956004803603604081101561014857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661031a565b6100956004803603604081101561018357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076d565b610130600480360360208110156101be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107a0565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061022057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106103f45783856103f7565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff821661047e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561051f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b6060604051806020016105319061086d565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f5604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152868116602483015291519297509087169163485cc9559160448082019260009290919082900301818387803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461082657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612d748061087b8339019056fe60806040526001600c5534801561001557600080fd5b506040514690806052612d228239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612c1d806101056000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820a733de2fa9f645092d7437b1a999172868c91eb4b4293d05b0c14e012c25fcd564736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a265627a7a7231582072765fb9cc28f4cf2e2c8283d974149eb2d7e6835dbdd20603900e8ea1a5003b64736f6c63430005100032'; + hex'608060405234801561001057600080fd5b506040516136863803806136868339818101604052602081101561003357600080fd5b5051600180546001600160a01b0319166001600160a01b03909216919091179055613623806100636000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063a2e74af61161005b578063a2e74af6146100fd578063c9c6539614610132578063e6a439051461016d578063f46901ed146101a857610088565b8063017e7e581461008d578063094b7415146100be5780631e3dd18b146100c6578063574f2ba3146100e3575b600080fd5b6100956101db565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100956101f7565b610095600480360360208110156100dc57600080fd5b5035610213565b6100eb610247565b60408051918252519081900360200190f35b6101306004803603602081101561011357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661024d565b005b6100956004803603604081101561014857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661031a565b6100956004803603604081101561018357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661076d565b610130600480360360208110156101be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107a0565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b6003818154811061022057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60035490565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156103b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f556e697377617056323a204944454e544943414c5f4144445245535345530000604482015290519081900360640190fd5b6000808373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16106103f45783856103f7565b84845b909250905073ffffffffffffffffffffffffffffffffffffffff821661047e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f556e697377617056323a205a45524f5f41444452455353000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82811660009081526002602090815260408083208585168452909152902054161561051f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f556e697377617056323a20504149525f45584953545300000000000000000000604482015290519081900360640190fd5b6060604051806020016105319061086d565b6020820181038252601f19601f82011660405250905060008383604051602001808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140192505050604051602081830303815290604052805190602001209050808251602084016000f5604080517f485cc95500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152868116602483015291519297509087169163485cc9559160448082019260009290919082900301818387803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff84811660008181526002602081815260408084208987168086529083528185208054978d167fffffffffffffffffffffffff000000000000000000000000000000000000000098891681179091559383528185208686528352818520805488168517905560038054600181018255958190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90950180549097168417909655925483519283529082015281517f0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9929181900390910190a35050505092915050565b600260209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff16331461082657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b612d748061087b8339019056fe60806040526001600c5534801561001557600080fd5b506040514690806052612d228239604080519182900360520182208282018252600a8352692ab734b9bbb0b8102b1960b11b6020938401528151808301835260018152603160f81b908401528151808401919091527fbfcc8ef98ffbf7b6c3fec7bf5185b566b9863e35a9d83acd49ad6824b5969738818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015260808101949094523060a0808601919091528151808603909101815260c09094019052825192019190912060035550600580546001600160a01b03191633179055612c1d806101056000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a7146105da578063d505accf146105e2578063dd62ed3e14610640578063fff6cae91461067b576101b9565b8063ba9a7a5614610597578063bc25cf771461059f578063c45a0155146105d2576101b9565b80637ecebe00116100d35780637ecebe00146104d757806389afcb441461050a57806395d89b4114610556578063a9059cbb1461055e576101b9565b80636a6278421461046957806370a082311461049c5780637464fc3d146104cf576101b9565b806323b872dd116101665780633644e515116101405780633644e51514610416578063485cc9551461041e5780635909c0d5146104595780635a3d549314610461576101b9565b806323b872dd146103ad57806330adf81f146103f0578063313ce567146103f8576101b9565b8063095ea7b311610197578063095ea7b3146103155780630dfe16811461036257806318160ddd14610393576101b9565b8063022c0d9f146101be57806306fdde03146102595780630902f1ac146102d6575b600080fd5b610257600480360360808110156101d457600080fd5b81359160208101359173ffffffffffffffffffffffffffffffffffffffff604083013516919081019060808101606082013564010000000081111561021857600080fd5b82018360208201111561022a57600080fd5b8035906020019184600183028401116401000000008311171561024c57600080fd5b509092509050610683565b005b610261610d57565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029b578181015183820152602001610283565b50505050905090810190601f1680156102c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102de610d90565b604080516dffffffffffffffffffffffffffff948516815292909316602083015263ffffffff168183015290519081900360600190f35b61034e6004803603604081101561032b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610de5565b604080519115158252519081900360200190f35b61036a610dfc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61039b610e18565b60408051918252519081900360200190f35b61034e600480360360608110156103c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610e1e565b61039b610efd565b610400610f21565b6040805160ff9092168252519081900360200190f35b61039b610f26565b6102576004803603604081101561043457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610f2c565b61039b611005565b61039b61100b565b61039b6004803603602081101561047f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611011565b61039b600480360360208110156104b257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113cb565b61039b6113dd565b61039b600480360360208110156104ed57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113e3565b61053d6004803603602081101561052057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166113f5565b6040805192835260208301919091528051918290030190f35b610261611892565b61034e6004803603604081101561057457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356118cb565b61039b6118d8565b610257600480360360208110156105b557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166118de565b61036a611ad4565b61036a611af0565b610257600480360360e08110156105f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611b0c565b61039b6004803603604081101561065657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611dd8565b610257611df5565b600c546001146106f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55841515806107075750600084115b61075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612b2f6025913960400191505060405180910390fd5b600080610767610d90565b5091509150816dffffffffffffffffffffffffffff168710801561079a5750806dffffffffffffffffffffffffffff1686105b6107ef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612b786021913960400191505060405180910390fd5b600654600754600091829173ffffffffffffffffffffffffffffffffffffffff91821691908116908916821480159061085457508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b6108bf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f556e697377617056323a20494e56414c49445f544f0000000000000000000000604482015290519081900360640190fd5b8a156108d0576108d0828a8d611fdb565b89156108e1576108e1818a8c611fdb565b86156109c3578873ffffffffffffffffffffffffffffffffffffffff166310d1e85c338d8d8c8c6040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b1580156109aa57600080fd5b505af11580156109be573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610a2f57600080fd5b505afa158015610a43573d6000803e3d6000fd5b505050506040513d6020811015610a5957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610acb57600080fd5b505afa158015610adf573d6000803e3d6000fd5b505050506040513d6020811015610af557600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168a90038311610b1f576000610b35565b89856dffffffffffffffffffffffffffff160383035b9050600089856dffffffffffffffffffffffffffff16038311610b59576000610b6f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610b805750600081115b610bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612b546024913960400191505060405180910390fd5b6000610c09610beb84600363ffffffff6121e816565b610bfd876103e863ffffffff6121e816565b9063ffffffff61226e16565b90506000610c21610beb84600363ffffffff6121e816565b9050610c59620f4240610c4d6dffffffffffffffffffffffffffff8b8116908b1663ffffffff6121e816565b9063ffffffff6121e816565b610c69838363ffffffff6121e816565b1015610cd657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f556e697377617056323a204b0000000000000000000000000000000000000000604482015290519081900360640190fd5b5050610ce4848488886122e0565b60408051838152602081018390528082018d9052606081018c9052905173ffffffffffffffffffffffffffffffffffffffff8b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600a81526020017f556e69737761702056320000000000000000000000000000000000000000000081525081565b6008546dffffffffffffffffffffffffffff808216926e0100000000000000000000000000008304909116917c0100000000000000000000000000000000000000000000000000000000900463ffffffff1690565b6000610df233848461259c565b5060015b92915050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ee85773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610eb6908363ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b610ef384848461260b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60055473ffffffffffffffffffffffffffffffffffffffff163314610fb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f556e697377617056323a20464f5242494444454e000000000000000000000000604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff9384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c5460011461108457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611094610d90565b50600654604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561110e57600080fd5b505afa158015611122573d6000803e3d6000fd5b505050506040513d602081101561113857600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b1580156111b157600080fd5b505afa1580156111c5573d6000803e3d6000fd5b505050506040513d60208110156111db57600080fd5b505190506000611201836dffffffffffffffffffffffffffff871663ffffffff61226e16565b90506000611225836dffffffffffffffffffffffffffff871663ffffffff61226e16565b9050600061123387876126ec565b600054909150806112705761125c6103e8610bfd611257878763ffffffff6121e816565b612878565b985061126b60006103e86128ca565b6112cd565b6112ca6dffffffffffffffffffffffffffff8916611294868463ffffffff6121e816565b8161129b57fe5b046dffffffffffffffffffffffffffff89166112bd868563ffffffff6121e816565b816112c457fe5b0461297a565b98505b60008911611326576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612bc16028913960400191505060405180910390fd5b6113308a8a6128ca565b61133c86868a8a6122e0565b811561137e5760085461137a906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c5460011461146957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c81905580611479610d90565b50600654600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b1580156114fb57600080fd5b505afa15801561150f573d6000803e3d6000fd5b505050506040513d602081101561152557600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b15801561159957600080fd5b505afa1580156115ad573d6000803e3d6000fd5b505050506040513d60208110156115c357600080fd5b5051306000908152600160205260408120549192506115e288886126ec565b600054909150806115f9848763ffffffff6121e816565b8161160057fe5b049a5080611614848663ffffffff6121e816565b8161161b57fe5b04995060008b11801561162e575060008a115b611683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b996028913960400191505060405180910390fd5b61168d3084612992565b611698878d8d611fdb565b6116a3868d8c611fdb565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561170f57600080fd5b505afa158015611723573d6000803e3d6000fd5b505050506040513d602081101561173957600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117ab57600080fd5b505afa1580156117bf573d6000803e3d6000fd5b505050506040513d60208110156117d557600080fd5b505193506117e585858b8b6122e0565b811561182757600854611823906dffffffffffffffffffffffffffff808216916e01000000000000000000000000000090041663ffffffff6121e816565b600b555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020017f554e492d5632000000000000000000000000000000000000000000000000000081525081565b6000610df233848461260b565b6103e881565b600c5460011461194f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611a2b9285928792611a26926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b505afa158015611a02573d6000803e3d6000fd5b505050506040513d6020811015611a1857600080fd5b50519063ffffffff61226e16565b611fdb565b600854604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611aca9284928792611a26926e01000000000000000000000000000090046dffffffffffffffffffffffffffff169173ffffffffffffffffffffffffffffffffffffffff8616916370a0823191602480820192602092909190829003018186803b1580156119ee57600080fd5b50506001600c5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611b7b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f556e697377617056323a20455850495245440000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611cdc573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611d5757508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611dc257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611dcd89898961259c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611e6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f556e697377617056323a204c4f434b4544000000000000000000000000000000604482015290519081900360640190fd5b6000600c55600654604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051611fd49273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b158015611edd57600080fd5b505afa158015611ef1573d6000803e3d6000fd5b505050506040513d6020811015611f0757600080fd5b5051600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b158015611f7a57600080fd5b505afa158015611f8e573d6000803e3d6000fd5b505050506040513d6020811015611fa457600080fd5b50516008546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166122e0565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106120e157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016120a4565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612143576040519150601f19603f3d011682016040523d82523d6000602084013e612148565b606091505b5091509150818015612176575080511580612176575080806020019051602081101561217357600080fd5b50515b6121e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b60008115806122035750508082028282828161220057fe5b04145b610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b80820382811115610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061230c57506dffffffffffffffffffffffffffff8311155b61237757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f556e697377617056323a204f564552464c4f5700000000000000000000000000604482015290519081900360640190fd5b60085463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906123c757506dffffffffffffffffffffffffffff841615155b80156123e257506dffffffffffffffffffffffffffff831615155b15612492578063ffffffff16612425856123fb86612a57565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169063ffffffff612a7b16565b600980547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612465846123fb87612a57565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600880547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054612641908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054612683908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561275757600080fd5b505afa15801561276b573d6000803e3d6000fd5b505050506040513d602081101561278157600080fd5b5051600b5473ffffffffffffffffffffffffffffffffffffffff821615801594509192509061286457801561285f5760006127d86112576dffffffffffffffffffffffffffff88811690881663ffffffff6121e816565b905060006127e583612878565b90508082111561285c576000612813612804848463ffffffff61226e16565b6000549063ffffffff6121e816565b905060006128388361282c86600563ffffffff6121e816565b9063ffffffff612abc16565b9050600081838161284557fe5b04905080156128585761285887826128ca565b5050505b50505b612870565b8015612870576000600b555b505092915050565b600060038211156128bb575080600160028204015b818110156128b5578091506002818285816128a457fe5b0401816128ad57fe5b04905061288d565b506128c5565b81156128c5575060015b919050565b6000546128dd908263ffffffff612abc16565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612915908263ffffffff612abc16565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612989578161298b565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600160205260409020546129c8908263ffffffff61226e16565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612a02908263ffffffff61226e16565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612ab457fe5b049392505050565b80820182811015610df657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a265627a7a72315820472e0047bce578e4cf65a79ada9453b51bf5c0818bde5cb7b31aa74f54ca38eb64736f6c63430005100032454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429a265627a7a72315820344f891b955b527d1d0bfb73485b4a6037a33e1cbbe3aa3c7bbba8b32b4cbae664736f6c63430005100032'; } } diff --git a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol b/src/briefcase/protocols/uerc20-factory/interfaces/IUSUPERC20Factory.sol similarity index 83% rename from src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol rename to src/briefcase/protocols/uerc20-factory/interfaces/IUSUPERC20Factory.sol index b6fc92f4..4508321a 100644 --- a/src/briefcase/protocols/uerc20-factory/interfaces/IUERC20SuperchainFactory.sol +++ b/src/briefcase/protocols/uerc20-factory/interfaces/IUSUPERC20Factory.sol @@ -4,10 +4,10 @@ pragma solidity >=0.6.2; import {UERC20Metadata} from '../libraries/UERC20MetadataLibrary.sol'; import {ITokenFactory} from './ITokenFactory.sol'; -/// @title IUERC20SuperchainFactory -/// @notice Interface for the UERC20SuperchainFactory contract -interface IUERC20SuperchainFactory is ITokenFactory { - /// @notice Parameters struct to be used by the UERC20Superchain during construction +/// @title IUSUPERC20Factory +/// @notice Interface for the USUPERC20Factory contract +interface IUSUPERC20Factory is ITokenFactory { + /// @notice Parameters struct to be used by the USUPERC20 during construction struct Parameters { uint256 totalSupply; uint256 homeChainId; @@ -31,7 +31,7 @@ interface IUERC20SuperchainFactory is ITokenFactory { /// @param creator The creator of the token /// @param graffiti Additional data needed to compute the salt /// @return The deterministic address of the token - function getUERC20SuperchainAddress( + function getUSUPERC20Address( string memory name, string memory symbol, uint8 decimals, diff --git a/src/pkgs/uerc20-factory b/src/pkgs/uerc20-factory index 76a8e77c..9705debf 160000 --- a/src/pkgs/uerc20-factory +++ b/src/pkgs/uerc20-factory @@ -1 +1 @@ -Subproject commit 76a8e77c7c1983e1a39006376c9fd6c17cc38ae2 +Subproject commit 9705debfea9e6a641bc04352398f9e549055ac44